{"version":3,"sources":["webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/assets/minimalist-blocks/content.js","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/assets/minimalist-blocks/content.scss?a752","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/assets/wcc2/content.scss?4b1f","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/box/box-ie.scss?66be","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/box/box.js","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/box/box.scss?8a4d","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/contentbox/contentbox.js","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/contentbox/contentbox.scss?0676","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/contentbuilder/contentbuilder.js","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/contentbuilder/contentbuilder.scss?d629","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/assets/minimalist-blocks/content.scss","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/assets/wcc2/content.scss","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/box/box-ie.scss","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/box/box.scss","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/contentbox/contentbox.scss","webpack:///../WCC.UI/Scripts/ContentBox-4.1.1/contentbuilder/contentbuilder.scss"],"names":[],"mappings":";;;;;AAAA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA,uBAAuB;AACvB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,oMAAoM,UAAU,6BAA6B,2BAA2B,iBAAiB,wCAAwC,QAAQ,SAAS;AAChV;AACA,SAAS;;;AAGT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD,GAAG,8CAA8C,aAAa;AACpH,6IAA6I;AAC7I;AACA,6IAA6I;AAC7I;AACA,6IAA6I;AAC7I;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,2EAA2E;AAC3E,oFAAoF;AACpF,+DAA+D;AAC/D,0CAA0C,OAAO,YAAY,EAAE;AAC/D,kCAAkC,KAAK;AACvC,+BAA+B;AAC/B,mDAAmD;AACnD,2CAA2C,GAAG,0BAA0B;AACxE,2CAA2C,GAAG,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B,+BAA+B;AACrG;AACA,kCAAkC,EAAE;AACpC,8BAA8B,EAAE;AAChC;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C;AACA;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C;AACA;AACA,8CAA8C;AAC9C;AACA,kCAAkC;;AAElC;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4EAA4E,aAAa;AACzF;AACA;AACA;AACA;AACA;AACA,mCAAmC,GAAG;AACtC;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,2EAA2E;AAC3E,oFAAoF;AACpF,+DAA+D;AAC/D,0CAA0C,OAAO,YAAY,EAAE;AAC/D,kCAAkC,KAAK;AACvC,+BAA+B;AAC/B,mDAAmD;AACnD,2DAA2D,GAAG,oBAAoB;AAClF,uCAAuC,GAAG,gBAAgB,GAAG,IAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C,qDAAqD;AACrD,8BAA8B,EAAE;AAChC,2DAA2D;AAC3D,gGAAgG;AAChG,sFAAsF;AACtF,4EAA4E;AAC5E,0FAA0F;AAC1F,kCAAkC,EAAE;AACpC,8BAA8B;AAC9B;AACA;AACA;;AAEA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,GAAG;AACxD;AACA;AACA,2DAA2D;AAC3D,wEAAwE;AACxE,8EAA8E;AAC9E,yDAAyD;AACzD,mCAAmC,KAAK,UAAU;AAClD,+BAA+B,KAAK;AACpC,+BAA+B;AAC/B,kDAAkD;AAClD,yDAAyD,GAAG,yCAAyC;AACrG,8BAA8B,EAAE;AAChC;;AAEA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,uCAAuC;AACvC;AACA;AACA,qCAAqC;AACrC,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,2BAA2B;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,oDAAoD,sCAAsC;AAC1F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sSAAsS,8DAA8D;AACzY;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,iBAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,sCAAsC,4CAA4C;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC,+MAA+M;AACpP;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,iDAAiD;AACjD;AACA,+DAA+D;AAC/D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,sBAAsB;AAC3E;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,qBAAqB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,4CAA4C;AACjG;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,qBAAqB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,oBAAoB;AAChE,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,qBAAqB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D,kEAAkE;AAClE,uEAAuE,qBAAqB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE,uDAAuD,qBAAqB;AAC5E,sCAAsC;AACtC;AACA;AACA;AACA;AACA,oDAAoD,2BAA2B,qBAAqB;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;;;;AAKH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oBAAoB;AACvD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,qBAAqB;AACrG,sDAAsD,2BAA2B,qBAAqB;AACtG;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,wDAAwD,6BAA6B,4CAA4C;AACjI;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,sBAAsB;AAC1E,uDAAuD,qBAAqB,oBAAoB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,sBAAsB;AACzG,mCAAmC;AACnC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,wDAAwD,oBAAoB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE,wDAAwD,mBAAmB,2BAA2B;AACtG,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sBAAsB,2BAA2B;AACrF,wCAAwC,oBAAoB,2BAA2B;AACvF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE,wDAAwD,2BAA2B;AACnF;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB;AACzE,6CAA6C,qBAAqB;AAClE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD,kCAAkC,2BAA2B,qBAAqB,mBAAmB;AACrG,uDAAuD,qBAAqB,mBAAmB;AAC/F;AACA,6DAA6D,qBAAqB,mBAAmB;AACrG;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,oBAAoB,mBAAmB;AACjG,oDAAoD,aAAa,uBAAuB,kBAAkB;AAC1G,8DAA8D;AAC9D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,2BAA2B,qBAAqB;AACpG,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kBAAkB,mBAAmB,iBAAiB,qBAAqB,qBAAqB,2BAA2B,mBAAmB,eAAe,mCAAmC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,mBAAmB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AACvc;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kBAAkB,mBAAmB,iBAAiB,qBAAqB,qBAAqB,2BAA2B,mBAAmB,eAAe,mCAAmC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,mBAAmB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AACvc;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;;AAGA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,YAAY;AACjJ;AACA;AACA,wIAAwI,YAAY;AACpJ;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,YAAY;AAC/I;AACA;AACA,0IAA0I,YAAY;AACtJ;AACA;AACA,mIAAmI,YAAY;AAC/I;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,YAAY;AAC/I;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,mIAAmI,YAAY;AAC/I;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gEAAgE;AAChE,qIAAqI,YAAY;AACjJ;AACA,gEAAgE;AAChE,wIAAwI,YAAY;AACpJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iDAAiD;AACjD,iEAAiE;AACjE,mIAAmI,YAAY;AAC/I;AACA,iEAAiE;AACjE,0IAA0I,YAAY;AACtJ;AACA,iEAAiE;AACjE,mIAAmI,YAAY;AAC/I;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gEAAgE;AAChE,mIAAmI,YAAY;AAC/I;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iDAAiD;AACjD,iEAAiE;AACjE,mIAAmI,YAAY;AAC/I;AACA,iEAAiE;AACjE,0IAA0I,YAAY;AACtJ;AACA,iEAAiE;AACjE,mIAAmI,YAAY;AAC/I;AACA;AACA,iDAAiD;AACjD,gEAAgE;AAChE,qIAAqI,YAAY;AACjJ;AACA,gEAAgE;AAChE,wIAAwI,YAAY;AACpJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,sDAAsD,YAAY,sBAAsB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB,0BAA0B,kBAAkB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,mBAAmB;AAC3E;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB;AACzD,qCAAqC;AACrC,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB;AACzE;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,qBAAqB;AAC5E;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,uDAAuD,qBAAqB;AAC5E;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,mCAAmC,qBAAqB;AACxD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qBAAqB;AACxD;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,gEAAgE;AAChE;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,sCAAsC;AACtC,gEAAgE;AAChE;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,YAAY;AACrE;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,sDAAsD,YAAY;AAClE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA;AACA;AACA,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA,sCAAsC,2BAA2B;AACjE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,6CAA6C;AAC7C;AACA;AACA;AACA,wDAAwD;AACxD,6CAA6C;AAC7C;AACA;AACA;AACA,wDAAwD;AACxD,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB,cAAc,iBAAiB,kBAAkB;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yDAAyD;AACjH;AACA;AACA;AACA;AACA,wDAAwD,qDAAqD;AAC7G;AACA;AACA;AACA;AACA,wDAAwD,kDAAkD;AAC1G;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA,oDAAoD,aAAa;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA,oDAAoD,aAAa;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA,oDAAoD,aAAa;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,oBAAoB;AAC9F;AACA,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,6EAA6E;AAC7E;AACA;AACA,kHAAkH;AAClH,wHAAwH;AACxH;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,oBAAoB;AAC9F;AACA,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,8EAA8E;AAC9E;AACA;AACA,mHAAmH;AACnH,yHAAyH;AACzH;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,8EAA8E;AAC9E;AACA;AACA,mHAAmH;AACnH,yHAAyH;AACzH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,aAAa,uBAAuB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,iDAAiD,YAAY,sBAAsB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qBAAqB,mBAAmB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qBAAqB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,gBAAgB;AACpG,sCAAsC;AACtC,uCAAuC,2BAA2B;AAClE;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,gBAAgB;AACpG,sCAAsC;AACtC,uCAAuC,2BAA2B;AAClE;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA,8DAA8D,YAAY,sBAAsB;AAChG;AACA,uCAAuC,iBAAiB,oBAAoB;AAC5E;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA,8DAA8D,YAAY,sBAAsB;AAChG;AACA,uCAAuC,iBAAiB,oBAAoB;AAC5E;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,qBAAqB;AACrF;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,qBAAqB;AACrF;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA;AACA,gDAAgD,2BAA2B,qBAAqB;AAChG,iEAAiE,2BAA2B,qBAAqB;AACjH;AACA,4DAA4D,YAAY,sBAAsB;AAC9F;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,2BAA2B,qBAAqB;AAChG,iEAAiE,2BAA2B,qBAAqB;AACjH;AACA,4DAA4D,YAAY,sBAAsB;AAC9F;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB;AACzE,wDAAwD;AACxD;AACA,sDAAsD,oBAAoB;AAC1E,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,wDAAwD,mBAAmB;AAC3E;AACA,sDAAsD,oBAAoB,mBAAmB;AAC7F,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB,2BAA2B,6BAA6B;AACjH,wDAAwD;AACxD;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB,2BAA2B,6BAA6B;AACjH,wDAAwD;AACxD;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE,6CAA6C,oBAAoB,oBAAoB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,oDAAoD,YAAY,sBAAsB,cAAc;AACpG;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mBAAmB,qBAAqB;AAC7F,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB,qEAAqE;AAC9I;AACA,uCAAuC;AACvC,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,iDAAiD,YAAY,sBAAsB,cAAc;AACjG;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,qCAAqC,iBAAiB;AACtD,iDAAiD,YAAY,sBAAsB,cAAc;AACjG;AACA,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB,oBAAoB;AACnG;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,kBAAkB,qBAAqB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB,mDAAmD;AAC5H;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,YAAY,sBAAsB;AACjF,sDAAsD,2BAA2B;AACjF,iDAAiD,YAAY,sBAAsB,cAAc;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,8EAA8E,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,qCAAqC,2BAA2B,iCAAiC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,6JAA6J,uHAAuH,mHAAmH,qGAAqG,6EAA6E,0DAA0D,4DAA4D,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,mCAAmC,2BAA2B,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,6JAA6J,uHAAuH,mHAAmH,qGAAqG,6EAA6E;AAC1hE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB,kBAAkB,4BAA4B;AACvG;AACA;AACA,qDAAqD,mBAAmB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA,qCAAqC;AACrC,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;;AAIH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uDAAuD;AAC5G;AACA;AACA;AACA;AACA;AACA,qDAAqD,uDAAuD;AAC5G;AACA;AACA;AACA;AACA;AACA,qDAAqD,uDAAuD;AAC5G;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,wBAAwB,uBAAuB;AACvJ;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,kFAAkF;AAClF,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,iEAAiE;AACjE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,wEAAwE;AACxE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,iEAAiE;AACjE,oDAAoD,eAAe;AACnE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,yCAAyC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,kDAAkD;AAClD,+DAA+D;AAC/D;AACA,iDAAiD;AACjD,mFAAmF,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,wBAAwB,mGAAmG,iBAAiB,kBAAkB;AACjmB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kDAAkD;AAClD,+DAA+D;AAC/D;AACA,iDAAiD;AACjD,mFAAmF,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,wBAAwB,mGAAmG,iBAAiB,kBAAkB;AACjmB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,uCAAuC;AACvC;AACA;AACA,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,uCAAuC;AACvC;AACA;AACA,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB,qBAAqB;AACpG,wCAAwC;AACxC,qCAAqC,gBAAgB;AACrD,uCAAuC;AACvC,yEAAyE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,wBAAwB,mGAAmG,iBAAiB,kBAAkB;AACvlB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB,qBAAqB;AACpG,wCAAwC;AACxC,qCAAqC,gBAAgB;AACrD,uCAAuC;AACvC,yEAAyE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,wBAAwB,mGAAmG,iBAAiB,kBAAkB;AACvlB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qDAAqD;AACrD;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB,sDAAsD;AACtD;AACA,sJAAsJ;AACtJ,oKAAoK;AACpK;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qDAAqD;AACrD;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB,sDAAsD;AACtD;AACA,sJAAsJ;AACtJ,oKAAoK;AACpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,uCAAuC;AACvC,kEAAkE,WAAW;AAC7E;AACA,wDAAwD,kCAAkC;AAC1F;AACA,kDAAkD;AAClD;AACA,wDAAwD,kCAAkC;AAC1F;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA,sDAAsD,mBAAmB;AACzE,6DAA6D;AAC7D,sJAAsJ;AACtJ,oKAAoK;AACpK;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,uCAAuC;AACvC,kEAAkE,WAAW;AAC7E;AACA,wDAAwD,kCAAkC;AAC1F;AACA,kDAAkD;AAClD;AACA,wDAAwD,kCAAkC;AAC1F;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA,sDAAsD,mBAAmB;AACzE,6DAA6D;AAC7D,sJAAsJ;AACtJ,oKAAoK;AACpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE,6DAA6D;AAC7D,uCAAuC;AACvC,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE,6DAA6D;AAC7D,uCAAuC;AACvC,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qDAAqD,YAAY;AACjE,6CAA6C,qBAAqB;AAClE,uCAAuC;AACvC,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qDAAqD,YAAY;AACjE,6CAA6C,qBAAqB;AAClE,uCAAuC;AACvC,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qBAAqB;AACjF,6DAA6D;AAC7D,uCAAuC;AACvC,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qBAAqB;AACjF,6DAA6D;AAC7D,uCAAuC;AACvC,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,8CAA8C,qBAAqB;AACnE,uCAAuC;AACvC,2DAA2D,kBAAkB;AAC7E,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,8CAA8C,qBAAqB;AACnE,uCAAuC;AACvC,2DAA2D,kBAAkB;AAC7E,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,2DAA2D,aAAa;AACxE,6DAA6D;AAC7D,uCAAuC;AACvC,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,2DAA2D,aAAa;AACxE,6DAA6D;AAC7D,uCAAuC;AACvC,gEAAgE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,iCAAiC,0FAA0F,iBAAiB,kBAAkB;AAC9kB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,uCAAuC;AACvC,6CAA6C,mCAAmC,yBAAyB;AACzG,6CAA6C,0BAA0B,6EAA6E;AACpJ,+DAA+D;AAC/D,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,uCAAuC;AACvC,6CAA6C,mCAAmC,yBAAyB;AACzG,6CAA6C,0BAA0B,2EAA2E;AAClJ,+DAA+D;AAC/D,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,uDAAuD,6CAA6C,aAAa,OAAO,qCAAqC,MAAM,cAAc,OAAO,wCAAwC;AAChO;AACA,uCAAuC;AACvC;AACA,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,uDAAuD,6CAA6C,aAAa,OAAO,qCAAqC,MAAM,cAAc,OAAO,wCAAwC;AAChO;AACA,uCAAuC;AACvC;AACA,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,kDAAkD,6BAA6B;AAC/E,uCAAuC;AACvC,yEAAyE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,wBAAwB,4DAA4D,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC33B;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,kDAAkD,6BAA6B;AAC/E,uCAAuC;AACvC,yEAAyE,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,wBAAwB,4DAA4D,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC33B;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,kDAAkD,kBAAkB;AACpJ,6CAA6C,wBAAwB;AACrE;AACA,uCAAuC;AACvC;AACA,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,kDAAkD,kBAAkB;AACpJ,6CAA6C,wBAAwB;AACrE;AACA,uCAAuC;AACvC;AACA,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,wBAAwB,+BAA+B,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC3Z;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,kBAAkB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E,kDAAkD;AAClD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,aAAa,uBAAuB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,aAAa,uBAAuB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,aAAa,uBAAuB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,aAAa,uBAAuB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,aAAa,uBAAuB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,aAAa,uBAAuB;AAClG;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,sCAAsC;AAC5F,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J,4EAA4E;AAC5E;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J,iFAAiF;AACjF;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,YAAY,mBAAmB;AACtH;AACA;AACA;AACA;AACA,uDAAuD;AACvD,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,2EAA2E,YAAY,YAAY,mBAAmB;AACtH;AACA;AACA;AACA;AACA,uDAAuD;AACvD,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,YAAY,mBAAmB;AACtH;AACA;AACA;AACA;AACA,uDAAuD;AACvD,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,2EAA2E,YAAY,YAAY,mBAAmB;AACtH;AACA;AACA;AACA;AACA,uDAAuD;AACvD,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc,kBAAkB,qBAAqB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA,6CAA6C;AAC7C;AACA;AACA,0EAA0E;AAC1E;AACA,6CAA6C;AAC7C;AACA;AACA,8EAA8E;AAC9E;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,6CAA6C;AAC7C,6CAA6C,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,qCAAqC,2BAA2B,iCAAiC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,6JAA6J,uHAAuH,mHAAmH,qGAAqG,6EAA6E;AAC19B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB,yCAAyC;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,wFAAwF;AACxF,0FAA0F;AAC1F,0FAA0F;AAC1F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kBAAkB,2BAA2B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,iDAAiD,gEAAgE;AACjH;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,iDAAiD,gEAAgE;AACjH;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,mDAAmD,gEAAgE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,iDAAiD,gEAAgE;AACjH;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,iDAAiD,gEAAgE;AACjH;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J;AACA;AACA,iDAAiD,gEAAgE;AACjH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iCAAiC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,mBAAmB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,mBAAmB;AACnE;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB,2BAA2B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iCAAiC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,eAAe,uBAAuB,qBAAqB;AAC5H;AACA;AACA;AACA,iEAAiE,eAAe,uBAAuB,qBAAqB;AAC5H;AACA;AACA;AACA,iEAAiE,eAAe,uBAAuB,qBAAqB;AAC5H;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,YAAY,aAAa,gBAAgB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,oCAAoC;AACpC;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,sDAAsD;AACtD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,sCAAsC;AACtC,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA,2DAA2D,qBAAqB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA,qCAAqC;AACrC,uCAAuC;AACvC,uCAAuC;AACvC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB,uCAAuC;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB,2EAA2E;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iDAAiD,qBAAqB,mEAAmE;AACzI,2DAA2D,aAAa,uBAAuB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kBAAkB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,iDAAiD,aAAa,uBAAuB,WAAW;AAChG,uCAAuC,2BAA2B;AAClE;AACA;AACA,sDAAsD;AACtD,iDAAiD,aAAa,uBAAuB,WAAW;AAChG,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,iDAAiD,aAAa,uBAAuB,WAAW;AAChG,uCAAuC,2BAA2B;AAClE;AACA;AACA,sDAAsD;AACtD,iDAAiD,aAAa,uBAAuB,WAAW;AAChG,uCAAuC,2BAA2B;AAClE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,4DAA4D,oBAAoB;AAChF;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB,mBAAmB;AAC/F;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB,mBAAmB;AAC/F;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB,mBAAmB;AAC/F;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,yEAAyE,gBAAgB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,qBAAqB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,qBAAqB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,qBAAqB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,6FAA6F,YAAY,aAAa,gBAAgB,0BAA0B;AAChK;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,6FAA6F,YAAY,aAAa,gBAAgB;AACtI;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,6FAA6F,YAAY,aAAa,gBAAgB;AACtI;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA,4DAA4D,aAAa,uBAAuB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA,4DAA4D,aAAa,uBAAuB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA,4DAA4D,aAAa,uBAAuB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,mBAAmB;AAC/E,qGAAqG;AACrG,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,mBAAmB;AAC/E,uGAAuG;AACvG,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,oBAAoB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,oBAAoB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,mEAAmE;AACnE,yEAAyE,qBAAqB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,mEAAmE;AACnE,yEAAyE,qBAAqB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,mEAAmE;AACnE,yEAAyE,qBAAqB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,8DAA8D,oBAAoB;AAClF,iEAAiE;AACjE,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,8DAA8D,oBAAoB;AAClF,iEAAiE;AACjE,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F,8DAA8D,oBAAoB;AAClF,iEAAiE;AACjE,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB,+CAA+C;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB,6CAA6C;AAClH,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,YAAY,aAAa,oBAAoB;AACjI;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,oFAAoF,YAAY,aAAa,oBAAoB;AACjI;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,oFAAoF,YAAY,aAAa,oBAAoB;AACjI;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J,2DAA2D,2BAA2B,kBAAkB,mBAAmB;AAC3H;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J,2DAA2D,2BAA2B,kBAAkB,mBAAmB;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J,2DAA2D,2BAA2B,kBAAkB,mBAAmB;AAC3H;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,oBAAoB,2BAA2B,uBAAuB;AAC1J,2DAA2D,2BAA2B,kBAAkB,mBAAmB;AAC3H;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA,qCAAqC;AACrC,6CAA6C;AAC7C;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA,qCAAqC;AACrC,6CAA6C;AAC7C;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA,qCAAqC;AACrC,6CAA6C;AAC7C;AACA;AACA,mFAAmF,YAAY;AAC/F;AACA;AACA;AACA;AACA,qCAAqC;AACrC,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,aAAa,aAAa,oBAAoB;AACnI;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA,qFAAqF,aAAa,aAAa,qBAAqB;AACpI;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA,qFAAqF,aAAa,aAAa,oBAAoB;AACnI;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA,qFAAqF,aAAa,aAAa,oBAAoB;AACnI;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,qFAAqF;AACrF;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,qFAAqF;AACrF;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,qFAAqF;AACrF;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,kBAAkB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,uCAAuC;AACvC,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,oFAAoF;AACpF;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,oFAAoF;AACpF;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,oFAAoF;AACpF;AACA;AACA;AACA;AACA,sCAAsC,cAAc,eAAe,oBAAoB,oBAAoB,wBAAwB,uBAAuB;AAC1J,oFAAoF;AACpF;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;AAClF,mDAAmD,oBAAoB;AACvE,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;AACA;AACA;AACA,0DAA0D,sBAAsB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB,6CAA6C;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,4DAA4D,qBAAqB,iBAAiB;AAClG;AACA,uCAAuC;AACvC;AACA;AACA,+EAA+E,eAAe;AAC9F;AACA,6CAA6C;AAC7C,4EAA4E;AAC5E;AACA,6CAA6C;AAC7C;AACA;AACA,2EAA2E;AAC3E;AACA,6CAA6C;AAC7C,4EAA4E,cAAc;AAC1F;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA,mDAAmD,oBAAoB,sBAAsB;AAC7F;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA,mDAAmD,oBAAoB,sBAAsB;AAC7F;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA,mDAAmD,oBAAoB,sBAAsB;AAC7F;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB,oCAAoC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,mBAAmB,0BAA0B,sBAAsB;AACvJ,yEAAyE,gBAAgB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,mBAAmB,0BAA0B,sBAAsB;AACvJ,yEAAyE,eAAe;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,cAAc,mBAAmB,mBAAmB,0BAA0B,sBAAsB;AACvJ,yEAAyE,gBAAgB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA;AACA,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oBAAoB,aAAa,QAAQ,gBAAgB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oBAAoB,aAAa,QAAQ,gBAAgB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oBAAoB,aAAa,QAAQ,gBAAgB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oBAAoB,aAAa,QAAQ,gBAAgB;AACxH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mBAAmB;AACxE,uDAAuD,qBAAqB;AAC5E;AACA;AACA,qDAAqD,mBAAmB;AACxE,uDAAuD,qBAAqB;AAC5E;AACA;AACA,qDAAqD,mBAAmB;AACxE,uDAAuD,qBAAqB;AAC5E;AACA;AACA,qDAAqD,mBAAmB;AACxE,uDAAuD,qBAAqB;AAC5E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,sDAAsD,2BAA2B;AACjF,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA,oDAAoD;AACpD,sDAAsD,2BAA2B;AACjF,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA,oDAAoD;AACpD,sDAAsD,2BAA2B;AACjF,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE,mDAAmD,qBAAqB;AACxE,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE;AACA;AACA;AACA;AACA,2CAA2C,kBAAkB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;AAClF,qDAAqD,qBAAqB;AAC1E,uDAAuD,qBAAqB;AAC5E;AACA,kFAAkF;AAClF,qDAAqD,qBAAqB;AAC1E,uDAAuD,qBAAqB;AAC5E;AACA;AACA,qDAAqD,qBAAqB;AAC1E,uDAAuD,qBAAqB;AAC5E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,6CAA6C,oBAAoB,qBAAqB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,eAAe;AAChG,gEAAgE,qBAAqB;AACrF,iDAAiD,aAAa,uBAAuB,eAAe;AACpG,iDAAiD;AACjD;AACA;AACA,qEAAqE,eAAe;AACpF,gEAAgE,qBAAqB;AACrF,iDAAiD,aAAa,uBAAuB,eAAe;AACpG,iDAAiD;AACjD;AACA;AACA,4EAA4E,eAAe;AAC3F,gEAAgE,qBAAqB;AACrF,iDAAiD,aAAa,uBAAuB,eAAe;AACpG,iDAAiD;AACjD;AACA;AACA,mEAAmE,eAAe;AAClF,gEAAgE,qBAAqB;AACrF,iDAAiD,aAAa,uBAAuB,eAAe;AACpG,iDAAiD;AACjD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,6DAA6D;AAC7D;AACA;AACA,2EAA2E;AAC3E,gEAAgE,qBAAqB;AACrF,iDAAiD,gBAAgB;AACjE;AACA,qEAAqE;AACrE,gEAAgE,qBAAqB;AACrF,iDAAiD;AACjD;AACA;AACA,qEAAqE;AACrE,gEAAgE,qBAAqB;AACrF,iDAAiD;AACjD;AACA,8EAA8E;AAC9E,gEAAgE,qBAAqB;AACrF,iDAAiD;AACjD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa,kBAAkB,qBAAqB,cAAc,oBAAoB,mBAAmB,sBAAsB;AAC1K;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2CAA2C,cAAc,mBAAmB,sBAAsB,eAAe,qBAAqB,oBAAoB,sBAAsB;AAChL;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2CAA2C,cAAc,mBAAmB,sBAAsB,eAAe,qBAAqB,oBAAoB,sBAAsB;AAChL;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2CAA2C,cAAc,mBAAmB,sBAAsB,eAAe,qBAAqB,oBAAoB,sBAAsB;AAChL;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa,kBAAkB,qBAAqB,cAAc,iBAAiB,mBAAmB,sBAAsB;AACvK;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2CAA2C,cAAc,mBAAmB,sBAAsB,eAAe,kBAAkB,oBAAoB,sBAAsB;AAC7K;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2CAA2C,cAAc,mBAAmB,sBAAsB,eAAe,kBAAkB,oBAAoB,sBAAsB;AAC7K;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2CAA2C,cAAc,mBAAmB,sBAAsB,eAAe,kBAAkB,oBAAoB,sBAAsB;AAC7K;AACA;AACA,+CAA+C,oBAAoB,qBAAqB;AACxF,2DAA2D,aAAa,uBAAuB,WAAW;AAC1G,uCAAuC;AACvC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,sCAAsC,qBAAqB;AAC3D,mCAAmC,2BAA2B;AAC9D;AACA;AACA,2EAA2E,8CAA8C;AACzH,sCAAsC,qBAAqB;AAC3D,mCAAmC,2BAA2B;AAC9D;AACA;AACA,0EAA0E;AAC1E,sCAAsC,qBAAqB;AAC3D,mCAAmC,2BAA2B;AAC9D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,8CAA8C;AAChH;AACA,uCAAuC;AACvC;AACA;AACA,oEAAoE;AACpE;AACA,uCAAuC;AACvC;AACA;AACA,sEAAsE;AACtE;AACA,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,qBAAqB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qBAAqB;AAC3E,iDAAiD,aAAa,uBAAuB;AACrF,6CAA6C;AAC7C;AACA;AACA;AACA,sDAAsD,qBAAqB;AAC3E,iDAAiD,aAAa,uBAAuB;AACrF,6CAA6C;AAC7C;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,qBAAqB,kBAAkB;AACtG,sDAAsD,qBAAqB,2BAA2B,kBAAkB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,YAAY,aAAa;AAClF;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,iCAAiC,WAAW,sBAAsB,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,iCAAiC,WAAW,sBAAsB,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF,6CAA6C;AAC7C;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF,6CAA6C;AAC7C;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF,6CAA6C;AAC7C;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mBAAmB;AACxE;AACA,sCAAsC;AACtC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mBAAmB;AACxE;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,aAAa;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qDAAqD,aAAa;AAClE;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,mDAAmD,aAAa,uBAAuB;AACvF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB;AACzE,6CAA6C,6BAA6B,oBAAoB;AAC9F;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB;AACzE,6CAA6C,6BAA6B,oBAAoB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,iEAAiE;AACjE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA,wDAAwD;AACxD;AACA,qDAAqD,2BAA2B,oBAAoB;AACpG;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA,wDAAwD;AACxD;AACA,oDAAoD,2BAA2B,oBAAoB;AACnG;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE,kDAAkD,aAAa,UAAU;AACzE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE,oDAAoD,aAAa,UAAU;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qBAAqB;AACjF,gDAAgD,YAAY,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mBAAmB,2DAA2D;AACpI,6DAA6D,qBAAqB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB,gBAAgB;AAC5E,6GAA6G;AAC7G;AACA,8CAA8C;AAC9C;AACA,8CAA8C;AAC9C;AACA,8CAA8C;AAC9C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA,iCAAiC,2BAA2B;AAC5D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA,iCAAiC,2BAA2B;AAC5D;AACA;AACA,sDAAsD,YAAY,aAAa;AAC/E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D,6GAA6G;AAC7G;AACA,wDAAwD;AACxD;AACA;AACA,iCAAiC,2BAA2B;AAC5D;AACA,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D,6GAA6G;AAC7G;AACA,wDAAwD;AACxD;AACA;AACA,iCAAiC,2BAA2B;AAC5D;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA,GAAG;;;;AAIH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kBAAkB;AACxE,uDAAuD,2BAA2B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,uDAAuD;AACvD;AACA;AACA,uDAAuD;AACvD;AACA;AACA,uDAAuD;AACvD;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,2BAA2B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB,wCAAwC;AAClH,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB,kBAAkB;AAC/F;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,sDAAsD,kBAAkB;AACxE,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,kDAAkD,YAAY,eAAe;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,WAAW;AAC/F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,WAAW;AAC/F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kBAAkB,oBAAoB;AAC5E,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,WAAW;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,kDAAkD,YAAY,eAAe;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA,sFAAsF;AACtF;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA,sFAAsF;AACtF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,WAAW;AAC/F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA;AACA,kDAAkD,YAAY,sBAAsB,UAAU;AAC9F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA,uFAAuF;AACvF;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA,mFAAmF;AACnF;AACA;AACA,yFAAyF;AACzF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,wDAAwD;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,qBAAqB;AAC5E,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB,2BAA2B;AACjH;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa,sBAAsB;AACrF,wDAAwD;AACxD,oDAAoD,cAAc,uBAAuB;AACzF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,kBAAkB,gBAAgB,qBAAqB,kDAAkD;AAC7J;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD,8DAA8D,oBAAoB;AAClF,+CAA+C;AAC/C,6CAA6C,oBAAoB,iCAAiC,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,qCAAqC,2BAA2B,iCAAiC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,sKAAsK,uHAAuH,mHAAmH,qGAAqG,6EAA6E;AACxhC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,oBAAoB,qBAAqB;AAC7F;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,sCAAsC,iCAAiC,uBAAuB,uBAAuB,+BAA+B,qBAAqB,iBAAiB,oCAAoC,2BAA2B,gCAAgC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,sKAAsK,uHAAuH,mHAAmH,qGAAqG,6EAA6E;AAC3/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB,6DAA6D;AACtH,uFAAuF;AACvF,gGAAgG;AAChG;AACA;AACA,oCAAoC,qBAAqB,8DAA8D;AACvH,mGAAmG;AACnG,qGAAqG;AACrG;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB,qDAAqD;AAC9G,yGAAyG;AACzG,mGAAmG;AACnG;AACA;AACA,oCAAoC,qBAAqB,2DAA2D;AACpH,iGAAiG;AACjG,+FAA+F;AAC/F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,qBAAqB,qBAAqB;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,oDAAoD;AACpD,6DAA6D,qBAAqB;AAClF;AACA;AACA;AACA;AACA,sDAAsD;AACtD,kDAAkD;AAClD,6DAA6D,qBAAqB;AAClF;AACA;AACA;AACA;AACA,sDAAsD;AACtD,kDAAkD;AAClD,6DAA6D,qBAAqB;AAClF;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kBAAkB,aAAa,qBAAqB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B,gDAAgD;AAChH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D,oDAAoD,aAAa,uBAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,4CAA4C,WAAW,sBAAsB;AAC7E;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,4DAA4D,uBAAuB,+BAA+B,qBAAqB,iBAAiB,sCAAsC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,mBAAmB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB,oBAAoB;AACxa;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA,6CAA6C;AAC7C;AACA;AACA,+DAA+D;AAC/D;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA,6CAA6C;AAC7C;AACA;AACA,oEAAoE;AACpE;AACA,6CAA6C;AAC7C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB,2BAA2B;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,uCAAuC;AACvC;AACA;AACA,0EAA0E;AAC1E;AACA,uCAAuC;AACvC;AACA;AACA,yEAAyE;AACzE;AACA,uCAAuC;AACvC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wMAAwM,UAAU,6BAA6B,2BAA2B,iBAAiB,wCAAwC,QAAQ,SAAS;AACpV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAa,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF;AACrF,wCAAwC;AACxC;AACA;AACA;AACA,0FAA0F;AAC1F,wCAAwC;AACxC;AACA;AACA;AACA,wFAAwF;AACxF,wCAAwC;AACxC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6LAA6L,UAAU,6BAA6B,2BAA2B,iBAAiB,wCAAwC,QAAQ,SAAS;AACzU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,qBAAqB,oBAAoB;AACrF;AACA,2DAA2D,YAAY,sBAAsB;AAC7F;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA,+DAA+D,OAAO,0GAA0G,OAAO;AACvL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB,mBAAmB;AAC7F,sCAAsC,4DAA4D;AAClG;AACA,2DAA2D,YAAY,sBAAsB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB;AAC1E,sCAAsC,qBAAqB,4BAA4B;AACvF,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sQAAsQ,UAAU,6BAA6B,2BAA2B,iBAAiB,wCAAwC,QAAQ,SAAS;AAClZ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,wGAAwG;AACxG;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yGAAyG;AACzG;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,sHAAsH;AACtH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,GAAG,GAAG,GAAG;AAC3F,gGAAgG,mBAAmB,eAAe,iBAAiB;AACnJ;AACA;AACA;AACA;AACA;AACA,uDAAuD,GAAG,uBAAuB;AACjF;AACA;;AAEA;AACA;AACA,6CAA6C,8CAA8C;;AAE3F;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,GAAG;AACtC;AACA,2DAA2D;AAC3D,2EAA2E;AAC3E,oFAAoF;AACpF,+DAA+D;AAC/D,0CAA0C,OAAO,YAAY,EAAE;AAC/D,kCAAkC,KAAK;AACvC,+BAA+B;AAC/B,mDAAmD;AACnD;AACA;AACA,oEAAoE;AACpE,0EAA0E;AAC1E,qFAAqF;AACrF,qEAAqE;AACrE,4FAA4F;AAC5F,8FAA8F;AAC9F,oHAAoH;AACpH,+FAA+F;AAC/F,uEAAuE,GAAG,kCAAkC;AAC5G,uEAAuE,GAAG,kCAAkC;AAC5G,0CAA0C,OAAO;AACjD,4FAA4F;AAC5F,0CAA0C;AAC1C,sCAAsC;AACtC,mCAAmC;AACnC,oFAAoF;AACpF,gDAAgD;AAChD;AACA,8BAA8B,EAAE;AAChC;AACA;;AAEA;AACA;AACA,6CAA6C,mFAAmF;;AAEhI;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;;AAEA;AACA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA,4B;;;;;;;ACzvZA,UAAU,mBAAO,CAAC,8EAAiF;AACnG,0BAA0B,mBAAO,CAAC,uKAAmH;;AAErJ;;AAEA;AACA,0BAA0B,QAAS;AACnC;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;AClBA,UAAU,mBAAO,CAAC,8EAAiF;AACnG,0BAA0B,mBAAO,CAAC,0JAAmH;;AAErJ;;AAEA;AACA,0BAA0B,QAAS;AACnC;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;AClBA,UAAU,mBAAO,CAAC,8EAA8E;AAChG,0BAA0B,mBAAO,CAAC,iJAA4G;;AAE9I;;AAEA;AACA,0BAA0B,QAAS;AACnC;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;AClBA;;AAEA;;AAEA;AACA;;AAEA;AACA,mFAAmF;AACnF;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qCAAqC;AACrC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qCAAqC;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;;AAEL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC,E;AACD,CAAC;AACD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,+DAA+D,yBAAyB;AACxF;AACA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA,eAAe,mBAAO,CAAC,8CAAQ;AAC/B,KAAK;AACL;AACA;AACA,CAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,aAAa,wGAAwG,mBAAO,CAAC,8CAAQ,aAAa,aAAa,aAAa,uBAAuB,aAAa,gBAAgB,aAAa,YAAY,kdAAkd,mHAAmH,0dAA0d,aAAa,gUAAgU,mCAAmC,6ZAA6Z,sBAAsB,kzBAAkzB,QAAQ,SAAS,6DAA6D,WAAW,kCAAkC,sCAAsC,sYAAsY,gCAAgC,sCAAsC,sCAAsC,WAAW,uFAAuF,mDAAmD,iBAAiB,SAAS,mBAAmB,wCAAwC,QAAQ,QAAQ,8IAA8I,OAAO,4DAA4D,MAAM,kHAAkH,wBAAwB,WAAW,YAAY,EAAE,kEAAkE,oKAAoK,qBAAqB,aAAa,0MAA0M,+BAA+B,mBAAmB,kCAAkC,gCAAgC,qFAAqF,gCAAgC,kCAAkC,EAAE,yCAAyC,gBAAgB,2OAA2O,iCAAiC,WAAW,8KAA8K,sCAAsC,WAAW,gDAAgD,yCAAyC,WAAW,6SAA6S,oCAAoC,WAAW,mpBAAmpB,qCAAqC,GAAG,kCAAkC,eAAe,6DAA6D,iDAAiD,mBAAmB,6DAA6D,wIAAwI,iCAAiC,WAAW,uJAAuJ,+EAA+E,2nBAA2nB,kCAAkC,yBAAyB,gFAAgF,wEAAwE,IAAI,KAAK,oCAAoC,QAAQ,iBAAiB,KAAK,oCAAoC,QAAQ,yBAAyB,KAAK,uCAAuC,kCAAkC,iBAAiB,iBAAiB,kEAAkE,4DAA4D,GAAG,2CAA2C,iFAAiF,gLAAgL,OAAO,gLAAgL,6JAA6J,6MAA6M,qTAAqT,uCAAuC,+BAA+B,8LAA8L,oJAAoJ,MAAM,yHAAyH,MAAM,sFAAsF,uEAAuE,MAAM,gBAAgB,wCAAwC,eAAe,iEAAiE,qBAAqB,WAAW,IAAI,MAAM,OAAO,SAAS,sCAAsC,WAAW,03CAA03C,oCAAoC,aAAa,8FAA8F,sCAAsC,WAAW,0FAA0F,iCAAiC,WAAW,kCAAkC,mtBAAmtB,sDAAsD,+QAA+Q,2CAA2C,gBAAgB,uFAAuF,qCAAqC,WAAW,4CAA4C,wBAAwB,2BAA2B,UAAU,iFAAiF,kCAAkC,2BAA2B,gCAAgC,mBAAmB,sCAAsC,WAAW,+CAA+C,oCAAoC,8EAA8E,oCAAoC,GAAG,8DAA8D,WAAW,gKAAgK,iEAAiE,WAAW,sBAAsB,oCAAoC,uBAAuB,gCAAgC,eAAe,sIAAsI,iDAAiD,UAAU,eAAe,sIAAsI,WAAW,iCAAiC,qBAAqB,4uDAA4uD,8DAA8D,WAAW,oBAAoB,4CAA4C,0BAA0B,0HAA0H,IAAI,4IAA4I,SAAS,iCAAiC,YAAY,sCAAsC,iBAAiB,0KAA0K,yEAAyE,wFAAwF,sDAAsD,WAAW,eAAe,MAAM,mCAAmC,IAAI,8BAA8B,WAAW,8RAA8R,wCAAwC,WAAW,4FAA4F,mBAAmB,+CAA+C,eAAe,iBAAiB,sCAAsC,WAAW,4FAA4F,gBAAgB,iNAAiN,yCAAyC,WAAW,qFAAqF,eAAe,+DAA+D,cAAc,4DAA4D,aAAa,kEAAkE,aAAa,ivBAAivB,+BAA+B,WAAW,qNAAqN,oCAAoC,WAAW,8GAA8G,MAAM,oBAAoB,+DAA+D,MAAM,gBAAgB,GAAG,iCAAiC,cAAc,sCAAsC,0EAA0E,oBAAoB,WAAW,UAAU,gBAAgB,yBAAyB,UAAU,gBAAgB,uDAAuD,EAAE,EAAE,SAAS,EAAE,mBAAmB,guBAAguB,mCAAmC,WAAW,mCAAmC,UAAU,gHAAgH,mDAAmD,WAAW,eAAe,MAAM,gBAAgB,EAAE,0CAA0C,WAAW,oCAAoC,qDAAqD,WAAW,8BAA8B,mDAAmD,WAAW,yBAAyB,mCAAmC,WAAW,sLAAsL,mDAAmD,WAAW,eAAe,MAAM,oBAAoB,EAAE,wCAAwC,mBAAmB,4CAA4C,eAAe,uLAAuL,iGAAiG,mBAAmB,kDAAkD,GAAG,iCAAiC,eAAe,6MAA6M,eAAe,6BAA6B,MAAM,yBAAyB,KAAK,4CAA4C,8CAA8C,kCAAkC,0CAA0C,8EAA8E,KAAK,KAAK,uEAAuE,4DAA4D,iCAAiC,qCAAqC,GAAG,+BAA+B,WAAW,2oBAA2oB,+BAA+B,WAAW,2GAA2G,iFAAiF,MAAM,iEAAiE,WAAW,oZAAoZ,gCAAgC,oBAAoB,mMAAmM,6JAA6J,sCAAsC,WAAW,gEAAgE,uCAAuC,oHAAoH,uCAAuC,qeAAqe,iEAAiE,2FAA2F,gCAAgC,aAAa,6BAA6B,iDAAiD,sEAAsE,YAAY,qEAAqE,EAAE,oCAAoC,oCAAoC,EAAE,kCAAkC,WAAW,uFAAuF,mDAAmD,yBAAyB,kEAAkE,eAAe,0HAA0H,KAAK,oCAAoC,KAAK,4FAA4F,gCAAgC,oBAAoB,gCAAgC,oCAAoC,WAAW,yIAAyI,iCAAiC,iCAAiC,20CAA20C,yCAAyC,mBAAmB,uwCAAuwC,sCAAsC,iBAAiB,8IAA8I,+FAA+F,iBAAiB,6IAA6I,QAAQ,IAAI,0IAA0I,iEAAiE,sBAAsB,GAAG,mCAAmC,WAAW,oGAAoG,uCAAuC,mIAAmI,sHAAsH,0CAA0C,0BAA0B,+bAA+b;AAC7v+B,CAAC,0OAA0O,iBAAiB,ykBAAykB,iBAAiB,+FAA+F,iBAAiB;AACt8B,CAAC,uCAAuC,cAAc,wOAAwO,4CAA4C,0BAA0B,ydAAyd,uCAAuC,iBAAiB,yHAAyH,2KAA2K,mMAAmM,0CAA0C,OAAO,oMAAoM,4CAA4C,wGAAwG,GAAG,2CAA2C,cAAc,+cAA+c,+BAA+B,OAAO,6BAA6B,OAAO,4BAA4B,EAAE,wCAAwC,6BAA6B,i5CAAi5C,yCAAyC,iBAAiB,uGAAuG,wSAAwS,wEAAwE,cAAc,mJAAmJ,oCAAoC,cAAc,gWAAgW,sCAAsC,cAAc,oDAAoD,0CAA0C,iBAAiB,m5BAAm5B,wCAAwC,cAAc,uOAAuO,wCAAwC,cAAc,uHAAuH,qCAAqC,cAAc,0DAA0D,wCAAwC,yCAAyC,iBAAiB,gHAAgH,eAAe,wEAAwE,GAAG,qFAAqF,eAAe,2IAA2I,GAAG,mJAAmJ,yCAAyC,cAAc,2CAA2C,yBAAyB,yCAAyC,gBAAgB,GAAG,0CAA0C,cAAc,2DAA2D,8BAA8B,iBAAiB,yBAAyB,oGAAoG,MAAM,GAAG,4BAA4B,kGAAkG,YAAY,OAAO,oKAAoK;AACp6P,CAAC;;AAED;AACA,qBAAqB,cAAc,gBAAgB,mEAAmE,wBAAwB,uDAAuD,qCAAqC,uEAAuE,kKAAkK,+BAA+B,sCAAsC,yGAAyG,8KAA8K,2CAA2C,sDAAsD,EAAE,aAAa,sBAAsB,iBAAiB,SAAS,gBAAgB,mBAAmB,YAAY,sBAAsB,wBAAwB,qBAAqB,goBAAgoB,iFAAiF,yBAAyB,qCAAqC,IAAI,+GAA+G,0DAA0D,SAAS,oBAAoB,wEAAwE,kCAAkC,gDAAgD,gEAAgE,wCAAwC,EAAE,mBAAmB,2FAA2F,yCAAyC,8CAA8C,kCAAkC,gBAAgB,MAAM,MAAM,mBAAmB,+EAA+E,yCAAyC,2BAA2B,MAAM,OAAO,qBAAqB,WAAW,oBAAoB,WAAW,wBAAwB,WAAW,2BAA2B,eAAe,uBAAuB,mBAAmB,uBAAuB,mCAAmC,sBAAsB,mBAAmB,0BAA0B,6BAA6B,wBAAwB,OAAO,uBAAuB,4BAA4B,8BAA8B,OAAO,8BAA8B,SAAS,iDAAiD,GAAG,qCAAqC,kBAAkB,8HAA8H,OAAO,OAAO,qDAAqD,gDAAgD,yCAAyC,OAAO,OAAO,yBAAyB,uJAAuJ,yBAAyB,kBAAkB,UAAU,+DAA+D,WAAW,cAAc,iCAAiC,cAAc,gGAAgG,6BAA6B,qKAAqK,EAAE,aAAa,kBAAkB,4BAA4B,4GAA4G,gBAAgB,aAAa,mIAAmI,gJAAgJ,kBAAkB,EAAE,EAAE,gCAAgC,OAAO,OAAO,qBAAqB,2BAA2B,YAAY,uDAAuD,wFAAwF,oIAAoI,2CAA2C,aAAa,4EAA4E,cAAc,+HAA+H,+DAA+D,2CAA2C,gDAAgD,2CAA2C,cAAc,sCAAsC,YAAY,8CAA8C,gFAAgF,0CAA0C,oEAAoE,6CAA6C,YAAY,oCAAoC,uBAAuB,kCAAkC,0BAA0B,qCAAqC,aAAa,oCAAoC,+BAA+B,OAAO,wBAAwB,6TAA6T,sBAAsB,wCAAwC,6CAA6C,6BAA6B,mBAAmB,kBAAkB,oBAAoB,0GAA0G,2EAA2E,OAAO,2IAA2I,OAAO,sEAAsE,cAAc,0BAA0B,WAAW,sCAAsC,oKAAoK,SAAS,OAAO,eAAe,4BAA4B,sFAAsF,2GAA2G,kCAAkC,GAAG,EAAE,qEAAqE,mBAAmB,mEAAmE,2BAA2B,OAAO,8FAA8F,OAAO,4RAA4R,iDAAiD,OAAO,OAAO,sDAAsD,OAAO,iFAAiF,uBAAuB,EAAE,uBAAuB,+BAA+B,OAAO,OAAO,0NAA0N,cAAc,uDAAuD,8NAA8N,qBAAqB,UAAU,0BAA0B,OAAO,sCAAsC,gIAAgI,WAAW,EAAE,0DAA0D,gBAAgB,WAAW,mDAAmD,4BAA4B,6CAA6C,6CAA6C,kKAAkK,yGAAyG,QAAQ,EAAE,EAAE,mBAAmB,uBAAuB,2CAA2C,qLAAqL,gBAAgB,0BAA0B,aAAa,+EAA+E,mGAAmG,sBAAsB,oDAAoD,UAAU,oDAAoD,qDAAqD,uLAAuL,SAAS,oBAAoB,wCAAwC,OAAO,OAAO,iDAAiD,gCAAgC,qIAAqI,0BAA0B,cAAc,EAAE,qBAAqB,YAAY,wDAAwD,mCAAmC,6BAA6B,GAAG,yDAAyD,eAAe,mCAAmC,sBAAsB,EAAE,GAAG,oBAAoB,qBAAqB,kBAAkB,oCAAoC,OAAO,4BAA4B,YAAY,6BAA6B,QAAQ,6BAA6B,wBAAwB,OAAO,wDAAwD,uCAAuC,2BAA2B,qBAAqB,0FAA0F,gBAAgB,YAAY,OAAO,sCAAsC,WAAW,qBAAqB,WAAW,sDAAsD,gBAAgB,GAAG,wBAAwB,kBAAkB,oCAAoC,OAAO,4NAA4N,oBAAoB,uDAAuD,yIAAyI,kBAAkB,kCAAkC,iBAAiB,qGAAqG,uDAAuD,WAAW,uEAAuE,YAAY,EAAE,GAAG,uGAAuG,uBAAuB,sHAAsH,8CAA8C,qBAAqB,kBAAkB,iCAAiC,OAAO,yGAAyG,mCAAmC,GAAG,2CAA2C,kBAAkB,8BAA8B,OAAO,kGAAkG,oBAAoB,kCAAkC,OAAO,mDAAmD,UAAU,2BAA2B,+CAA+C,oBAAoB,2BAA2B,oMAAoM,oBAAoB,sCAAsC,6HAA6H,WAAW,oBAAoB,cAAc,+KAA+K,qBAAqB,qBAAqB,sFAAsF,2BAA2B,qBAAqB,6GAA6G,wCAAwC,OAAO,uCAAuC,WAAW,8BAA8B,OAAO,yDAAyD,eAAe,qBAAqB,0BAA0B,qBAAqB,uBAAuB,gCAAgC,mBAAmB,wBAAwB,2BAA2B,6GAA6G,qEAAqE,WAAW,yFAAyF;AAC9je;AACA;AACA;AACA,kCAAkC,cAAc,EAAE;AAClD;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA,eAAe,kIAAkI,iBAAiB,aAAa,0GAA0G,4UAA4U,qBAAqB,kBAAkB,mCAAmC,+CAA+C,cAAc,YAAY,qCAAqC,cAAc,UAAU,wCAAwC,aAAa,UAAU,oBAAoB,2BAA2B,cAAc,wBAAwB,KAAK,cAAc,yCAAyC,aAAa,iBAAiB,6BAA6B,iCAAiC,sCAAsC,IAAI,mCAAmC,yCAAyC,sIAAsI,+CAA+C,oBAAoB,2BAA2B,GAAG,cAAc,eAAe,wCAAwC,cAAc,+BAA+B,eAAe,sCAAsC,8BAA8B,kBAAkB,aAAa,SAAS,iDAAiD,cAAc,wCAAwC,kBAAkB,gBAAgB,uDAAuD,sBAAsB,cAAc,+CAA+C,oFAAoF,+BAA+B,EAAE,4UAA4U,qBAAqB,cAAc,eAAe,wCAAwC,cAAc,+BAA+B,eAAe,sCAAsC,8BAA8B,kBAAkB,aAAa,SAAS,iDAAiD,cAAc,wCAAwC,kBAAkB,gBAAgB,uDAAuD,sBAAsB,mCAAmC,+CAA+C,cAAc,YAAY,qCAAqC,cAAc,UAAU,wCAAwC,aAAa,UAAU,oBAAoB,2BAA2B,cAAc,wBAAwB,KAAK,cAAc,yCAAyC,aAAa,iBAAiB,6BAA6B,iCAAiC,sCAAsC,IAAI,mCAAmC,yCAAyC,sIAAsI,+CAA+C,oBAAoB,2BAA2B,GAAG,gBAAgB,cAAc,yBAAyB,4FAA4F,iBAAiB,sBAAsB,QAAQ,WAAW,MAAM,4CAA4C,sCAAsC,SAAS,yBAAyB,EAAE,aAAa,0FAA0F,OAAO,uBAAuB,YAAY,qBAAqB,oCAAoC,iCAAiC,wCAAwC,GAAG,iBAAiB,8EAA8E,cAAc,gBAAgB,YAAY,WAAW,KAAK,WAAW,+GAA+G,uBAAuB,wCAAwC,gCAAgC,YAAY,mBAAmB,KAAK,mBAAmB,sEAAsE,SAAS,8yHAA8yH,aAAa,+DAA+D,qBAAqB,aAAa,UAAU,aAAa,6BAA6B,UAAU,6CAA6C,EAAE,8BAA8B,UAAU,6CAA6C,EAAE,8BAA8B,qCAAqC,EAAE,4BAA4B,6GAA6G,KAAK,oBAAoB,aAAa,iFAAiF,SAAS,uBAAuB,SAAS,4BAA4B,eAAe,+BAA+B,qBAAqB,2DAA2D,2BAA2B,yBAAyB,6BAA6B,EAAE,iGAAiG,EAAE,mEAAmE,yBAAyB,0BAA0B,EAAE,yHAAyH,uBAAuB,EAAE,eAAe,gBAAgB,6CAA6C,sHAAsH,OAAO,cAAc,oBAAoB,oCAAoC,eAAe,uBAAuB,wBAAwB,YAAY,kBAAkB,+BAA+B,wMAAwM,yBAAyB,EAAE,mEAAmE,mBAAmB,+GAA+G,qEAAqE,iBAAiB,UAAU,uBAAuB,wCAAwC,MAAM,sCAAsC,MAAM,wBAAwB,MAAM,4CAA4C,MAAM,0CAA0C,MAAM,mBAAmB,MAAM,qCAAqC,MAAM,uCAAuC,WAAW,yDAAyD,mBAAmB,4CAA4C,sGAAsG,kBAAkB,YAAY,2CAA2C,IAAI,eAAe,8CAA8C,8CAA8C,OAAO,QAAQ,EAAE,iBAAiB,6QAA6Q,eAAe,kCAAkC,eAAe,uIAAuI,cAAc,qBAAqB,eAAe,4CAA4C,KAAK,eAAe,yBAAyB,kSAAkS,EAAE,gBAAgB,0HAA0H,OAAO,iBAAiB,isBAAisB,OAAO,4CAA4C,OAAO,gPAAgP,4BAA4B;AACr+a;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,OAAO;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;AC/bD,UAAU,mBAAO,CAAC,8EAA8E;AAChG,0BAA0B,mBAAO,CAAC,8IAAyG;;AAE3I;;AAEA;AACA,0BAA0B,QAAS;AACnC;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;AClBA;;AAEA,8EAA8E,mBAAO,CAAC,qEAAgD,gBAAgB,mBAAO,CAAC,wEAAmD;;AAEjN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,EAAE;AACrC,mCAAmC,EAAE;AACrC;AACA,gDAAgD,EAAE;AAClD,iDAAiD,EAAE;AACnD,gDAAgD,EAAE;AAClD,+CAA+C,EAAE;AACjD,yCAAyC,EAAE;AAC3C,6CAA6C,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,YAAY,8CAA8C;AAC1D,YAAY,oDAAoD;AAChE,YAAY,mDAAmD;AAC/D;AACA;;AAEA,iBAAiB,+IAA+I;AAChK,iBAAiB;;AAEjB;;AAEA,iBAAiB,0HAA0H;;AAE3I;;AAEA,oFAAoF,gBAAgB;AACpG;AACA;AACA;AACA,YAAY;;AAEZ;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,EAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,EAAE;AAC7C;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,4CAA4C;;AAE5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB,iBAAiB,YAAY;AAC7B;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,cAAc,uBAAuB;;AAEpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,eAAe,sBAAsB,kBAAkB,OAAO,WAAW;AACrI;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,YAAY;AACrF;AACA,yBAAyB;AACzB;AACA,yEAAyE,YAAY;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gJAAgJ,yBAAyB;AACzK;AACA,qFAAqF,YAAY,sBAAsB,YAAY;AACnI;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;;AAEA;AACA,iBAAiB;;AAEjB;AACA,+DAA+D,OAAO,SAAS,YAAY,qBAAqB,WAAW;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qHAAqH,yBAAyB;AAC9I;AACA,4FAA4F,YAAY,sBAAsB,YAAY;AAC1I;AACA;AACA;AACA,oGAAoG,oCAAoC,uBAAuB;AAC/J;AACA;AACA,mHAAmH,yBAAyB;AAC5I;AACA,4CAA4C,YAAY,YAAY,WAAW,QAAQ,UAAU;AACjG;AACA;AACA;AACA,qDAAqD,sBAAsB,8BAA8B;AACzG,8EAA8E,YAAY,aAAa;AACvG,mHAAmH,YAAY,kBAAkB,WAAW,MAAM,gBAAgB,WAAW,8CAA8C,YAAY,wBAAwB;AAC/Q;AACA;AACA;AACA,uHAAuH,yBAAyB;AAChJ;AACA,iGAAiG,YAAY,sBAAsB,YAAY;AAC/I;AACA;AACA;AACA,uGAAuG;AACvG,qDAAqD,sBAAsB;AAC3E,oGAAoG,YAAY,sBAAsB,YAAY;AAClJ;AACA;AACA;AACA,uGAAuG;AACvG,qDAAqD,sBAAsB;AAC3E,oGAAoG,YAAY,sBAAsB,YAAY;AAClJ;AACA;AACA;;AAEA;;AAEA,aAAa;;AAEb;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,8CAA8C;AAC9C,mDAAmD,kBAAkB;AACrE;AACA;AACA;AACA;AACA;AACA,8CAA8C,UAAU;AACxD;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,+GAA+G;AAC/G,2HAA2H,SAAS;AACpI,4HAA4H,uCAAuC,kBAAkB,SAAS,UAAU,SAAS;AACjN,kIAAkI,uCAAuC,kBAAkB,SAAS,UAAU,SAAS;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G,4GAA4G;AAC5G,4GAA4G;AAC5G;AACA;AACA;AACA,2GAA2G;AAC3G,4GAA4G,gBAAgB;AAC5H,4GAA4G,gBAAgB;AAC5H,6GAA6G,gBAAgB;AAC7H;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,aAAa,UAAU,sBAAsB,kBAAkB;AAC5G,sFAAsF,OAAO,QAAQ,YAAY,UAAU;AAC3H,uDAAuD,OAAO,QAAQ,WAAW,YAAY,YAAY,qCAAqC,kCAAkC,SAAS,sBAAsB;AAC/M;AACA;AACA,yEAAyE,kBAAkB,OAAO,SAAS;AAC3G;AACA;AACA;AACA;AACA,6CAA6C,aAAa,UAAU,sBAAsB,kBAAkB;AAC5G,sFAAsF,OAAO,QAAQ,YAAY,UAAU;AAC3H,4FAA4F,mBAAmB,OAAO,QAAQ,WAAW,YAAY,YAAY,qCAAqC,kCAAkC,sBAAsB;AAC9P;AACA,wEAAwE,YAAY,kBAAkB,QAAQ,MAAM,uBAAuB,UAAU,8CAA8C,YAAY,wBAAwB;AACvO,yEAAyE,kBAAkB,OAAO,SAAS;AAC3G;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,oBAAoB,gBAAgB,YAAY;AACvG,4FAA4F,YAAY,kBAAkB,eAAe;AACzI,iGAAiG;AACjG,iGAAiG;AACjG,iGAAiG;AACjG,iGAAiG;AACjG,kGAAkG,gBAAgB;AAClH,kGAAkG,gBAAgB;AAClH,+HAA+H,gBAAgB;AAC/I,8HAA8H,gBAAgB;AAC9I;AACA;AACA;AACA,+GAA+G;AAC/G;AACA;AACA,+JAA+J,eAAe,eAAe,qBAAqB;AAClN,sIAAsI,gBAAgB,gDAAgD,eAAe,eAAe,qBAAqB;AACzP,kJAAkJ,gBAAgB,0DAA0D,eAAe,eAAe,qBAAqB;AAC/Q;AACA,+GAA+G,6BAA6B,gBAAgB,SAAS;AACrK,sHAAsH,wBAAwB;AAC9I;AACA,mIAAmI,gBAAgB,gBAAgB;AACnK;AACA;AACA;AACA,8FAA8F;AAC9F;AACA;AACA;AACA,4EAA4E,aAAa;AACzF;AACA;AACA,8EAA8E,YAAY,kBAAkB;AAC5G;AACA;AACA;AACA,yIAAyI;AACzI;AACA;AACA;AACA,8EAA8E,YAAY;AAC1F;AACA;AACA;AACA,4IAA4I;AAC5I,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA,gLAAgL,eAAe,WAAW,YAAY;AACtN,mJAAmJ,2DAA2D,eAAe,WAAW,YAAY;AACpP,iJAAiJ,2DAA2D,eAAe,WAAW,YAAY;AAClP,kJAAkJ,2DAA2D,eAAe,WAAW,YAAY;AACnP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6IAA6I,gBAAgB;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI;AACjI,sJAAsJ,SAAS;AAC/J,oJAAoJ,SAAS;AAC7J;AACA;AACA,uJAAuJ,SAAS;AAChK,4JAA4J,gBAAgB,SAAS;AACrL,0JAA0J,gBAAgB,SAAS;AACnL;AACA;AACA,uJAAuJ,SAAS;AAChK,4JAA4J,gBAAgB,SAAS;AACrL,0JAA0J,gBAAgB,SAAS;AACnL;AACA;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I,6IAA6I;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I,6IAA6I;AAC7I;AACA;AACA;AACA;;AAEA;AACA;AACA,qEAAqE,qBAAqB,kBAAkB,WAAW,gBAAgB;AACvI;AACA,wFAAwF;AACxF;AACA;AACA,qEAAqE,qBAAqB,gBAAgB;AAC1G;AACA,2EAA2E;AAC3E;AACA;AACA;AACA,yEAAyE;AACzE;AACA,2EAA2E;AAC3E;AACA;AACA;;AAEA,yEAAyE,WAAW;AACpF;AACA,4EAA4E;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA,gJAAgJ;AAChJ,kGAAkG,6BAA6B,gBAAgB,SAAS;AACxJ,wIAAwI;AACxI;AACA;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I,2IAA2I;AAC3I;AACA;AACA;AACA;AACA;AACA,gHAAgH;AAChH,kIAAkI,SAAS;AAC3I,6HAA6H,iBAAiB;AAC9I;AACA;AACA;AACA;AACA;AACA,+GAA+G;AAC/G,mIAAmI,SAAS;AAC5I,6HAA6H,iBAAiB;AAC9I;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA,gFAAgF,mGAAmG;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,aAAa,iBAAiB,sBAAsB;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,aAAa,UAAU,sBAAsB,kBAAkB;AAC7G,sFAAsF,OAAO,QAAQ,YAAY,UAAU;AAC3H,uDAAuD,OAAO,QAAQ,WAAW,YAAY,YAAY,kCAAkC,SAAS,sBAAsB;AAC1K;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yGAAyG,MAAM,OAAO,WAAW,YAAY,sCAAsC,eAAe;;AAElM;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;;AAGzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB,O;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+EAA+E;;AAE/E;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;;AAEA,qBAAqB;;AAErB;AACA;;AAEA;AACA;AACA,uGAAuG,qBAAqB;;AAE5H;AACA,oDAAoD,GAAG;AACvD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;;AAEA;;AAEA;AACA,+FAA+F;AAC/F;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;;AAEA;AACA,kMAAkM,yBAAyB;AAC3N,qIAAqI;AACrI;;AAEA;;AAEA;AACA;;AAEA;AACA,yBAAyB;;AAEzB;;AAEA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAiC;AACjC;AACA,6BAA6B;;AAE7B,yBAAyB;;AAEzB;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;;;AAGrB,iBAAiB;AACjB;;;AAGA;;;AAGA;AACA;AACA,8OAA8O,WAAW,YAAY,qBAAqB,WAAW,6BAA6B;AAClU,gDAAgD,YAAY,gBAAgB;AAC5E,2DAA2D,WAAW,YAAY,sDAAsD,UAAU,WAAW,sBAAsB;AACnL,uJAAuJ,UAAU,OAAO,WAAW,YAAY,WAAW,gBAAgB;AAC1N;AACA;AACA,sHAAsH,WAAW,kBAAkB,MAAM;AACzJ;AACA,oKAAoK,WAAW,YAAY,6BAA6B,qDAAqD,eAAe,yBAAyB;AACrT,6KAA6K,WAAW,YAAY,oBAAoB,qDAAqD,eAAe,yBAAyB;AACrT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb,U;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gIAAgI,yBAAyB;AACzJ;AACA,qEAAqE,YAAY,sBAAsB,YAAY;AACnH;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yGAAyG,MAAM,OAAO,WAAW,YAAY,sCAAsC,eAAe;;AAElM;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;;AAEA,aAAa;;AAEb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,6EAA6E;;AAE7E;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;;AAErB;;AAEA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mFAAmF;AACnF;;AAEA,sCAAsC,GAAG;;AAEzC;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;AACA,sLAAsL,yBAAyB;AAC/M,yHAAyH;AACzH;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB,aAAa;;AAEb;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8LAA8L,yBAAyB;AACvN,iIAAiI;AACjI;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA,qBAAqB;;AAErB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA,qBAAqB;;AAErB,iBAAiB;;;AAGjB,aAAa;;AAEb;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa;;AAEb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,aAAa;;AAEb;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;;AAEA;AACA;;AAEA,yBAAyB;;AAEzB;AACA;;AAEA;AACA;;AAEA;;AAEA,yBAAyB;;AAEzB;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;;;AAGzB;AACA;;AAEA;;AAEA,8C;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA,6EAA6E;AAC7E;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,WAAW;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;;AAEb;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,0C;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,qBAAqB;;AAErB,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB;;AAErB;AACA;;AAEA,0C;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,qBAAqB;;AAErB;;;AAGA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB,0HAA0H;;AAE1H;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB;;AAEjB;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA,+DAA+D;;AAE/D,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA,uGAAuG;AACvG;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA,+DAA+D;AAC/D;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA,2DAA2D;AAC3D;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,uGAAuG;AACvG;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oEAAoE;AACpE,aAAa;AACb,mEAAmE;AACnE;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;;AAGb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;AACzD,4DAA4D;;AAE5D;AACA;;AAEA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA,gFAAgF,cAAc,EAAE;AAChG,qFAAqF,0DAA0D,uDAAuD;AACtM,qFAAqF,0DAA0D;AAC/I,qFAAqF,0DAA0D;AAC/I,qFAAqF,0DAA0D;AAC/I,qFAAqF,0DAA0D;AAC/I,0BAA0B,uDAAuD;AACjF;AACA;AACA,gFAAgF,0DAA0D;AAC1I,qFAAqF,0DAA0D;AAC/I,qFAAqF,0DAA0D;AAC/I,qFAAqF,0DAA0D;AAC/I,qFAAqF,0DAA0D;AAC/I,qFAAqF,cAAc;AACnG,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA,oFAAoF,cAAc;AAClG,yFAAyF,8DAA8D;AACvJ,yFAAyF,8DAA8D;AACvJ,yFAAyF,8DAA8D;AACvJ,yFAAyF,8DAA8D;AACvJ,wFAAwF,6DAA6D,2DAA2D;AAChN,wFAAwF,6DAA6D,0DAA0D;AAC/M,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,0BAA0B,0DAA0D;AACpF;AACA;AACA,oFAAoF,8DAA8D;AAClJ,yFAAyF,8DAA8D;AACvJ,yFAAyF,8DAA8D;AACvJ,yFAAyF,8DAA8D;AACvJ,yFAAyF,8DAA8D;AACvJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,6DAA6D;AACrJ,wFAAwF,cAAc;AACtG,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2DAA2D,cAAc;AACzE,gEAAgE,qCAAqC;AACrG,gEAAgE,qCAAqC;AACrG,gEAAgE,qCAAqC;AACrG,gEAAgE,qCAAqC;AACrG,+DAA+D,oCAAoC,kCAAkC;AACrI,+DAA+D,oCAAoC,iCAAiC;AACpI,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,0BAA0B,iCAAiC;AAC3D;AACA;AACA,2DAA2D,qCAAqC;AAChG,gEAAgE,qCAAqC;AACrG,gEAAgE,qCAAqC;AACrG,gEAAgE,qCAAqC;AACrG,gEAAgE,qCAAqC;AACrG,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,+DAA+D,oCAAoC;AACnG,+DAA+D,cAAc;AAC7E,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB,oGAAoG;;AAEpG;AACA,aAAa;;AAEb;AACA;AACA;;AAEA,sCAAsC;;AAEtC;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,6GAA6G;AAC7G,qEAAqE;AACrE,wEAAwE;AACxE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB;;AAEjB,aAAa;;AAEb;AACA;AACA;;AAEA,sCAAsC;;AAEtC;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iHAAiH;AACjH,yEAAyE;AACzE,4EAA4E;AAC5E;AACA;;AAEA;;AAEA;;AAEA,qBAAqB;;AAErB;AACA;AACA,4FAA4F;AAC5F;AACA,yEAAyE;AACzE,4EAA4E;AAC5E;AACA;AACA,qKAAqK;AACrK;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,iBAAiB;;AAEjB,iBAAiB;;AAEjB,aAAa;AACb;;AAEA;AACA;;AAEA,sCAAsC;;AAEtC;;AAEA;;AAEA,iBAAiB;;AAEjB,aAAa;;AAEb;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;;AAGb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yDAAyD;AACzD;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yDAAyD;AACzD,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,oFAAoF;AACpF;AACA,iEAAiE;AACjE,oEAAoE;AACpE;AACA;AACA,6JAA6J;AAC7J;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA,iGAAiG;AACjG,yDAAyD;AACzD,4DAA4D;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2FAA2F;;AAE3F,yEAAyE;;AAEzE;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,6EAA6E;AAC7E,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,kCAAkC;AACtF,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F;AACA;AACA;AACA,oDAAoD,cAAc;AAClE,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,yDAAyD,kCAAkC;AAC3F,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8FAA8F;AAC9F;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yJAAyJ,UAAU;;AAEnK;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAuC;;AAEvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;;AAEA;;AAEA,aAAa;;AAEb;;AAEA;AACA;;AAEA,uCAAuC;;AAEvC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,kBAAkB;AACrD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,aAAa;;AAEb;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,kBAAkB;AAC7D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB;;AAErB;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qJAAqJ;AACrJ;AACA;AACA;;AAEA;AACA;AACA,kFAAkF;AAClF;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0B;;AAEA;AACA,mBAAmB,kBAAkB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4D;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET,KAAK;;AAEL;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,0GAA0G;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,4KAA4K,sCAAsC,eAAe,uBAAuB,gDAAgD,sFAAsF,kCAAkC,iCAAiC,OAAO,+CAA+C,aAAa,WAAW,kNAAkN,0CAA0C,aAAa,kDAAkD,SAAS,4DAA4D,EAAE,mBAAmB,OAAO,sKAAsK,kPAAkP,2BAA2B,oBAAoB,yBAAyB,qBAAqB,UAAU,mCAAmC,OAAO,2DAA2D,cAAc,4BAA4B,KAAK,mBAAmB,aAAa,wJAAwJ,mBAAmB,yBAAyB,mGAAmG,OAAO,kKAAkK,WAAW,oBAAoB,mBAAmB,qCAAqC,OAAO,sCAAsC,eAAe,uBAAuB,aAAa,gHAAgH,wDAAwD,MAAM,uBAAuB,YAAY,mIAAmI,EAAE,EAAE,mBAAmB,eAAe,EAAE,gDAAgD,OAAO,2EAA2E,yEAAyE,8BAA8B,GAAG,yCAAyC,8BAA8B,qCAAqC,aAAa,6DAA6D,+CAA+C,oBAAoB,6BAA6B,mFAAmF,WAAW,EAAE,qCAAqC,+BAA+B,4HAA4H,oBAAoB,6BAA6B,oJAAoJ,WAAW,EAAE,KAAK,0BAA0B,0DAA0D,qGAAqG,OAAO,6CAA6C,mBAAmB,eAAe,4DAA4D,oBAAoB,2BAA2B,eAAe,oBAAoB,8CAA8C,OAAO,uBAAuB,2DAA2D,2aAA2a,iBAAiB,oCAAoC,OAAO,8OAA8O,qCAAqC,0CAA0C,qCAAqC,MAAM,8DAA8D,YAAY,QAAQ,0BAA0B,oCAAoC,yBAAyB,yDAAyD,uJAAuJ,OAAO,2CAA2C,kXAAkX,kCAAkC,8BAA8B,KAAK,sBAAsB,eAAe,mBAAmB,EAAE,+CAA+C,mBAAmB,gCAAgC,wDAAwD,OAAO,wCAAwC,WAAW,EAAE,oCAAoC,OAAO,iFAAiF,KAAK,sGAAsG,gBAAgB,QAAQ,6BAA6B,yFAAyF,YAAY,QAAQ,WAAW,kCAAkC,aAAa,0IAA0I,yBAAyB,aAAa,yIAAyI,oBAAoB,OAAO,gEAAgE,2BAA2B,yDAAyD,0EAA0E,YAAY,oBAAoB,eAAe,iBAAiB,mEAAmE,OAAO,8CAA8C,sCAAsC,8BAA8B,0BAA0B,EAAE,wCAAwC,OAAO,gCAAgC,MAAM,8BAA8B,YAAY,EAAE,iBAAiB,sCAAsC,OAAO,6BAA6B,MAAM,8BAA8B,YAAY,EAAE,EAAE,2CAA2C,qCAAqC,OAAO,qFAAqF,mDAAmD,OAAO,MAAM,yBAAyB,YAAY,EAAE,EAAE,EAAE,oBAAoB,iCAAiC,qCAAqC,oBAAoB,gBAAgB,iDAAiD,OAAO,2CAA2C,qCAAqC,+BAA+B,YAAY,kCAAkC,mBAAmB,qPAAqP,sBAAsB,+EAA+E,8DAA8D,OAAO,OAAO,gCAAgC,qBAAqB,QAAQ,iBAAiB,WAAW,EAAE,OAAO,oBAAoB,eAAe,cAAc,oDAAoD,qCAAqC,GAAG,0CAA0C,gBAAgB,iIAAiI,KAAK,sBAAsB,gBAAgB,gCAAgC,kHAAkH,0GAA0G,sEAAsE,OAAO,mDAAmD,0BAA0B,MAAM,oEAAoE,OAAO,sKAAsK,EAAE,WAAW,sBAAsB,gBAAgB,0BAA0B,oEAAoE,OAAO,mDAAmD,0BAA0B,OAAO,WAAW,sBAAsB,gBAAgB,gBAAgB,0BAA0B,uGAAuG,OAAO,8CAA8C,WAAW,sBAAsB,gBAAgB,qDAAqD,yCAAyC,cAAc,sFAAsF,mBAAmB,6BAA6B,kCAAkC,6BAA6B,KAAK,sBAAsB,eAAe,oBAAoB,uJAAuJ,2JAA2J,EAAE,8BAA8B,6CAA6C,KAAK,sBAAsB,eAAe,6BAA6B,gFAAgF,OAAO,+OAA+O,OAAO,WAAW,sBAAsB,gBAAgB,iNAAiN,4CAA4C,OAAO,mqBAAmqB,KAAK,kGAAkG,qDAAqD,6GAA6G,iDAAiD,uHAAuH,iDAAiD,QAAQ,iDAAiD,oBAAoB,4BAA4B,gGAAgG,OAAO,sDAAsD,qEAAqE,OAAO,iCAAiC,8CAA8C,2BAA2B,8HAA8H,2BAA2B,mDAAmD,sBAAsB,OAAO,4EAA4E,oDAAoD,uEAAuE,OAAO,8HAA8H,OAAO,4GAA4G,2HAA2H,uDAAuD,qEAAqE,GAAG,0BAA0B,yBAAyB,MAAM,aAAa,YAAY,QAAQ,kGAAkG,kEAAkE,WAAW,sFAAsF;AAC5/c;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD,CAAC;;;;;;;;;AC3+HD,UAAU,mBAAO,CAAC,8EAA8E;AAChG,0BAA0B,mBAAO,CAAC,4JAAgH;;AAElJ;;AAEA;AACA,0BAA0B,QAAS;AACnC;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;AClBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,kGAAkG,kBAAkB;AACpH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA,SAAS;AACT;AACA;AACA;;AAEA,4DAA4D;AAC5D;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA,2EAA2E,MAAM,OAAO,WAAW,YAAY,iCAAiC,WAAW;AAC3J,WAAW;AACX,2EAA2E,MAAM,OAAO,WAAW,YAAY,sCAAsC,WAAW;AAChK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,0BAA0B;AACrD;AACA;;AAEA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;;AAGT;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,2BAA2B,0BAA0B;AACrD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0DAA0D;AAC1D;;AAEA,gEAAgE;;AAEhE;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,yDAAyD;AACzD;;AAEA,iEAAiE;AACjE,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,SAAS;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,qEAAqE;;AAErE;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B;;AAE/B;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,aAAa;AACb,WAAW;AACX;AACA,WAAW;AACX;;AAEA,SAAS;;;AAGT;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB,gBAAgB,wDAAwD,GAAG,6BAA6B,GAAG,KAAK;AACzK;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA,iFAAiF;;AAEjF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,GAAG;;AAErC,2BAA2B,SAAS;AACpC,2KAA2K;AAC3K;;AAEA;AACA,WAAW,EAAE,4B;AACb;;AAEA;;AAEA;;AAEA;AACA,mCAAmC;AACnC,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;;;AAGA;;AAEA;;AAEA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA,WAAW,EAAE;;AAEb,+CAA+C;;AAE/C,uCAAuC;;AAEvC;AACA,8BAA8B;AAC9B;;AAEA,iFAAiF;;AAEjF;AACA;AACA,SAAS;;;AAGT;AACA;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uCAAuC;;AAEvC,iEAAiE;;AAEjE;AACA;AACA;AACA,SAAS;AACT,+EAA+E;;AAE/E;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uCAAuC;;AAEvC;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA,kEAAkE;;AAElE;AACA;AACA;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;;AAEA;AACA;;AAEA,yBAAyB,SAAS;AAClC;AACA;;AAEA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD,SAAS;AAC1D;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;;AAEA,kDAAkD,SAAS;AAC3D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,yBAAyB,4BAA4B;AACrD;AACA;AACA,SAAS;AACT,2DAA2D;AAC3D;;;AAGA;AACA;AACA,uCAAuC,UAAU,8EAA8E;AAC/H;AACA,WAAW;AACX;;AAEA,+EAA+E;AAC/E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oDAAoD;;AAEpD;;AAEA,qEAAqE;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,WAAW;AACX;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,gDAAgD;;AAEhD,mDAAmD;;AAEnD,0DAA0D;;AAE1D,iDAAiD;;AAEjD,4CAA4C;;AAE5C,oDAAoD;;AAEpD,uDAAuD;;AAEvD,gDAAgD;;AAEhD,sDAAsD;;AAEtD,iDAAiD;;AAEjD,yDAAyD;;AAEzD,iDAAiD;;AAEjD,8CAA8C;;AAE9C,2DAA2D;;AAE3D,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,GAAG;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B,sBAAsB;;AAEnD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,0VAA0V,YAAY,wBAAwB,gBAAgB,SAAS,oFAAoF,qCAAqC,uCAAuC,mBAAmB,gCAAgC,SAAS,yBAAyB,YAAY,6BAA6B,uBAAuB,sCAAsC,WAAW,eAAe,gBAAgB,kBAAkB,mBAAmB,0CAA0C,uBAAuB,iBAAiB,kBAAkB,6CAA6C,mDAAmD,qBAAqB,0CAA0C,kBAAkB,MAAM,OAAO,WAAW,aAAa,gDAAgD,6BAA6B,0KAA0K,iBAAiB,sBAAsB,isjCAAisjC,0BAA0B,cAAc,MAAM,gEAAgE,sDAAsD,qCAAqC,yCAAyC,gEAAgE,wCAAwC,2BAA2B,uBAAuB,8BAA8B,iDAAiD,uBAAuB,OAAO,2EAA2E,gFAAgF,8EAA8E,kFAAkF,kFAAkF,2FAA2F,uBAAuB,qBAAqB,EAAE,eAAe;AACxnoC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,0VAA0V,YAAY,wBAAwB,gBAAgB,SAAS,oFAAoF,qCAAqC,uCAAuC,mBAAmB,gCAAgC,SAAS,yBAAyB,YAAY,6BAA6B,uBAAuB,sCAAsC,WAAW,eAAe,gBAAgB,kBAAkB,mBAAmB,0CAA0C,uBAAuB,iBAAiB,kBAAkB,6CAA6C,mDAAmD,qBAAqB,0CAA0C,kBAAkB,MAAM,OAAO,WAAW,aAAa,gDAAgD,6BAA6B,0KAA0K,iBAAiB,sBAAsB,2jCAA2jC,0BAA0B,cAAc,MAAM,gEAAgE,sDAAsD,qCAAqC,yCAAyC,gEAAgE,wCAAwC,2BAA2B,uBAAuB,8BAA8B,iDAAiD,uBAAuB,OAAO,2EAA2E,gFAAgF,8EAA8E,kFAAkF,kFAAkF,2FAA2F,uBAAuB,qBAAqB,EAAE,eAAe;AACl/G;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,mEAAmE,yCAAyC;AAC5G;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,UAAU;AAC3D;AACA,6CAA6C;;AAE7C;AACA;;AAEA,qDAAqD,UAAU;AAC/D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA,SAAS;;AAET;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qEAAqE;AACrE;AACA,qFAAqF;AACrF;AACA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA,2EAA2E;AAC3E,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA,OAAO;;AAEP,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F,iBAAiB,WAAW,UAAU,sBAAsB,kBAAkB,2EAA2E,YAAY,YAAY,qCAAqC,SAAS,sBAAsB,qIAAqI,YAAY,kBAAkB,WAAW,MAAM,gBAAgB,kDAAkD,YAAY,wBAAwB,sIAAsI,YAAY,kBAAkB,OAAO,SAAS,8BAA8B,gBAAgB,sfAAsf,iBAAiB,WAAW,UAAU,sBAAsB,kBAAkB,gBAAgB,4EAA4E,YAAY,YAAY,SAAS,sBAAsB,0FAA0F,aAAa,yHAAyH,YAAY,kBAAkB,WAAW,MAAM,gBAAgB,kDAAkD,YAAY,wBAAwB,gdAAgd,cAAc,6CAA6C,YAAY,YAAY,UAAU,mEAAmE,YAAY,aAAa,8KAA8K,iBAAiB,WAAW,UAAU,sBAAsB,kBAAkB,gBAAgB,2HAA2H,YAAY,kBAAkB,WAAW,MAAM,gBAAgB,kDAAkD,YAAY,wBAAwB,8HAA8H,YAAY,aAAa;AACvtG;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,YAAY,aAAa,+BAA+B;;AAE3H;AACA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,YAAY,aAAa,+BAA+B;;AAE3H;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,qDAAqD;AACrD;;AAEA,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uDAAuD;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,2CAA2C;;;AAG3C,2CAA2C;;;AAG3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,2CAA2C;;;AAG3C,2CAA2C;;;AAG3C;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA,2CAA2C;;;AAG3C,2CAA2C;;;AAG3C;;AAEA;AACA;;AAEA,+BAA+B;;AAE/B;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA,cAAc;;;AAGd;;AAEA;;AAEA;;AAEA;AACA,8EAA8E,YAAY,aAAa,+BAA+B;;AAEtI;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA,sEAAsE,MAAM,OAAO,UAAU,WAAW,gBAAgB,kBAAkB,gFAAgF,MAAM,OAAO,UAAU,WAAW,gBAAgB,kBAAkB;AAC9R;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,0DAA0D;AAC1D,8DAA8D;AAC9D,gEAAgE;AAChE,+D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA,0CAA0C,GAAG;AAC7C;AACA,sBAAsB,MAAM,K;AAC5B,+KAA+K;AAC/K;AACA,sCAAsC;AACtC;AACA;;AAEA,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;;AAEb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA,gCAAgC;;AAEhC,2HAA2H;;AAE3H;AACA;AACA,kCAAkC;;AAElC;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA,kCAAkC;;AAElC;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,weAAwe,YAAY,wBAAwB,SAAS,iBAAiB,4CAA4C,kCAAkC,mCAAmC,oCAAoC,4CAA4C,4CAA4C,gCAAgC,iCAAiC,sCAAsC,4CAA4C,uCAAuC,qDAAqD,8CAA8C,0CAA0C,qCAAqC,yCAAyC,+CAA+C,wCAAwC,0CAA0C,uCAAuC,gDAAgD,4CAA4C,6CAA6C,+CAA+C,gDAAgD,2CAA2C,qCAAqC,0CAA0C,qBAAqB,WAAW,YAAY,kBAAkB,mBAAmB,gBAAgB,qBAAqB,4CAA4C,qBAAqB,WAAW,YAAY,kBAAkB,mBAAmB,wBAAwB,gDAAgD,qBAAqB,gCAAgC,cAAc,4BAA4B,qBAAqB,gBAAgB,eAAe,oBAAoB,iBAAiB,sBAAsB,qCAAqC,kCAAkC,aAAa,6CAA6C,cAAc,+BAA+B,2CAA2C,sCAAsC,sCAAsC,iCAAiC,YAAY,mBAAmB,gGAAgG,MAAM,OAAO,WAAW,YAAY,YAAY,qCAAqC,uBAAuB,qGAAqG,YAAY,kBAAkB,OAAO,SAAS,8BAA8B,gBAAgB,24BAA24B,qEAAqE,6EAA6E,gDAAgD,+DAA+D,sCAAsC,8EAA8E,iMAAiM,EAAE,+DAA+D,mDAAmD,eAAe,EAAE,sEAAsE,wDAAwD,qEAAqE,wDAAwD,sCAAsC,iEAAiE,2DAA2D,+DAA+D,yFAAyF,8DAA8D,8EAA8E,mBAAmB,OAAO,kFAAkF,8EAA8E,mBAAmB,qFAAqF,8DAA8D,8EAA8E,mBAAmB,sEAAsE,eAAe,EAAE,sEAAsE,wDAAwD,+DAA+D,2DAA2D,+DAA+D,yFAAyF,8DAA8D,8EAA8E,mBAAmB,OAAO,kFAAkF,8EAA8E,mBAAmB,qFAAqF,8DAA8D,8EAA8E,mBAAmB,0EAA0E,eAAe,EAAE;AACpwN;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,oEAAoE;AACpE,WAAW;AACX,iDAAiD;;AAEjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uEAAuE;AACvE;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;;AAEA,sEAAsE,2CAA2C;;AAEjH,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,wEAAwE,aAAa;AACrF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,8DAA8D,UAAU,WAAW,YAAY,kBAAkB,QAAQ,UAAU,sBAAsB,UAAU,iBAAiB,gBAAgB,WAAW,kBAAkB,eAAe,gEAAgE,WAAW,YAAY,oXAAoX,aAAa,mBAAmB,gBAAgB,wBAAwB,oBAAoB,0HAA0H,eAAe,+DAA+D,WAAW,YAAY,+NAA+N,cAAc,eAAe,oKAAoK,eAAe,4DAA4D,YAAY,sNAAsN,cAAc,eAAe,iLAAiL,cAAc,eAAe,iLAAiL,cAAc,eAAe,oKAAoK,eAAe,+DAA+D,WAAW,YAAY,iNAAiN,eAAe,+DAA+D,WAAW,YAAY,yNAAyN,eAAe,+DAA+D,WAAW,YAAY,iNAAiN,eAAe,+DAA+D,WAAW,YAAY,gOAAgO,eAAe,sCAAsC,gBAAgB,WAAW,WAAW,kNAAkN,eAAe,sCAAsC,yBAAyB,mBAAmB,WAAW,WAAW,6KAA6K,YAAY,gBAAgB,uBAAuB,6KAA6K,WAAW,UAAU,4CAA4C,YAAY,aAAa,eAAe;AAC5/I;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,oDAAoD,mBAAmB;AACvE;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,4DAA4D,qBAAqB,2BAA2B,mBAAmB,eAAe,qCAAqC,qBAAqB,kCAAkC,mBAAmB,oBAAoB,oBAAoB,kBAAkB,2BAA2B,kBAAkB,iBAAiB,qBAAqB;AAC1Y;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,8EAA8E,WAAW;AACzF;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA,aAAa;AACb,4CAA4C;;AAE5C;AACA,2DAA2D;;AAE3D;AACA,2DAA2D;;AAE3D,2DAA2D;;AAE3D,8CAA8C;;AAE9C,sCAAsC;;AAEtC;AACA,2BAA2B;;AAE3B;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,uBAAuB;;AAEvB;AACA,SAAS;;;AAGT,8BAA8B;;AAE9B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA,aAAa;AACb,4CAA4C;;AAE5C;AACA,uDAAuD;;AAEvD;AACA,uDAAuD;;AAEvD,uDAAuD;;AAEvD,8CAA8C;;AAE9C,sCAAsC;;AAEtC;AACA,2BAA2B;;AAE3B;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,uBAAuB;;AAEvB;AACA,SAAS;;;AAGT,8BAA8B;;AAE9B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,qBAAqB;AAChD;;AAEA,6BAA6B,kBAAkB;AAC/C;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,sBAAsB;AAChD;;AAEA,4BAA4B,oBAAoB;AAChD;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,qBAAqB;AAChD;;AAEA,6BAA6B,kBAAkB;AAC/C;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,uBAAuB;AAClD;;AAEA,6BAA6B,sBAAsB;AACnD;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,6CAA6C;AAC7C,8CAA8C;;;AAG9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,0BAA0B;;AAE1B,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,kC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wEAAwE;;AAExE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wEAAwE;;AAExE;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,e;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wDAAwD;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA,wGAAwG;;AAExG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,2LAA2L,yBAAyB,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY;AACvY;AACA,+LAA+L,yBAAyB,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY;AAC3Y,yEAAyE,iFAAiF,OAAO,QAAQ,YAAY,UAAU,gBAAgB,YAAY,YAAY,iEAAiE,WAAW,YAAY,kBAAkB,QAAQ,UAAU,sBAAsB,UAAU,iBAAiB,eAAe,WAAW,kBAAkB,eAAe,WAAW,qEAAqE,eAAe,WAAW,yBAAyB,mBAAmB,wEAAwE,eAAe,8IAA8I,WAAW,YAAY,kLAAkL,kDAAkD,YAAY,6KAA6K,+DAA+D,WAAW,YAAY,gLAAgL,+DAA+D,WAAW,YAAY,8PAA8P,WAAW,YAAY,+HAA+H,eAAe,WAAW,yBAAyB,mBAAmB,4EAA4E,eAAe,+IAA+I,WAAW,YAAY,2MAA2M,YAAY,mNAAmN,WAAW,YAAY,sNAAsN,WAAW,YAAY,wNAAwN,WAAW,YAAY,yNAAyN,WAAW,YAAY,+MAA+M,YAAY,oMAAoM,YAAY,qPAAqP,WAAW,YAAY,mQAAmQ,WAAW,YAAY,wOAAwO,WAAW,YAAY,gHAAgH;AAClwJ,uBAAuB,yBAAyB,gFAAgF,WAAW,YAAY;;AAEvJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,uBAAuB;AACtC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,6BAA6B;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,cAAc;AAC5B,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA,kEAAkE;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,YAAY;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,YAAY;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,SAAS;AACvB,cAAc;AACd;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,MAAM;AACpB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,oCAAa;;AAEzB;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX,yCAAyC,oDAAoD;;;AAG7F;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;;AAGA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qFAAqF;AACrF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA,mEAAmE;AACnE;;AAEA,iBAAiB;;AAEjB,wCAAwC,WAAW;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;;AAEA,2BAA2B;;;AAG3B;AACA;AACA;AACA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,mFAAmF;;AAEnF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;;;AAGjC;AACA;AACA;;AAEA;AACA,eAAe;AACf,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA,2DAA2D;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,WAAW;AACX;AACA,iBAAiB;AACjB;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA,WAAW;AACX;;;AAGA;;AAEA;AACA;AACA,WAAW;;;AAGX,8CAA8C;;;AAG9C;AACA;AACA;AACA;AACA,WAAW,EAAE;;;AAGb;AACA,UAAU;;;AAGV;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,mCAAmC;;AAEnC;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kMAAkM;;AAElM;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,kEAAkE;;AAElE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;;;AAGT;AACA,kEAAkE;;;AAGlE;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;;;AAGb;AACA;AACA;;AAEA,yCAAyC;AACzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,OAAO;AACP,6CAA6C;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yCAAyC;;;AAGzC;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,2CAA2C;AAC3C;;AAEA;AACA;AACA;;AAEA,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;;;AAGjB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;;;AAGf;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,YAAY;AAC7B,iBAAiB,OAAO;AACxB,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,EAAE;AACnB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;AAEP;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe;AACf;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B,cAAc,mBAAmB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,mCAAmC;AACjD;;;AAGA;AACA,0EAA0E,aAAa;AACvF;AACA;;AAEA;AACA;AACA;AACA,uFAAuF;AACvF;;AAEA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB;;;AAGA;AACA;AACA,IAAI;;;AAGJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,wDAAwD;;AAExD;;AAEA;AACA,4EAA4E;;AAE5E;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD;;AAEvD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA,KAAK;;AAEL,mCAAmC;AACnC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA,KAAK;AACL,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,gDAAgD;AACrE;AACA;AACA;AACA,KAAK;AACL;;AAEA,sBAAsB,4CAA4C;AAClE;AACA;AACA;AACA;;AAEA,4DAA4D,MAAM,QAAQ,WAAW,WAAW,UAAU,qMAAqM,SAAS,WAAW,iQAAiQ,WAAW,SAAS,sEAAsE,WAAW,SAAS,0SAA0S,UAAU,SAAS,sEAAsE,UAAU,SAAS;AACxkC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,oCAAa;AACrB,UAAU,oCAAa;AACvB;AACA;AACA;;AAEA;AACA,uBAAuB,gDAAgD;AACvE;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA,mEAAmE;AACnE;;AAEA;AACA,OAAO;AACP;AACA,iCAAiC;;AAEjC;AACA,4CAA4C;AAC5C,OAAO;AACP;AACA;AACA,6CAA6C;;AAE7C,0BAA0B;;AAE1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,gEAAgE;AAChE;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;;;AAGL;AACA,yEAAyE;AACzE,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4B;AACA;AACA,mE;AACA,2CAA2C,wGAAwG;AACnJ;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,a;AACA,SAAS,E;AACT;AACA;AACA;AACA,KAAK,E;AACL,qE;AACA,2CAA2C,wGAAwG;AACnJ;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,a;;AAEA;AACA;AACA,aAAa;AACb;AACA,a;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+EAA+E,YAAY,yBAAyB;AACpH,OAAO;AACP,+EAA+E,YAAY,yBAAyB;AACpH;AACA,KAAK;AACL;;AAEA;AACA,+EAA+E,YAAY,yBAAyB;AACpH,OAAO;AACP,+EAA+E,YAAY,yBAAyB;AACpH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6EAA6E,YAAY,yBAAyB;AAClH,KAAK;AACL,6EAA6E,YAAY,yBAAyB;AAClH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0CAA0C,SAAS;;AAEnD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA,qDAAqD;;AAErD;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B,oCAAoC;;AAEpC;AACA;AACA,gDAAgD;AAChD,wCAAwC;AACxC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;;AAEA;AACA,0FAA0F,aAAa;AACvG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;;AAEA;AACA;AACA,sCAAsC,GAAG;AACzC;AACA;AACA,gBAAgB;AAChB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,YAAY;AACZ,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;;AAEA,gFAAgF,eAAe;AAC/F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,kBAAkB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qFAAqF;AACrF;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;;AAEA,uBAAuB,YAAY;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;AACA,aAAa,YAAY;AACzB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,mBAAmB,aAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B,sEAAsE;;AAEtE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,oCAAoC;;AAEpC;AACA,gHAAgH;;AAEhH;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6LAA6L;;AAE7L;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C,gBAAgB,iBAAiB,2BAA2B,4BAA4B,8BAA8B,+BAA+B,sCAAsC;AACtO;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD,SAAS;AACT,OAAO;AACP,mDAAmD;AACnD;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,mCAAmC;AACnC,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA,mCAAmC;AACnC,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA,mCAAmC;AACnC,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO,YAAY;AAClC,iBAAiB,kBAAkB;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oFAAoF;;AAEpF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,qDAAqD;;AAErD;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,OAAO,YAAY;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,4BAA4B;;AAE5B;AACA,iCAAiC;;AAEjC;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;;AAGA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,6CAA6C;AAC7C;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;AACA,8CAA8C,+BAA+B,8BAA8B,4BAA4B,2BAA2B,eAAe,uBAAuB,WAAW,gBAAgB;AACnO;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC,0CAA0C;;AAE1C,6DAA6D;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,6BAA6B,IAAI;AACjC,qCAAqC,sCAAsC;AAC3E,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,0BAA0B,uBAAuB;AACjD;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C;;AAE1C,4BAA4B;;AAE5B;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK,EAAE;;AAEP;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK,EAAE;;AAEP;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS;;AAEnB,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;;AAEjB,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;;AAEjB,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;;AAEjB,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,UAAU;;AAEpB,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM;;AAEhB,gCAAgC;AAChC,gCAAgC;AAChC,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,QAAQ;AACrB;AACA,UAAU,YAAY;;AAEtB,sCAAsC;AACtC,+BAA+B;AAC/B,8BAA8B;AAC9B,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA,UAAU,SAAS;;AAEnB,yBAAyB,GAAG;AAC5B,mCAAmC;AACnC,4BAA4B;AAC5B,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA,UAAU,QAAQ;;AAElB,2BAA2B;AAC3B,wBAAwB,GAAG;AAC3B,kCAAkC;AAClC,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA,UAAU,SAAS;;AAEnB,gCAAgC;AAChC,mCAAmC;AACnC,2BAA2B;AAC3B,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA,UAAU,WAAW;;AAErB,wCAAwC,GAAG;AAC3C,iCAAiC,GAAG;AACpC,kCAAkC;AAClC,6BAA6B;AAC7B,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAY;AACnC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,MAAM;AACnB;AACA,UAAU,YAAY;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,MAAM;AACnB;AACA,UAAU,WAAW;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,OAAO;AACpB;AACA,UAAU,aAAa;;AAEvB;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA,UAAU,UAAU;;AAEpB;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,OAAO;AACpB;AACA,UAAU,SAAS;;AAEnB,4CAA4C;AAC5C,oCAAoC;AACpC,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa,OAAO;AACpB;AACA,UAAU,WAAW;;AAErB,6CAA6C;AAC7C,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,UAAU,IAAI;;AAEd,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;;AAEtB,cAAc,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,cAAc;AAClE;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;;AAEjB,SAAS,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,cAAc,KAAK;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,yBAAyB;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,QAAQ;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,QAAQ;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,UAAU,SAAS;;AAEnB,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS;;AAEnB;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;;AAEtB;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS;;AAEnB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,6HAA6H,cAAc;AAC3I;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;;AAEzD,wCAAwC,QAAQ,sDAAsD,QAAQ;;AAE9G;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,2EAA2E;AAC3E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,gCAAgC;;;AAGhC;;AAEA;AACA;AACA;AACA;;AAEA,oDAAoD;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yHAAyH;;AAEzH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC,YAAY;AACrD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,sDAAsD;AACtD;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB;AACjC;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,OAAO;AAC1B,qBAAqB,OAAO;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,WAAW;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,WAAW;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B,WAAW;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,qBAAqB,gBAAgB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,mBAAmB,OAAO;AAC1B,qBAAqB,OAAO;AAC5B;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;;AAEzD,wCAAwC,QAAQ,sDAAsD,QAAQ;;AAE9G;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,GAAG;;AAEZ;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS,GAAG;;AAEZ;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,QAAQ;;AAEzD,wCAAwC,QAAQ,sDAAsD,QAAQ;;AAE9G;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,QAAQ;AACR;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,GAAG,MAAM,SAAS;AAChD;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,OAAO,kBAAkB;AACzB,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,6HAA6H,cAAc;AAC3I;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,6HAA6H,cAAc;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,wCAAwC,QAAQ;AACnL;AACA;AACA;AACA,iDAAiD,QAAQ;;AAEzD,wCAAwC,QAAQ,sDAAsD,QAAQ;;AAE9G;AACA;;AAEA;AACA,+BAA+B,6WAA6W;AAC5Y;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;;;AAGL,yCAAyC,uDAAuD,mGAAmG;AACnM;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB,uBAAuB,eAAe,gBAAgB,YAAY,WAAW,oBAAoB,6BAA6B,gBAAgB,oBAAoB,6BAA6B,GAAG,gBAAgB,iBAAiB,GAAG,mBAAmB,yBAAyB,YAAY,aAAa,6BAA6B,GAAG,YAAY,gBAAgB,iBAAiB,uBAAuB,2BAA2B,2BAA2B,uBAAuB,wCAAwC,qBAAqB,wBAAwB,6BAA6B,kBAAkB,GAAG,YAAY,yBAAyB,eAAe,gBAAgB,mBAAmB,oBAAoB,4BAA4B,GAAG,SAAS,eAAe,kBAAkB,uBAAuB,wCAAwC,8BAA8B,GAAG,gBAAgB,6BAA6B,8BAA8B,GAAG,2BAA2B,kCAAkC,6BAA6B,8CAA8C,GAAG,yBAAyB,mCAAmC,8BAA8B,+CAA+C,GAAG,kBAAkB,kCAAkC,GAAG,oBAAoB,kCAAkC,GAAG,uBAAuB,iBAAiB,GAAG,yBAAyB,kBAAkB,GAAG,qBAAqB,uBAAuB,qBAAqB,gBAAgB,iBAAiB,qBAAqB,wBAAwB,yBAAyB,GAAG;AACzmD,4DAA4D,mCAAmC;AAC/F,GAAG,0BAA0B,kBAAkB,GAAG,SAAS,yBAAyB,GAAG,gBAAgB,yBAAyB,aAAa,cAAc,oBAAoB,GAAG,2BAA2B,2BAA2B,GAAG,4BAA4B,qBAAqB,GAAG,eAAe,yBAAyB,GAAG,+CAA+C,iBAAiB,8BAA8B,GAAG;AAC3a;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2EAA2E;;AAE3E;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;;AAG7C;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6DAA6D;;AAE7D,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;;AAEA,mBAAmB,YAAY;AAC/B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA,qBAAqB;AACrB,KAAK;AACL;AACA;AACA,mDAAmD;AACnD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,6CAA6C;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA;AACA;AACA,SAAS;;AAET;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAiE;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA,+DAA+D;AAC/D;AACA,OAAO;AACP,KAAK;AACL;AACA,0DAA0D;AAC1D;AACA,OAAO;AACP,KAAK;AACL;AACA,6DAA6D;AAC7D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,iCAAiC,SAAS;AAC1C;AACA,MAAM;AACN,kCAAkC,SAAS;AAC3C;AACA,MAAM;AACN,iCAAiC,SAAS;AAC1C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,4BAA4B,SAAS;AACrC;AACA,MAAM;AACN,6BAA6B,SAAS;AACtC;AACA,MAAM;AACN,4BAA4B,SAAS;AACrC;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,+BAA+B,SAAS;AACxC;AACA,MAAM;AACN,gCAAgC,SAAS;AACzC;AACA,MAAM;AACN,+BAA+B,SAAS;AACxC;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,qCAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,sCAAsC,UAAU;AAChD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,iCAAiC,kBAAkB;AACnD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,mCAAmC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,oCAAoC,kBAAkB;AACtD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,iEAAiE;AACjE,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,qEAAqE;AACrE;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB;AACnB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA,mIAAmI;;AAEnI,sGAAsG;;AAEtG;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,sBAAsB;;AAEtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA,qFAAqF;;AAErF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,+DAA+D;;AAE/D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB;AACpB;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;;AAGxC;AACA,gGAAgG;;AAEhG;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,qCAAqC;AACrC;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,qCAAqC;AACrC;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,kBAAkB,2BAA2B,GAAG,cAAc,2BAA2B,iBAAiB,GAAG,qBAAqB,uBAAuB,sCAAsC,GAAG,oBAAoB,yBAAyB,aAAa,cAAc,GAAG,gCAAgC,yBAAyB,kBAAkB,sBAAsB,wBAAwB,GAAG,2CAA2C,iCAAiC,kCAAkC,gBAAgB,kBAAkB,GAAG,yCAAyC,+BAA+B,eAAe,kCAAkC,gBAAgB,GAAG,kBAAkB,uBAAuB,GAAG,mBAAmB,kBAAkB,GAAG;AAC5vB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,uCAAuC,EAAE;AACzC;;AAEA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uFAAuF;AACvF;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,+CAA+C;AAC/C;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yBAAyB;AACnD,0BAA0B,yBAAyB;AACnD,0BAA0B,yBAAyB;AACnD;AACA,sCAAsC,iBAAiB;AACvD,sCAAsC,iBAAiB;AACvD,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,gCAAgC,SAAS;AACzC;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,2BAA2B,oBAAoB;AAC/C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,8BAA8B,iBAAiB;AAC/C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,oCAAoC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oCAAoC,UAAU;AAC9C;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD,0CAA0C,OAAO;AACjD;AACA,uDAAuD;AACvD,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,kCAAkC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,mCAAmC,kBAAkB;AACrD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,iCAAiC,2BAA2B,yBAAyB,yCAAyC,+CAA+C,wBAAwB,sBAAsB,2BAA2B,qCAAqC,WAAW,oCAAoC,6BAA6B,0BAA0B,2BAA2B,wCAAwC,WAAW,uCAAuC,iCAAiC,kDAAkD,8BAA8B,4BAA4B,WAAW;AACpqB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yEAAyE;AACzE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,SAAS;AACT,OAAO;;AAEP,+CAA+C;AAC/C;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,mBAAmB;AACnC;AACA;AACA,sCAAsC,kBAAkB;AACxD;AACA,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C,0BAA0B,kBAAkB;AAC5C,0BAA0B,kBAAkB;AAC5C;AACA,0BAA0B,aAAa;AACvC,0BAA0B,aAAa;AACvC,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,iCAAiC;AAC9C;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,kCAAkC,SAAS;AAC3C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;AACA;AACA,kDAAkD,kBAAkB;AACpE,4BAA4B,0BAA0B;AACtD;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,gCAAgC,iBAAiB;AACjD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,uCAAuC,UAAU;AACjD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,iCAAiC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,kBAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,oCAAoC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,qCAAqC,kBAAkB;AACvD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gDAAgD;AAChD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA,sCAAsC,kCAAkC;AACxE;AACA;AACA,sCAAsC,sCAAsC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kCAAkC;AAC5D,0BAA0B,kCAAkC;AAC5D,0BAA0B,kCAAkC;AAC5D;AACA;AACA,sCAAsC,sCAAsC;AAC5E,sCAAsC,sCAAsC;AAC5E,sCAAsC,sCAAsC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,iCAAiC;AAC9C;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,kCAAkC,SAAS;AAC3C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,6BAA6B,wBAAwB;AACrD,iCAAiC,QAAQ;AACzC,kCAAkC,SAAS;AAC3C,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE,gCAAgC,iBAAiB;AACjD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,sCAAsC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,UAAU;AAChD;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,YAAY,iCAAiC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,kBAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,oCAAoC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,qCAAqC,kBAAkB;AACvD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE;AACxE;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,mBAAmB;AACnC;AACA;AACA,qCAAqC,kCAAkC;AACvE;AACA;AACA;AACA;AACA;AACA,0BAA0B,kCAAkC;AAC5D,0BAA0B,kCAAkC;AAC5D,0BAA0B,kCAAkC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE,iCAAiC,SAAS;AAC1C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE,4BAA4B,0BAA0B;AACtD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE,+BAA+B,iBAAiB;AAChD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,oCAAoC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qCAAqC,UAAU;AAC/C;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,kCAAkC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,oCAAoC,kBAAkB;AACtD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;;AAGP,4DAA4D;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA,kDAAkD,iBAAiB;AACnE,+BAA+B,SAAS;AACxC;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE,2BAA2B,qCAAqC;AAChE;AACA;AACA,6CAA6C,iBAAiB;AAC9D,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE,8BAA8B,iBAAiB;AAC/C;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU,wBAAwB;AACrE;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,+DAA+D,wBAAwB,6BAA6B,+BAA+B;AACnJ,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,8DAA8D;AAC9D;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,8DAA8D;AAC9D;AACA,OAAO;AACP,KAAK;AACL;AACA,yDAAyD;AACzD;AACA,OAAO;AACP,KAAK;AACL;AACA,4DAA4D;AAC5D;AACA,OAAO;AACP,KAAK;AACL;AACA,8DAA8D;AAC9D;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,yDAAyD;AACzD;AACA,OAAO;AACP,KAAK;AACL;AACA,4DAA4D;AAC5D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,6BAA6B,6BAA6B;AAC1D;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,kCAAkC;AAC/C;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,6BAA6B,6BAA6B;AAC1D;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD,MAAM;AACN,yBAAyB,2CAA2C;AACpE;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sCAAsC,sBAAsB;AAC5D;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA,oCAAoC,oBAAoB;AACxD;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,gJAAgJ;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,uBAAuB,sBAAsB,GAAG,qCAAqC,uBAAuB,GAAG,mBAAmB,uBAAuB,mBAAmB,iBAAiB,GAAG,cAAc,yBAAyB,aAAa,cAAc,GAAG,iBAAiB,yBAAyB,mBAAmB,6BAA6B,uCAAuC,yBAAyB,gCAAgC,GAAG,WAAW,2BAA2B,GAAG,gBAAgB,2BAA2B,iBAAiB,GAAG,4BAA4B,uBAAuB,sCAAsC,GAAG;AACxqB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,yBAAyB,YAAY;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA,SAAS;;;AAGT;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uEAAuE;;AAEvE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,6DAA6D,2BAA2B,GAAG;AAC3F;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA,6EAA6E;AAC7E;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB,cAAc,OAAO;AACrB,eAAe,mBAAmB;AAClC;AACA;AACA;AACA,2CAA2C,yBAAyB;AACpE;AACA,2CAA2C,iBAAiB;AAC5D;AACA,2CAA2C,uBAAuB;AAClE,2CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA,yBAAyB,yBAAyB;AAClD,yBAAyB,yBAAyB;AAClD,yBAAyB,yBAAyB;AAClD;AACA,2CAA2C,iBAAiB;AAC5D,2CAA2C,iBAAiB;AAC5D,2CAA2C,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,oCAAoC,mBAAmB;AACvD,uCAAuC,aAAa,MAAM,aAAa;AACvE,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,2CAA2C;AACvD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC,mBAAmB;AACtD,sCAAsC,aAAa,MAAM,aAAa;AACtE,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,YAAY,sCAAsC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC,mBAAmB;AACtD,sCAAsC,aAAa,MAAM,aAAa;AACtE,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,YAAY,yCAAyC;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC,mBAAmB;AACtD,sCAAsC,aAAa,MAAM,aAAa;AACtE,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,mCAAmC,uBAAuB,sBAAsB,GAAG,gDAAgD,sBAAsB,GAAG;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oFAAoF;;AAEpF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,0EAA0E;AAC1E;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,oCAAoC;AACpC;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;;AAEA;AACA,iEAAiE;AACjE;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA;AACA;AACA,0BAA0B,yBAAyB;AACnD,0BAA0B,yBAAyB;AACnD,0BAA0B,yBAAyB;AACnD;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA,yFAAyF;AACzF;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,kCAAkC,SAAS;AAC3C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,6BAA6B,SAAS;AACtC;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,gCAAgC,SAAS;AACzC;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,uCAAuC,UAAU;AACjD;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,kCAAkC,UAAU;AAC5C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,qCAAqC,UAAU;AAC/C;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,4BAA4B,yCAAyC;AACrE;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,iCAAiC,qDAAqD;AACtF;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC,GAAG,IAAI;AACP;AACA,mCAAmC;AACnC,GAAG,IAAI;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;;;AAGzB;AACA,wCAAwC,QAAQ,gDAAgD,uBAAuB,yBAAyB;AAChJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;;;AAGvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,OAAO;AACP;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yDAAyD,yBAAyB;AAClF;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,gBAAgB,sCAAsC,iBAAiB,EAAE;AACrF,2BAA2B,uDAAuD;AAClF;AACA;;AAEA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;;AAEA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,QAAQ;;AAEzD,wCAAwC,QAAQ,sDAAsD,QAAQ;;AAE9G;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,QAAQ;AACR;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB,uBAAuB;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,gCAAgC;AAChC,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wHAAwH,6BAA6B,uHAAuH,eAAe,YAAY,gBAAgB,4DAA4D,WAAW,YAAY,0DAA0D,UAAU,WAAW,YAAY,aAAa,sBAAsB,2QAA2Q,UAAU,OAAO,WAAW,YAAY,WAAW,gBAAgB,2LAA2L,YAAY,gBAAgB,WAAW,sEAAsE,WAAW,YAAY,kNAAkN,YAAY,gBAAgB,WAAW,6DAA6D,WAAW,YAAY,meAAme,gBAAgB,gBAAgB,aAAa,sBAAsB,mBAAmB,gFAAgF,YAAY,mBAAmB,sBAAsB,gGAAgG,aAAa,kHAAkH,aAAa,+GAA+G,aAAa,8GAA8G,aAAa,iHAAiH,aAAa,qIAAqI,aAAa,4JAA4J,yFAAyF,iBAAiB,oBAAoB,0gBAA0gB,ySAAyS,WAAW,YAAY,uKAAuK,UAAU,WAAW,YAAY,iDAAiD,iPAAiP,MAAM,OAAO,WAAW,YAAY,qMAAqM,UAAU,WAAW,YAAY,aAAa,qBAAqB,qOAAqO,UAAU,OAAO,WAAW,YAAY,WAAW,gBAAgB,4LAA4L,WAAW,kBAAkB,MAAM,+MAA+M,iBAAiB,mMAAmM,iBAAiB,yFAAyF,UAAU,WAAW,YAAY,iDAAiD,iPAAiP,MAAM,OAAO,WAAW,YAAY,qMAAqM,UAAU,WAAW,YAAY,aAAa,qBAAqB,qOAAqO,UAAU,OAAO,WAAW,YAAY,WAAW,gBAAgB,gLAAgL,gBAAgB,mBAAmB,qIAAqI,umBAAumB,WAAW,UAAU,wDAAwD,YAAY,aAAa,eAAe;AAC5uP,6CAA6C;;AAE7C;AACA,mCAAmC;;AAEnC;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX,8CAA8C;;AAE9C;AACA,yCAAyC;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA;;AAEA,sFAAsF;AACtF;;;AAGA;AACA;AACA,WAAW;AACX;AACA,WAAW;;;AAGX;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;;AAGA;AACA,kFAAkF;;AAElF,yFAAyF;AACzF;;AAEA,qFAAqF;;AAErF;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;;AAElB,yCAAyC;;;AAGzC;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gE;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kGAAkG,0JAA0J;;AAE5P;AACA,mEAAmE;;AAEnE;AACA;AACA;AACA,6BAA6B;AAC7B;;AAEA,4CAA4C;;;AAG5C;;AAEA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,iFAAiF;;AAEjF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX,4CAA4C;;AAE5C;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA,kFAAkF;AAClF,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;;;AAGX,wCAAwC;;;AAGxC,yCAAyC;;;AAGzC;;AAEA;;AAEA;AACA,SAAS,EAAE;;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2FAA2F;;AAE3F;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2FAA2F;;AAE3F;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS,EAAE;;AAEX,sEAAsE;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,8DAA8D;;AAE9D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,iFAAiF;AACjF,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,SAAS,EAAE;;AAEX;AACA;AACA;AACA,kFAAkF;AAClF,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,yGAAyG;AACzG;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,wDAAwD;AACxD,WAAW;;;AAGX,wCAAwC;;;AAGxC;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wEAAwE;;;AAGxE;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;;AAEpE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;;AAEnD;AACA,2EAA2E;AAC3E;;AAEA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;;AAExE;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA,8EAA8E;;AAE9E;AACA;AACA,aAAa;AACb;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,+EAA+E;AAC/E;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gDAAgD;AAChD;AACA;AACA,oE;AACA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA,aAAa;;;AAGb;AACA;AACA,+BAA+B;;AAE/B,0EAA0E;;AAE1E,+BAA+B,oBAAoB;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0EAA0E;;AAE1E;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAA0D;;AAE1D;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,+EAA+E;AAC/E,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA,yBAAyB,YAAY;AACrC;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,YAAY;AACnC;;AAEA;AACA;AACA;;AAEA,6EAA6E,2BAA2B;;AAExG;AACA;;AAEA;AACA;AACA,uBAAuB,YAAY;AACnC;;AAEA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA,iCAAiC,2BAA2B;AAC5D,eAAe;AACf,yEAAyE;;AAEzE;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,8CAA8C;AAC7D;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;;;AAGA,0CAA0C;;AAE1C;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA,wDAAwD;;AAExD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA,oBAAoB;;AAEpB;AACA,wIAAwI,kBAAkB;AAC1J;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA,eAAe;;AAEf,iBAAiB,mBAAmB;AACpC,sBAAsB;;AAEtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,KAAK;;;AAGL,iEAAiE;;AAEjE,wCAAwC;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qHAAqH;;AAErH;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,IAAI;;;AAGJ,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+OAA+O,YAAY,uPAAuP,YAAY,4PAA4P,YAAY,qLAAqL,qaAAqa,gBAAgB,mBAAmB,WAAW,kIAAkI,+JAA+J,uIAAuI,iBAAiB,mBAAmB,4hBAA4hB,WAAW,UAAU,oDAAoD,YAAY,aAAa,eAAe;AACv+E;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,qEAAqE;;;AAGrE;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;;AAGX;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;;;AAGb;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;;;AAGb,iCAAiC;;AAEjC,0CAA0C;;;AAG1C;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8XAA8X;AAC9X;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe,UAAU;;AAEzB,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe,UAAU;;AAEzB;;AAEA,mCAAmC;;;AAGnC,0CAA0C;;;AAG1C;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iNAAiN,YAAY,gBAAgB,sWAAsW,aAAa,UAAU,sBAAsB,kBAAkB,6FAA6F,OAAO,QAAQ,YAAY,UAAU,0GAA0G,OAAO,QAAQ,WAAW,YAAY,YAAY,qCAAqC,kCAAkC,SAAS,sBAAsB,8EAA8E,YAAY,kBAAkB,OAAO,SAAS,8BAA8B,gBAAgB;AAChsC;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA,yDAAyD;AACzD;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4DAA4D;AAC5D;AACA,qF;AACA;AACA,sGAAsG,MAAM,OAAO,UAAU,WAAW,gBAAgB,kBAAkB;AAC1K,iF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,iEAAiE;AACjE;AACA,wEAAwE;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,4DAA4D;AAC5D,gEAAgE;AAChE,kEAAkE;AAClE,iE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA,wHAAwH;AACxH,SAAS;AACT;AACA;AACA;AACA;;AAEA,kDAAkD;;AAElD,gIAAgI;;AAEhI,wIAAwI;AACxI;AACA;;AAEA;;AAEA,gCAAgC,GAAG;AACnC;AACA,sBAAsB,MAAM,KAAK;AACjC,uKAAuK;AACvK;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX,wCAAwC;;;AAGxC,wCAAwC;;;AAGxC;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+MAA+M,YAAY,gBAAgB,wNAAwN,aAAa,UAAU,sBAAsB,kBAAkB,6FAA6F,OAAO,QAAQ,YAAY,UAAU,oKAAoK,mBAAmB,OAAO,QAAQ,WAAW,YAAY,YAAY,qCAAqC,kCAAkC,sBAAsB,4DAA4D,YAAY,kBAAkB,OAAO,SAAS,8BAA8B,gBAAgB,yZAAyZ;AAC3/C;;AAEA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;;AAEA;;AAEA;AACA,sGAAsG,MAAM,OAAO,UAAU,WAAW,gBAAgB,kBAAkB;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,0DAA0D;AAC1D,8DAA8D;AAC9D,gEAAgE;AAChE,+D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,gCAAgC,GAAG;AACnC,wDAAwD;AACxD;AACA,kE;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC,0EAA0E;;AAE1E,kCAAkC,GAAG;;AAErC,2BAA2B,SAAS;AACpC,mLAAmL;AACnL,aAAa;;;AAGb,qCAAqC;AACrC;;AAEA;AACA;AACA;;AAEA,0CAA0C;;;AAG1C,0CAA0C;;;AAG1C;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;;AAEX;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA,gBAAgB;;;AAGhB;;AAEA;;AAEA;;AAEA;AACA,gFAAgF,YAAY,aAAa,+BAA+B;;AAExI;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iNAAiN,YAAY,gBAAgB,wNAAwN,4GAA4G,mBAAmB,0HAA0H,aAAa,mBAAmB,aAAa;AAC3uB;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA,aAAa;;;AAGb;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;;AAEA,0CAA0C;;;AAG1C;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2EAA2E;AAC3E,+JAA+J,YAAY,gBAAgB,gLAAgL,yFAAyF,OAAO,QAAQ,YAAY,UAAU,iBAAiB,YAAY,YAAY,6HAA6H,WAAW,YAAY,kBAAkB,QAAQ,UAAU,sBAAsB,UAAU,iBAAiB,eAAe,WAAW,kBAAkB,eAAe,WAAW,msBAAmsB,s4BAAs4B,iNAAiN,uSAAuS,gaAAga,sMAAsM,s9BAAs9B,qTAAqT,uOAAuO,sMAAsM,wTAAwT,0OAA0O,+KAA+K,0JAA0J,+JAA+J,uKAAuK,0KAA0K;AAC3/M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,wBAAwB;AACnD;;AAEA,6BAA6B,sBAAsB;AACnD;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,wBAAwB;AACnD;;AAEA,6BAA6B,sBAAsB;AACnD;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,wBAAwB;AACnD;;AAEA,6BAA6B,sBAAsB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,wBAAwB;AACjD;;AAEA,2BAA2B,sBAAsB;AACjD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS,EAAE;;AAEX;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;;AAEA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;;AAEA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;;AAEA,yBAAyB,wBAAwB;AACjD;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;;AAEA,yBAAyB,wBAAwB;AACjD;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;;AAEA,yBAAyB,wBAAwB;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG,GAAG;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD;;;AAGpD;;AAEA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,6EAA6E,gBAAgB,aAAa,eAAe,MAAM,SAAS,WAAW,YAAY;AAC/J;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;;;AAGX,8BAA8B;;AAE9B;;AAEA;AACA;AACA,WAAW;;;AAGX,8BAA8B;;AAE9B;AACA,SAAS;AACT,mCAAmC;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT,gCAAgC;;AAEhC;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oNAAoN,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY;;AAEvY;AACA,wEAAwE,+CAA+C,eAAe,gBAAgB,iKAAiK,YAAY,6QAA6Q,YAAY,sRAAsR,YAAY;AAC93B;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uIAAuI,YAAY,kBAAkB;AACrK;AACA,sDAAsD;;AAEtD;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;;AAEA;;AAEA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mNAAmN,cAAc,SAAS,UAAU,eAAe,uCAAuC,+DAA+D,WAAW,YAAY;AAChY;AACA,4DAA4D;;AAE5D;AACA;AACA;;AAEA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wNAAwN,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY;;AAE3Y;AACA,uwBAAuwB,eAAe,gBAAgB,uKAAuK,YAAY,mRAAmR,YAAY,gRAAgR,YAAY,8QAA8Q,YAAY,qRAAqR,YAAY,0QAA0Q,YAAY,4QAA4Q,YAAY;AAC7nF;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA,SAAS,EAAE;AACX;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kCAAkC;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,oCAAoC;AAChF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;;;AAGX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;;AAGX;AACA;AACA,mDAAmD;AACnD,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;;AAEA,+CAA+C;;AAE/C;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kGAAkG,kBAAkB;AACpH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA,SAAS;AACT;AACA;AACA;;AAEA,4DAA4D;AAC5D;;AAEA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC;;AAEvC;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA,2EAA2E,MAAM,OAAO,WAAW,YAAY,iCAAiC,WAAW;AAC3J,WAAW;AACX,2EAA2E,MAAM,OAAO,WAAW,YAAY,sCAAsC,WAAW;AAChK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;;AAEA;AACA;;AAEA,wBAAwB,QAAQ;AAChC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,kBAAkB,YAAY;AAC9B;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gCAAgC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kBAAkB;AACpF;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iCAAiC;AACpF,0HAA0H,mBAAmB,EAAE;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0BAA0B,EAAE;AACjE,2CAA2C,eAAe;AAC1D;AACA;AACA;AACA;AACA;AACA,gEAAgE,+DAA+D;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;;AAEH,kCAAkC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEnjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,yCAAyC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAE7Q,mDAAmD,0CAA0C,0DAA0D,EAAE;;AAEzJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;;;AAGA;AACA;;;AAGA;;AAEA;AACA,iBAAiB,OAAO,WAAW;AACnC,iBAAiB,QAAQ;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0BAA0B;AAC9E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uFAAuF,iBAAiB;AACxG;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,0BAA0B;;AAE5E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB,mBAAmB,EAAE;AACrB;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,wBAAwB;AACzC,mBAAmB;AACnB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,0BAA0B;AAC3E;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;;AAEA,yCAAyC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAE7Q;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gEAAgE,iBAAiB;;AAEjF;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,+BAA+B;AACrF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc;AACd;AACA;AACA,sFAAsF,aAAa;AACnG;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,wEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET,YAAY;AACZ,GAAG;AACH;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA,uBAAuB,6BAA6B;AACpD;AACA,+JAA+J;AAC/J,WAAW;AACX,+JAA+J;AAC/J;AACA;;AAEA;AACA;;AAEA;;AAEA,iBAAiB,SAAS;AAC1B;AACA,sDAAsD,UAAU;AAChE,SAAS;AACT,sDAAsD,UAAU;AAChE;AACA;;AAEA;;AAEA,iBAAiB,QAAQ;AACzB;AACA,yDAAyD,UAAU;AACnE,SAAS;AACT,yDAAyD,UAAU;AACnE;AACA;;AAEA,+DAA+D,aAAa,sBAAsB,yKAAyK,uBAAuB,kBAAkB,oDAAoD,MAAM,OAAO,WAAW,YAAY,aAAa,sBAAsB,6OAA6O,oHAAoH,cAAc,6BAA6B,WAAW,YAAY,iBAAiB,eAAe,kBAAkB,uJAAuJ,WAAW,YAAY,iBAAiB,eAAe,6JAA6J,YAAY,iBAAiB,kBAAkB,2JAA2J,WAAW,YAAY,iBAAiB,eAAe,iEAAiE,WAAW,YAAY,+LAA+L,aAAa,eAAe,iBAAiB,YAAY,sBAAsB,eAAe,kBAAkB,wDAAwD,MAAM,OAAO,WAAW,YAAY,aAAa,sBAAsB,eAAe,gBAAgB,uKAAuK,MAAM,OAAO,WAAW,YAAY,gBAAgB,oHAAoH,YAAY,eAAe,eAAe,8GAA8G,eAAe,+DAA+D;AAC1kF,sGAAsG,8CAA8C,UAAU,yFAAyF,OAAO,QAAQ,YAAY,YAAY,wBAAwB,yQAAyQ,uBAAuB,kBAAkB,4DAA4D,MAAM,OAAO,WAAW,YAAY,aAAa,sBAAsB,qRAAqR,4HAA4H,cAAc,6BAA6B,WAAW,YAAY,iBAAiB,eAAe,kBAAkB,+JAA+J,WAAW,YAAY,iBAAiB,eAAe,qKAAqK,YAAY,iBAAiB,kBAAkB,mKAAmK,WAAW,YAAY,iBAAiB,eAAe,iEAAiE,WAAW,YAAY,uNAAuN,aAAa,eAAe,iBAAiB,YAAY,sBAAsB,eAAe,kBAAkB,gEAAgE,MAAM,OAAO,WAAW,YAAY,aAAa,sBAAsB,eAAe,gBAAgB,+LAA+L,MAAM,OAAO,WAAW,YAAY,gBAAgB,oIAAoI,YAAY,eAAe,eAAe,sHAAsH,eAAe,+DAA+D;AAC9hG,yGAAyG,8CAA8C,UAAU,mIAAmI,OAAO,QAAQ,YAAY,YAAY,wBAAwB,sPAAsP,iBAAiB;AAC1mB;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,kDAAkD;;AAElD,wCAAwC;;AAExC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oDAAoD,mCAAmC,kBAAkB,MAAM,OAAO,EAAE;;AAExH;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;;AAEA,qCAAqC;;AAErC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC;;;AAGnC;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA,iGAAiG;;AAEjG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA,SAAS;AACT,OAAO;AACP,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,0CAA0C;;;AAG1C;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG,GAAG;;;AAGN;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA,8BAA8B,EAAE,UAAU,EAAE,UAAU,EAAE;AACxD;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;AACA;;AAEA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA,4CAA4C;;AAE5C;AACA,mCAAmC;;AAEnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,SAAS;AAC1B;;AAEA,mBAAmB,SAAS;AAC5B;;AAEA,iDAAiD;;;AAGjD,6CAA6C;;;AAG7C;AACA,qCAAqC;;AAErC;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B,wCAAwC;;AAExC;AACA,8CAA8C;;AAE9C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA,mBAAmB,YAAY;AAC/B;;AAEA,yCAAyC;;;AAGzC;;AAEA,mDAAmD;;AAEnD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B,wCAAwC;;AAExC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA,mBAAmB,YAAY;AAC/B;;AAEA,0CAA0C;;;AAG1C;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB,iDAAiD,8BAA8B,4DAA4D;AAC3I;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,GAAG;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,qBAAqB,qCAAqC;AAC1D,8QAA8Q,WAAW,YAAY,YAAY;AACjT;;AAEA,qHAAqH,UAAU,yFAAyF,OAAO,QAAQ,YAAY,YAAY,wBAAwB,0IAA0I,gBAAgB,mBAAmB,qMAAqM,YAAY,kCAAkC,kBAAkB,iBAAiB,+DAA+D,WAAW,YAAY,kXAAkX,cAAc,gBAAgB,mfAAmf,YAAY,gBAAgB,iBAAiB,eAAe,kRAAkR,YAAY;AAC7gE;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;AAE5D;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;AAE5D;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;;AAExE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG;;AAEnG;;AAEA;AACA;AACA;;AAEA;AACA,oFAAoF;;AAEpF;AACA;;AAEA;;AAEA,yBAAyB,8BAA8B;AACvD,oLAAoL,WAAW,YAAY,UAAU,YAAY,oGAAoG,WAAW,YAAY;AAC5V;;AAEA;AACA,SAAS;;;AAGT;;AAEA;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA,WAAW;AACX,SAAS,EAAE;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA,SAAS;;;AAGT,0BAA0B;;AAE1B;;AAEA;AACA;AACA;;AAEA,yBAAyB,6BAA6B;AACtD,iLAAiL,WAAW,YAAY,UAAU,YAAY,oGAAoG,WAAW,YAAY;AACzV;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA,WAAW;AACX,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0EAA0E,6DAA6D,yCAAyC;AAChL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG,GAAG;;;AAGN;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,uBAAuB;AACtC;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,EAAE,UAAU,EAAE;AAC/C,8BAA8B,EAAE,UAAU,EAAE;AAC5C;AACA,2BAA2B,IAAI,SAAS,EAAE,GAAG,IAAI;AACjD;AACA,2BAA2B,IAAI,SAAS,EAAE,GAAG,IAAI;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kIAAkI;;AAElI;AACA;AACA;AACA;AACA;;AAEA;AACA,0DAA0D;;AAE1D;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP,8CAA8C;;AAE9C;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8CAA8C;;AAE9C;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iNAAiN,WAAW,YAAY,kBAAkB,QAAQ,UAAU,sBAAsB,UAAU,iBAAiB,eAAe,WAAW,kBAAkB,eAAe,WAAW,mKAAmK,WAAW,gBAAgB,yLAAyL,aAAa,WAAW,YAAY,mBAAmB,gBAAgB,iBAAiB,kBAAkB,iKAAiK,WAAW,gBAAgB,8MAA8M,mBAAmB,qBAAqB,gBAAgB,eAAe,oBAAoB,YAAY,mBAAmB;AACx2C;AACA;AACA;AACA;AACA;;AAEA,iFAAiF;;;AAGjF;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,wEAAwE;;AAExE;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,yCAAyC;AACzC;;AAEA;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA,SAAS;AACT;AACA;AACA,+GAA+G;;AAE/G;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,slBAAslB,iBAAiB,WAAW,82BAA82B,2uBAA2uB,kvBAAkvB,qvBAAqvB,kvBAAkvB,uwBAAuwB,igBAAigB;AAC5qL,yCAAyC;;AAEzC;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,2CAA2C;;;AAG3C;AACA,uCAAuC;;AAEvC;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA,6CAA6C,+CAA+C;;AAE5F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,kBAAkB,sIAAsI,yGAAyG,klBAAklB,4GAA4G,wlBAAwlB,0GAA0G,olBAAolB,2GAA2G,0kBAA0kB,kBAAkB,sIAAsI,yGAAyG,8oBAA8oB,4GAA4G,opBAAopB,0GAA0G,gpBAAgpB,2GAA2G,soBAAsoB,kBAAkB,sJAAsJ,gHAAgH,0PAA0P,WAAW,iHAAiH;AAChtN,yCAAyC;;AAEzC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kBAAkB,iBAAiB,+JAA+J,qMAAqM,qbAAqb,2kBAA2kB,kBAAkB,iBAAiB,+OAA+O,2MAA2M,wbAAwb,mrBAAmrB,iNAAiN,2bAA2b,urBAAurB,6MAA6M,ybAAyb,orBAAorB,+MAA+M,0bAA0b;AACvxM,yCAAyC;;AAEzC;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,0CAA0C;;AAE1C;AACA;AACA,SAAS;AACT,0CAA0C;;AAE1C;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA,SAAS;AACT,6CAA6C;;AAE7C;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;AACA,SAAS;AACT,gDAAgD;;AAEhD;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,8CAA8C;;AAE9C;AACA;AACA,SAAS;AACT,8CAA8C;;AAE9C;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA,SAAS;AACT,+CAA+C;;AAE/C;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,iTAAiT,8yBAA8yB,8rBAA8rB,8kBAA8kB,yiCAAyiC,+gBAA+gB,6tBAA6tB,iuBAAiuB,6MAA6M,sHAAsH,yMAAyM,qHAAqH,6VAA6V,WAAW,UAAU;AAC56M;AACA,2HAA2H,UAAU,sBAAsB,kBAAkB,6FAA6F,OAAO,QAAQ,YAAY,UAAU,6GAA6G,YAAY,aAAa,kBAAkB,4EAA4E,YAAY,kBAAkB,MAAM,OAAO,aAAa;AAC3kB;AACA,6EAA6E;;AAE7E;AACA;AACA,2CAA2C;;;AAG3C;;AAEA;AACA;AACA,4CAA4C;;AAE5C,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;;;AAGT;;AAEA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,iDAAiD;;AAEjD,wCAAwC;;;AAGxC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa,EAAE;;AAEf;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,kBAAkB,WAAW,+GAA+G,kBAAkB,2MAA2M,4FAA4F,kBAAkB,WAAW,4HAA4H,6MAA6M,sHAAsH,+MAA+M,sHAAsH,mNAAmN,sHAAsH,qNAAqN;AACl0D;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iBAAiB,WAAW,+GAA+G,qhBAAqhB,qhBAAqhB,uhBAAuhB,4hBAA4hB,gVAAgV;AACrnF,yCAAyC;;AAEzC;AACA;AACA,2CAA2C;;;AAG3C;AACA,0DAA0D;;AAE1D;;AAEA,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,uCAAuC;;AAEvC;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,YAAY;AACrC;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iBAAiB,+GAA+G,wHAAwH,6fAA6f,iBAAiB,WAAW,8GAA8G,8LAA8L,weAAwe,oLAAoL,2ZAA2Z,qMAAqM,4jBAA4jB,6LAA6L,wiBAAwiB,iMAAiM;AACx1H;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iBAAiB,WAAW,gHAAgH,0fAA0f,8qBAA8qB,irBAAirB,urBAAurB,0pBAA0pB,kBAAkB,WAAW,8GAA8G;AAC9/G;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iBAAiB,+GAA+G,ySAAyS,iBAAiB,WAAW,iHAAiH,0LAA0L,sHAAsH,mTAAmT,kMAAkM,qHAAqH,oMAAoM,qHAAqH,qMAAqM,6JAA6J,8LAA8L,qHAAqH,+SAA+S,4LAA4L;AACt8F;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qCAAqC;;AAErC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iBAAiB,WAAW,mHAAmH,oVAAoV,wVAAwV,mQAAmQ,sQAAsQ,mQAAmQ,sQAAsQ,mQAAmQ,sQAAsQ,mQAAmQ,WAAW;AACjqF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,sCAAsC;;;AAGtC;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iBAAiB,+GAA+G,4wEAA4wE,klEAAklE,sHAAsH,wlEAAwlE,qHAAqH,oUAAoU;AAClqO;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;;AAGT;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;;;AAGT;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;;;AAGT;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;;;AAGT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6MAA6M,WAAW,aAAa,kBAAkB,QAAQ,SAAS,sBAAsB,aAAa,mBAAmB,gBAAgB,4BAA4B,gCAAgC,cAAc,gJAAgJ,WAAW,YAAY,kBAAkB,SAAS,WAAW,sBAAsB,UAAU,iBAAiB,gBAAgB,kBAAkB,eAAe,kDAAkD,YAAY,6IAA6I,WAAW,UAAU,WAAW,YAAY,UAAU,4IAA4I,aAAa,wBAAwB,gBAAgB,aAAa,kBAAkB,4IAA4I,YAAY,gBAAgB,kBAAkB,kBAAkB,QAAQ,SAAS,sBAAsB,mCAAmC,YAAY,0IAA0I,iBAAiB,i4BAAi4B,YAAY,irDAAirD,eAAe,kBAAkB,kKAAkK,eAAe,kBAAkB,iKAAiK,eAAe,kBAAkB,+JAA+J,eAAe,kBAAkB,iKAAiK,eAAe,kBAAkB,iKAAiK,eAAe,kBAAkB,0LAA0L,eAAe,kBAAkB,2LAA2L,eAAe,kBAAkB,yLAAyL,eAAe,kBAAkB,4LAA4L,eAAe,kBAAkB,4LAA4L,eAAe,kBAAkB;AACxtM;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,qFAAqF,OAAO;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC,WAAW;AACX,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,85BAA85B,+CAA+C,eAAe,kKAAkK,YAAY,6QAA6Q,YAAY,sRAAsR,YAAY,qVAAqV,YAAY;AACtiE;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+EAA+E;;AAE/E;AACA;AACA,eAAe;AACf;AACA;;AAEA,gFAAgF;;;AAGhF;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA,aAAa;AACb,iCAAiC;;AAEjC;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,8BAA8B;;;AAG9B;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,gCAAgC;;;AAGhC;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,8BAA8B;;;AAG9B;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,gCAAgC;;;AAGhC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,8CAA8C;;AAE9C;AACA;AACA;AACA;;AAEA;;AAEA,wCAAwC;;;AAGxC;AACA,SAAS,OAAO;AAChB,OAAO;AACP;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B;;AAE7B;AACA;AACA;;AAEA,gEAAgE;AAChE,kDAAkD;;AAElD;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C;;AAE1C;AACA,iBAAiB;AACjB;AACA,4CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iGAAiG,gBAAgB,uHAAuH,OAAO,QAAQ,YAAY,iBAAiB,WAAW,wBAAwB,8GAA8G,eAAe,WAAW,iBAAiB,uIAAuI,gBAAgB,kBAAkB,iFAAiF,ujBAAujB,gBAAgB,kBAAkB,iFAAiF,kaAAka,gBAAgB,kBAAkB,kFAAkF,8bAA8b,gBAAgB,mBAAmB,8IAA8I,4HAA4H,gBAAgB,mBAAmB,8IAA8I,mGAAmG,eAAe,kBAAkB,sFAAsF,4ZAA4Z,eAAe,kBAAkB,+EAA+E,+eAA+e,gBAAgB,mBAAmB,yJAAyJ,mGAAmG,gBAAgB,mBAAmB,iJAAiJ,qGAAqG,gBAAgB,mBAAmB,2JAA2J,mIAAmI,gBAAgB,mBAAmB,4JAA4J,mGAAmG,gBAAgB,kBAAkB,+FAA+F,kbAAkb,eAAe,kBAAkB,iFAAiF,kjBAAkjB,gBAAgB,kBAAkB,sFAAsF,ydAAyd,mBAAmB,mBAAmB,kBAAkB,oFAAoF,ujBAAujB;AACjoP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;AACA;;AAEA,kDAAkD;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mDAAmD;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,eAAe;;AAEf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mGAAmG;;AAEnG,0BAA0B,qCAAqC;AAC/D;AACA;AACA;;AAEA;;AAEA,uBAAuB,qCAAqC;AAC5D;AACA,2KAA2K,YAAY,yDAAyD,2LAA2L,YAAY,eAAe,kEAAkE,qKAAqK,YAAY,2DAA2D,oKAAoK,eAAe,uBAAuB,0KAA0K,eAAe,kBAAkB,uBAAuB,mLAAmL,eAAe,0BAA0B,uBAAuB,kEAAkE,sBAAsB,+DAA+D,YAAY,qD;AACtjD,wKAAwK,YAAY,gBAAgB,gEAAgE,2JAA2J,YAAY,iEAAiE,8JAA8J,YAAY,6DAA6D,8JAA8J,eAAe,qBAAqB,uBAAuB,0DAA0D,8JAA8J,YAAY,0DAA0D,iLAAiL,yDAAyD,kKAAkK,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY,oEAAoE,gLAAgL,YAAY,2DAA2D,8KAA8K,YAAY,gBAAgB,mEAAmE,4JAA4J,eAAe,qBAAqB,eAAe,uBAAuB,kJAAkJ,eAAe,oBAAoB,qBAAqB,iBAAiB,uBAAuB,oLAAoL,YAAY,iEAAiE,+JAA+J,WAAW,YAAY,6DAA6D,+JAA+J,WAAW,YAAY,6DAA6D;AAChhH;AACA,aAAa;AACb,+GAA+G;AAC/G;AACA;;AAEA;;AAEA,mBAAmB,iCAAiC;AACpD;AACA,qKAAqK,eAAe,uBAAuB,sKAAsK,eAAe,kBAAkB,uBAAuB,+KAA+K,eAAe,0BAA0B,uBAAuB,kKAAkK,YAAY,yDAAyD,0JAA0J,YAAY,gBAAgB,gEAAgE,wJAAwJ,eAAe,qBAAqB,eAAe,uBAAuB,0JAA0J,YAAY,6DAA6D,0JAA0J,eAAe,qBAAqB,uBAAuB,uJAAuJ,YAAY,iEAAiE,gLAAgL,YAAY,iEAAiE,uLAAuL,YAAY,gFAAgF,sDAAsD,yLAAyL,YAAY,2DAA2D,8IAA8I,eAAe,oBAAoB,qBAAqB,iBAAiB,uBAAuB,0JAA0J,YAAY,0DAA0D,6KAA6K,WAAW,YAAY,yDAAyD,8JAA8J,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY,oEAAoE,4KAA4K,YAAY,2DAA2D,0KAA0K,YAAY,gBAAgB,mEAAmE,2JAA2J,WAAW,YAAY,6DAA6D,2JAA2J,WAAW,YAAY,6DAA6D,8KAA8K,YAAY,yDAAyD;AACtmK;AACA,WAAW;AACX,yGAAyG;AACzG;AACA;;AAEA;AACA,oJAAoJ,YAAY,gBAAgB;AAChL;;AAEA;AACA,kJAAkJ,YAAY;AAC9J,SAAS;;;AAGT;;AAEA,mBAAmB,4CAA4C;AAC/D;AACA,6LAA6L,yDAAyD,yKAAyK,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY,oEAAoE,uLAAuL,YAAY,2DAA2D,qLAAqL,YAAY,gBAAgB,mEAAmE,sKAAsK,WAAW,YAAY,6DAA6D,sKAAsK,WAAW,YAAY,6DAA6D;AAC5pD;AACA,WAAW;AACX,oHAAoH;AACpH;AACA;;AAEA;;AAEA,mBAAmB,wCAAwC;AAC3D;AACA,0KAA0K,YAAY,gEAAgE,2KAA2K,YAAY,kEAAkE,wKAAwK,YAAY,iEAAiE,wKAAwK,YAAY,gEAAgE,oLAAoL,WAAW,YAAY,yDAAyD,qKAAqK,WAAW,YAAY,4GAA4G,yBAAyB,WAAW,YAAY,oEAAoE,mLAAmL,YAAY,2DAA2D,iLAAiL,YAAY,gBAAgB,mEAAmE,kKAAkK,WAAW,YAAY,6DAA6D,kKAAkK,WAAW,YAAY,6DAA6D,4LAA4L,YAAY,yDAAyD;AAC/2F;AACA,WAAW;AACX,gHAAgH;AAChH;AACA;;AAEA;AACA,2JAA2J,YAAY,gBAAgB;AACvL;;AAEA;AACA,gKAAgK,YAAY;AAC5K,SAAS,gDAAgD,eAAe,gBAAgB,aAAa;AACrG,mCAAmC,gBAAgB,6BAA6B;AAChF;;;AAGA,sEAAsE,sBAAsB,aAAa,gNAAgN,sBAAsB,aAAa,8aAA8a,YAAY,6OAA6O,eAAe,yOAAyO,eAAe,yOAAyO,eAAe,qBAAqB,qBAAqB,uLAAuL,YAAY,sUAAsU,YAAY,gNAAgN,YAAY,gNAAgN,YAAY,gNAAgN,YAAY,uVAAuV,YAAY,0NAA0N,YAAY,4MAA4M,YAAY,yMAAyM,YAAY,m4BAAm4B,w1BAAw1B,0IAA0I,gBAAgB,kuDAAkuD,YAAY,gBAAgB,wQAAwQ,gBAAgB,86BAA86B,YAAY,gBAAgB,6QAA6Q,gBAAgB,miBAAmiB,YAAY,gBAAgB,4OAA4O,6TAA6T,uBAAuB,mBAAmB,+DAA+D,WAAW,YAAY,8EAA8E,eAAe,ykBAAykB,2GAA2G,sLAAsL,WAAW,YAAY,4JAA4J;AAC/pW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;;AAEnF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D,iEAAiE;;AAEjE;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D,4DAA4D;;AAE5D;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,yDAAyD;;AAEzD,2DAA2D;;AAE3D;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,yDAAyD;;AAEzD,2DAA2D;;AAE3D;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,8DAA8D;;AAE9D,gEAAgE;;AAEhE;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,OAAO,EAAE;;AAET;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D,iEAAiE;;AAEjE;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D,4DAA4D;;AAE5D;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D,4DAA4D;;AAE5D;AACA,gCAAgC;AAChC;;AAEA;AACA,6CAA6C;;;AAG7C;AACA,oDAAoD;;AAEpD;AACA;AACA,WAAW;AACX,oDAAoD;;AAEpD;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA,iDAAiD;AACjD,SAAS,SAAS;;AAElB,2DAA2D;;AAE3D;AACA;AACA,kFAAkF;;AAElF;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iHAAiH;AACjH;;AAEA;AACA,kEAAkE;AAClE;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gCAAgC;;AAEhC;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;;;AAGtC,6BAA6B;;AAE7B,sCAAsC;;;AAGtC;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,qFAAqF;;AAErF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE,mEAAmE;;AAEnE;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,wDAAwD;;AAExD;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;;AAG3B;AACA,iCAAiC;AACjC;;AAEA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,8CAA8C;AAC9C,uE;AACA;AACA;AACA;;;AAGA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA,4BAA4B;AAC5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA,2BAA2B;;;AAG3B,+BAA+B;;AAE/B;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,yCAAyC,2BAA2B;AACpE,8CAA8C;AAC9C,uE;AACA;AACA;;;AAGA,uDAAuD;AACvD;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,2BAA2B;AAC3B;AACA;;;AAGA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,wDAAwD;;AAExD,qDAAqD;;AAErD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX,2BAA2B;;;AAG3B,+BAA+B;;AAE/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC,uDAAuD;;AAEvD;AACA;;AAEA;AACA,mEAAmE;AACnE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;;AAEpC;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX,4EAA4E;AAC5E;;AAEA;AACA;AACA;;AAEA,2BAA2B;;;AAG3B,+BAA+B;;AAE/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA,6CAA6C;;;AAG7C;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,kCAAkC;;AAElC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA,eAAe;AACf;AACA,eAAe;;;AAGf;;AAEA,wDAAwD,SAAS;AACjE;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,iCAAiC;AACjC;;AAEA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;;;AAGX;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;;AAEA;AACA,yDAAyD;;AAEzD;AACA;;AAEA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,WAAW;;;AAGX;;AAEA,2BAA2B;;;AAG3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;;;AAGX;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,QAAQ;;AAEnB;;AAEA,2BAA2B;;;AAG3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;;;AAGX;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,QAAQ;;AAEnB;;AAEA,2BAA2B;;;AAG3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO,EAAE;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yDAAyD;;AAEzD,2DAA2D;;AAE3D;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA,oGAAoG;;AAEpG;AACA;AACA,WAAW;AACX,oGAAoG;;AAEpG;AACA;AACA;AACA,WAAW;AACX;AACA,qGAAqG;;AAErG;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gEAAgE;;AAEhE,kEAAkE;;AAElE;AACA,gCAAgC;;AAEhC;;AAEA;AACA;AACA,kHAAkH;;AAElH;AACA;AACA,WAAW;AACX,kHAAkH;;AAElH;AACA;AACA;AACA,WAAW;AACX;AACA,mHAAmH;;AAEnH;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,sEAAsE;AACtE,6DAA6D;;AAE7D;;AAEA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,SAAS;;;AAGT;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW;AACX,SAAS,6BAA6B;AACtC;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;;AAGA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,iBAAiB;AACjB;;AAEA;AACA,2FAA2F;AAC3F;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;;AAE9C,2CAA2C,QAAQ;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,+bAA+b,YAAY,wBAAwB,gBAAgB,SAAS,oFAAoF,qCAAqC,uCAAuC,mBAAmB,6BAA6B,aAAa,mBAAmB,eAAe,SAAS,yBAAyB,YAAY,6BAA6B,uBAAuB,mCAAmC,WAAW,YAAY,iBAAiB,eAAe,cAAc,eAAe,gBAAgB,kBAAkB,mBAAmB,yDAAyD,oBAAoB,kx5CAAkx5C,0BAA0B,cAAc,MAAM,gEAAgE,2CAA2C,iEAAiE,4EAA4E,EAAE,eAAe;AAC/p8C;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,+DAA+D;;AAE/D;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT,qCAAqC;;AAErC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kFAAkF;;AAElF;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,SAAS,OAAO;AAChB;;AAEA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;;;AAGb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kFAAkF;;AAElF;AACA,SAAS;AACT,8DAA8D;;AAE9D;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA,gEAAgE;;AAEhE;;AAEA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA,aAAa;AACb;AACA,6CAA6C,kCAAkC,oBAAoB,UAAU;AAC7G,+CAA+C,uBAAuB,aAAa;AACnF,mDAAmD;;;AAGnD;;AAEA,kDAAkD,SAAS;AAC3D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA,8CAA8C;;AAE9C;AACA;AACA;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT,qCAAqC;AACrC;;AAEA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6DAA6D;AAC7D;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,yDAAyD,EAAE;;AAE3D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA,uCAAuC;AACvC;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;;AAEA,iEAAiE;;AAEjE,eAAe;AACf,+BAA+B;;AAE/B;AACA,iEAAiE,cAAc;;AAE/E;AACA,8sBAA8sB,WAAW,YAAY,kBAAkB,gBAAgB,UAAU;;AAEjxB;AACA,iBAAiB;;;AAGjB,8DAA8D;;AAE9D,4FAA4F;;AAE5F,4GAA4G;;AAE5G;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA,8FAA8F;AAC9F,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,iBAAiB;;;AAGjB;;AAEA,oFAAoF;AACpF;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,cAAc;;AAEvD;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,oC;;AAEnE;AACA;AACA;AACA,2EAA2E;;AAE3E;AACA,kCAAkC;;AAElC;AACA,yCAAyC;;AAEzC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,oDAAoD;AACpD;;AAEA;;AAEA;AACA;AACA,gEAAgE;;AAEhE,+EAA+E;AAC/E;;AAEA;AACA;AACA;AACA,WAAW;;;AAGX;;AAEA;AACA,sEAAsE;AACtE;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA,GAAG,GAAG;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,EAAE;;AAEP,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,+DAA+D;;AAE/D;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,+DAA+D;;AAE/D;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,oDAAoD;AACpD,wCAAwC;AACxC,8BAA8B;AAC9B;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE;AAC9C,2CAA2C,EAAE;AAC7C,yCAAyC,EAAE;AAC3C,4CAA4C,EAAE;AAC9C,6CAA6C,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,EAAE;AAClC,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;;AAEhC;AACA;;AAEA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,eAAe;AACxE;;AAEA,4DAA4D;;AAE5D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA,6BAA6B;;AAE7B;AACA,iCAAiC;AACjC;;AAEA,0CAA0C;AAC1C;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA,sFAAsF;;AAEtF;AACA;;AAEA;;AAEA;;AAEA,+CAA+C,QAAQ;AACvD;AACA;AACA;;AAEA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,eAAe;AACf;AACA;AACA,4CAA4C;AAC5C,eAAe;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,EAAE;AACjB;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,OAAO,EAAE;AACT;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G;;AAE/G;AACA,4BAA4B,8CAA8C;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS,sDAAsD;AAC/D,2DAA2D;AAC3D,0DAA0D;AAC1D,yDAAyD;AACzD,0DAA0D;AAC1D,8D;AACA,6D;AACA,kE;AACA;AACA;AACA;AACA,uD;AACA;;;AAGA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;;AAEA,+CAA+C;;AAE/C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,EAAE,0BAA0B;AACnC;;AAEA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA,uDAAuD;AACvD,KAAK,kGAAkG,MAAM;;;AAG7G;AACA;AACA;AACA;;AAEA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;;;AAGX,8CAA8C;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW;;;AAGX;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA,aAAa;AACb;;;AAGA;;AAEA,uCAAuC;;;AAGvC;AACA,mCAAmC;;AAEnC;AACA;AACA,kGAAkG;AAClG;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;;;AAGf;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe;AACf,uDAAuD;AACvD;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA,eAAe;;;AAGf,gDAAgD;;;AAGhD;AACA;AACA;AACA,wFAAwF;;AAExF,wFAAwF;;AAExF,4FAA4F;;AAE5F,wFAAwF;;AAExF;AACA;AACA;AACA,aAAa;AACb,WAAW,EAAE;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;;AAGxC;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,uFAAuF;AACvF;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA,iEAAiE;;AAEjE;AACA,gEAAgE;AAChE,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC,mBAAmB;AACnB,qCAAqC;AACrC;;AAEA,8DAA8D;;AAE9D,iDAAiD;;AAEjD,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,GAAG,mBAAmB,aAAa,GAAG;;AAE9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB,KAAK,YAAY,GAAG;;AAEzC;;AAEA;AACA;AACA;AACA,0NAA0N;;AAE1N;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;;AAE/C,qCAAqC,SAAS;AAC9C,qLAAqL;AACrL;;AAEA;AACA,qBAAqB;AACrB,6CAA6C;;AAE7C;AACA;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;;AAGnB,yCAAyC;;;AAGzC,yCAAyC;;;AAGzC;AACA;AACA;AACA,aAAa;;AAEb;;AAEA;AACA,WAAW;;AAEX,SAAS,EAAE;;AAEX;AACA;AACA;AACA,SAAS,EAAE;;AAEX,0BAA0B;;AAE1B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qEAAqE;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA,KAAK;AACL;AACA;AACA,qEAAqE;AACrE;AACA,KAAK;AACL;AACA;AACA,6EAA6E;AAC7E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,yKAAyK,YAAY;AACrL;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,gLAAgL,YAAY;AAC5L;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA,sBAAsB;;AAEtB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,0BAA0B;AACvD;;AAEA,6BAA6B;;AAE7B;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,8CAA8C;AAC9C;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;;AAEnC,+BAA+B;;AAE/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD;AAClD;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB,E;AAChB;AACA;;;AAGA,eAAe;;AAEf;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;;;AAGT;AACA;AACA,mGAAmG;;AAEnG,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,4DAA4D;AAC5D;;;AAGA,6BAA6B;;AAE7B;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,kDAAkD,cAAc,qBAAqB,aAAa,YAAY,aAAa,cAAc;AACzI;AACA;AACA;AACA;AACA;AACA;;AAEA,wEAAwE;;;AAGxE;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sDAAsD,oBAAoB;AAC1E,iBAAiB;AACjB;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,oBAAoB;AACpB,oEAAoE;AACpE;AACA,qEAAqE,gCAAgC,EAAE;AACvG;AACA,2EAA2E;AAC3E;;AAEA;AACA;AACA;;AAEA;AACA,gFAAgF;AAChF;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA;;AAEA,mCAAmC;;;AAGnC,mCAAmC;;;AAGnC;AACA,WAAW;AACX;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH,6BAA6B;AAC7B;AACA;AACA;AACA,MAAM;;AAEN;AACA,YAAY,oCAAa;AACzB;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC;;;AAGD;AACA,gC;;;;;;;;ACz/6CA,UAAU,mBAAO,CAAC,8EAA8E;AAChG,0BAA0B,mBAAO,CAAC,oKAAoH;;AAEtJ;;AAEA;AACA,0BAA0B,QAAS;AACnC;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;AClBA;AACA,kCAAkC,mBAAO,CAAC,uDAAyD;AACnG;AACA,cAAc,QAAS,4EAA4E;AACnG;AACA,cAAc,QAAS,8BAA8B,eAAe,kBAAkB,2CAA2C,qBAAqB,2CAA2C,SAAS,2CAA2C,WAAW,kFAAkF,kBAAkB,cAAc,gBAAgB,wHAAwH,qCAAqC,gBAAgB,mBAAmB,gBAAgB,oBAAoB,kBAAkB,eAAe,oBAAoB,eAAe,eAAe,oBAAoB,kBAAkB,eAAe,oBAAoB,iBAAiB,eAAe,oBAAoB,kBAAkB,eAAe,oBAAoB,iBAAiB,eAAe,mBAAmB,cAAc,0BAA0B,oBAAoB,6BAA6B,gBAAgB,eAAe,gBAAgB,yBAAyB,4BAA4B,iBAAiB,mCAAmC,oBAAoB,eAAe,oBAAoB,kBAAkB,oBAAoB,iBAAiB,oBAAoB,kBAAkB,oBAAoB,iBAAiB,iBAAiB,oBAAoB,eAAe,iBAAiB,6BAA6B,iBAAiB,4BAA4B,kBAAkB,0HAA0H,cAAc,oBAAoB,gBAAgB,6BAA6B,YAAY,qCAAqC,mBAAmB,YAAY,qBAAqB,eAAe,wBAAwB,SAAS,0BAA0B,aAAa,qBAAqB,oBAAoB,eAAe,qBAAqB,gBAAgB,aAAa,2BAA2B,4BAA4B,iBAAiB,2CAA2C,gBAAgB,qBAAqB,qBAAqB,qBAAqB,mBAAmB,4BAA4B,cAAc,gBAAgB,yBAAyB,yBAAyB,WAAW,kBAAkB,mBAAmB,2BAA2B,8BAA8B,sBAAsB,8BAA8B,WAAW,mCAAmC,YAAY,oCAAoC,UAAU,mCAAmC,UAAU,mCAAmC,YAAY,8BAA8B,UAAU,+BAA+B,YAAY,gCAAgC,UAAU,+BAA+B,UAAU,+BAA+B,YAAY,uCAAuC,aAAa,mEAAmE,cAAc,cAAc,iCAAiC,WAAW,2BAA2B,QAAQ,yBAAyB,kBAAkB,wBAAwB,iBAAiB,uBAAuB,gBAAgB,+BAA+B,qBAAqB,YAAY,aAAa,kBAAkB,gBAAgB,kBAAkB,mCAAmC,eAAe,cAAc,YAAY,WAAW,eAAe,eAAe,gBAAgB,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,kCAAkC,6BAA6B,UAAU,6BAA6B,UAAU,6BAA6B,UAAU,6BAA6B,UAAU,6BAA6B,WAAW,2BAA2B,oBAAoB,4BAA4B,uBAAuB,4BAA4B,uBAAuB,4BAA4B,uBAAuB,4BAA4B,uBAAuB,4BAA4B,uBAAuB,0BAA0B,cAAc,sBAAsB,4BAA4B,cAAc,iCAAiC,YAAY,aAAa,oBAAoB,aAAa,cAAc,kCAAkC,iCAAiC,QAAQ,2BAA2B,2CAA2C,mBAAmB,sBAAsB,kBAAkB,0BAA0B,gBAAgB,cAAc,2BAA2B,uEAAuE,oEAAoE,+DAA+D,2BAA2B,+CAA+C,4CAA4C,uCAAuC,2BAA2B,8CAA8C,2CAA2C,sCAAsC,4BAA4B,oBAAoB,aAAa,8BAA8B,sBAAsB,mCAAmC,kBAAkB,cAAc,SAAS,UAAU,gBAAgB,iBAAiB,kBAAkB,0DAA0D,sBAAsB,yDAAyD,mBAAmB,0CAA0C,kBAAkB,MAAM,SAAS,OAAO,WAAW,YAAY,SAAS,uBAAuB,kBAAkB,eAAe,gBAAgB,yBAAyB,kBAAkB,UAAU,QAAQ,gBAAgB,cAAc,oDAAoD,6BAA6B,2BAA2B,yBAAyB,+BAA+B,wBAAwB,kBAAkB,eAAe,0BAA0B,kBAAkB,UAAU,UAAU,cAAc,8BAA8B,iBAAiB,WAAW,cAAc,0BAA0B,iBAAiB,gBAAgB,kCAAkC,0BAA0B,WAAW,gBAAgB,8BAA8B,iBAAiB,aAAa,0BAA0B,iBAAiB,iBAAiB,4BAA4B,cAAc,oBAAoB,gCAAgC,qBAAqB,WAAW,gBAAgB,cAAc,uCAAuC,+BAA+B,4CAA4C,kBAAkB,2CAA2C,kBAAkB,sCAAsC,cAAc,+CAA+C,WAAW,qDAAqD,WAAW,8CAA8C,WAAW,oDAAoD,WAAW,0CAA0C,qBAAqB,kBAAkB,cAAc,oBAAoB,YAAY,aAAa,sBAAsB,gBAAgB,qBAAqB,4CAA4C,qBAAqB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,sDAAsD,kBAAkB,qDAAqD,kBAAkB,6CAA6C,qBAAqB,kBAAkB,cAAc,oBAAoB,WAAW,YAAY,sBAAsB,gBAAgB,qBAAqB,+CAA+C,qBAAqB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,yDAAyD,kBAAkB,wDAAwD,kBAAkB,sCAAsC,qBAAqB,wCAAwC,cAAc,WAAW,kBAAkB,kBAAkB,YAAY,aAAa,sBAAsB,qBAAqB,0CAA0C,mBAAmB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,uCAAuC,qBAAqB,yCAAyC,cAAc,WAAW,kBAAkB,kBAAkB,YAAY,YAAY,sBAAsB,qBAAqB,2CAA2C,mBAAmB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,yCAAyC,qBAAqB,2CAA2C,cAAc,WAAW,kBAAkB,kBAAkB,WAAW,YAAY,sBAAsB,qBAAqB,6CAA6C,mBAAmB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,0CAA0C,qBAAqB,4CAA4C,cAAc,WAAW,kBAAkB,kBAAkB,YAAY,YAAY,sBAAsB,qBAAqB,8CAA8C,mBAAmB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,wCAAwC,qBAAqB,0CAA0C,cAAc,WAAW,kBAAkB,kBAAkB,WAAW,YAAY,sBAAsB,qBAAqB,4CAA4C,mBAAmB,WAAW,YAAY,sBAAsB,WAAW,eAAe,aAAa,mBAAmB,uBAAuB,4BAA4B,YAAY,4BAA4B,YAAY,4BAA4B,YAAY,4BAA4B,YAAY,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,6BAA6B,aAAa,yBAAyB,4BAA4B,YAAY,4BAA4B,YAAY,4BAA4B,YAAY,4BAA4B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,YAAY,6BAA6B,cAAc,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,mCAAmC,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,2BAA2B,4BAA4B,kCAAkC,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,0BAA0B,2BAA2B,2BAA2B,kCAAkC,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,0BAA0B,gCAAgC,2BAA2B,mCAAmC,yCAAyC,2BAA2B,0CAA0C,6BAA6B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,oCAAoC,+BAA+B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,oCAAoC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,8BAA8B,mCAAmC,+BAA+B,gCAAgC,WAAW,+BAA+B,WAAW,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,+BAA+B,gBAAgB,mBAAmB,eAAe,0BAA0B,6BAA6B,+BAA+B,gBAAgB,mBAAmB,eAAe,0BAA0B,6BAA6B,+BAA+B,gBAAgB,mBAAmB,eAAe,0BAA0B,6BAA6B,+BAA+B,gBAAgB,mBAAmB,eAAe,0BAA0B,6BAA6B,+BAA+B,gBAAgB,mBAAmB,eAAe,0BAA0B,6BAA6B,8CAA8C,0BAA0B,6BAA6B,8CAA8C,0BAA0B,6BAA6B,8CAA8C,0BAA0B,6BAA6B,8CAA8C,0BAA0B,6BAA6B,8CAA8C,0BAA0B,6BAA6B,6CAA6C,0BAA0B,6BAA6B,6CAA6C,0BAA0B,6BAA6B,6CAA6C,0BAA0B,6BAA6B,6CAA6C,0BAA0B,6BAA6B,6CAA6C,0BAA0B,6BAA6B,+BAA+B,gBAAgB,mBAAmB,kBAAkB,sBAAsB,+BAA+B,gBAAgB,mBAAmB,kBAAkB,sBAAsB,+BAA+B,gBAAgB,mBAAmB,kBAAkB,sBAAsB,+BAA+B,gBAAgB,mBAAmB,kBAAkB,sBAAsB,+BAA+B,gBAAgB,mBAAmB,kBAAkB,sBAAsB,8CAA8C,sBAAsB,8CAA8C,sBAAsB,8CAA8C,sBAAsB,8CAA8C,sBAAsB,8CAA8C,sBAAsB,6CAA6C,sBAAsB,6CAA6C,sBAAsB,6CAA6C,sBAAsB,6CAA6C,sBAAsB,6CAA6C,sBAAsB,+BAA+B,gBAAgB,mBAAmB,oBAAoB,6BAA6B,+BAA+B,gBAAgB,mBAAmB,oBAAoB,6BAA6B,+BAA+B,gBAAgB,mBAAmB,oBAAoB,6BAA6B,+BAA+B,gBAAgB,mBAAmB,oBAAoB,6BAA6B,+BAA+B,gBAAgB,mBAAmB,oBAAoB,6BAA6B,8CAA8C,6BAA6B,8CAA8C,6BAA6B,8CAA8C,6BAA6B,8CAA8C,6BAA6B,8CAA8C,6BAA6B,6CAA6C,6BAA6B,6CAA6C,6BAA6B,6CAA6C,6BAA6B,6CAA6C,6BAA6B,6CAA6C,6BAA6B,gCAAgC,mBAAmB,iBAAiB,uIAAuI,mBAAmB,iBAAiB,uIAAuI,mBAAmB,iBAAiB,uIAAuI,mBAAmB,iBAAiB,uIAAuI,mBAAmB,iBAAiB,uIAAuI,mBAAmB,iBAAiB,gCAAgC,gBAAgB,uIAAuI,iBAAiB,uIAAuI,iBAAiB,uIAAuI,iBAAiB,uIAAuI,iBAAiB,uIAAuI,iBAAiB,2BAA2B,gBAAgB,kBAAkB,kBAAkB,mCAAmC,gBAAgB,mCAAmC,gBAAgB,2BAA2B,gBAAgB,kBAAkB,mCAAmC,gBAAgB,mCAAmC,gBAAgB,mDAAmD,kBAAkB,eAAe,iBAAiB,gBAAgB,mBAAmB,qBAAqB,aAAa,mBAAmB,kBAAkB,qBAAqB,eAAe,sBAAsB,6BAA6B,mBAAmB,iCAAiC,yBAAyB,qBAAqB,WAAW,iMAAiM,cAAc,wBAAwB,gBAAgB,iEAAiE,WAAW,sBAAsB,0NAA0N,WAAW,sBAAsB,wNAAwN,WAAW,sBAAsB,iEAAiE,WAAW,yBAAyB,yBAAyB,0NAA0N,WAAW,yBAAyB,yBAAyB,wNAAwN,WAAW,yBAAyB,yBAAyB,qEAAqE,iBAAiB,gBAAgB,6DAA6D,yBAAyB,uEAAuE,mBAAmB,sBAAsB,iBAAiB,cAAc,gBAAgB,kBAAkB,mBAAmB,qBAAqB,gBAAgB,mBAAmB,kBAAkB,qBAAqB,sBAAsB,eAAe,sBAAsB,6BAA6B,mBAAmB,iCAAiC,yBAAyB,kCAAkC,WAAW,yBAAyB,wCAAwC,WAAW,yBAAyB,qBAAqB,kCAAkC,WAAW,yBAAyB,wCAAwC,WAAW,sBAAsB,kBAAkB;AACvqoC;AACA;;;;;;;;ACPA;AACA,kCAAkC,mBAAO,CAAC,uDAAyD;AACnG;AACA;AACA,cAAc,QAAS,qBAAqB,2BAA2B,8BAA8B,oBAAoB,2CAA2C,eAAe,gBAAgB,0IAA0I,2CAA2C,gBAAgB,uBAAuB,iBAAiB,uBAAuB,iBAAiB,uBAAuB,iBAAiB,uBAAuB,gBAAgB,uBAAuB,gBAAgB,uBAAuB,gBAAgB,gCAAgC,gBAAgB,gBAAgB,gBAAgB,yBAAyB,+BAA+B,gBAAgB,kBAAkB,sBAAsB,cAAc,sBAAsB,uBAAuB,YAAY,qCAAqC,eAAe,kBAAkB,wBAAwB,eAAe,2BAA2B,SAAS,qCAAqC,gBAAgB,gBAAgB,oCAAoC,gBAAgB,gBAAgB,4BAA4B,iBAAiB,gBAAgB,4BAA4B,iBAAiB,gBAAgB,4BAA4B,iBAAiB,gBAAgB,4BAA4B,gBAAgB,gBAAgB,4BAA4B,gBAAgB,gBAAgB,4BAA4B,gBAAgB,gBAAgB,2BAA2B,eAAe,gBAAgB,4BAA4B,eAAe,gBAAgB,+BAA+B,cAAc,gBAAgB,UAAU,wBAAwB,iBAAiB,oBAAoB,iBAAiB,yBAAyB,4BAA4B,WAAW,oBAAoB,qBAAqB,2BAA2B,8BAA8B,sBAAsB,iCAAiC,WAAW,uCAAuC,YAAY,uCAAuC,UAAU,sCAAsC,UAAU,sCAAsC,YAAY,iCAAiC,UAAU,kCAAkC,YAAY,mCAAmC,UAAU,kCAAkC,UAAU,kCAAkC,YAAY,0CAA0C,aAAa,yEAAyE,cAAc,cAAc,oCAAoC,WAAW,8BAA8B,QAAQ,4BAA4B,kBAAkB,2BAA2B,iBAAiB,0BAA0B,gBAAgB,+BAA+B,oBAAoB,aAAa,iCAAiC,sBAAsB,sCAAsC,kBAAkB,cAAc,SAAS,UAAU,gBAAgB,6DAA6D,sBAAsB,4DAA4D,mBAAmB,6CAA6C,kBAAkB,MAAM,SAAS,OAAO,WAAW,YAAY,SAAS,iHAAiH,eAAe,kBAAkB,0BAA0B,kBAAkB,eAAe,4BAA4B,kBAAkB,UAAU,SAAS,cAAc,0DAA0D,kBAAkB,4BAA4B,kBAAkB,2BAA2B,kBAAkB,eAAe,6BAA6B,kBAAkB,UAAU,UAAU,cAAc,yBAAyB,iCAAiC,iBAAiB,WAAW,cAAc,6BAA6B,iBAAiB,gBAAgB,yBAAyB,kBAAkB,gBAAgB,gBAAgB,kBAAkB,qBAAqB,gBAAgB,mBAAmB,kBAAkB,qBAAqB,sBAAsB,eAAe,sBAAsB,6BAA6B,mBAAmB,uCAAuC,+BAA+B,qCAAqC,WAAW,yBAAyB,2CAA2C,WAAW,yBAAyB,qBAAqB,qCAAqC,WAAW,yBAAyB,2CAA2C,WAAW,sBAAsB,kBAAkB,gCAAgC,qBAAqB,WAAW,gBAAgB,iBAAiB,uCAAuC,+BAA+B,sCAAsC,cAAc,+BAA+B,kBAAkB,WAAW,gBAAgB,sBAAsB,mCAAmC,kBAAkB,cAAc,WAAW,WAAW,uDAAuD,uCAAuC,6BAA6B,qBAAqB,yCAAyC,WAAW,2BAA2B,mBAAmB,0CAA0C,kBAAkB,SAAS,SAAS,OAAO,WAAW,WAAW,gBAAgB,WAAW,iBAAiB,kBAAkB,sBAAsB,UAAU,kCAAkC,gBAAgB,yBAAyB,uCAAuC,gBAAgB,iCAAiC,mBAAmB,gBAAgB,yBAAyB,mEAAmE,SAAS,cAAc,mCAAmC,YAAY,UAAU,qFAAqF,kBAAkB,aAAa,2CAA2C,SAAS,WAAW,YAAY,UAAU,0BAA0B,6BAA6B,0CAA0C,SAAS,WAAW,YAAY,UAAU,4BAA4B,2BAA2B,2CAA2C,SAAS,WAAW,YAAY,UAAU,0BAA0B,6BAA6B,0CAA0C,SAAS,WAAW,YAAY,UAAU,4BAA4B,2BAA2B,4CAA4C,WAAW,mCAAmC,eAAe,YAAY,sBAAsB,2CAA2C,WAAW,gBAAgB,kCAAkC,kBAAkB,WAAW,YAAY,UAAU,YAAY,sBAAsB,2CAA2C,YAAY,iBAAiB,mCAAmC,kBAAkB,UAAU,WAAW,QAAQ,6BAA6B,kCAAkC,kBAAkB,WAAW,WAAW,0CAA0C,WAAW,kCAAkC,kBAAkB,6BAA6B,iCAAiC,eAAe,4CAA4C,WAAW,gBAAgB,oCAAoC,6BAA6B,mCAAmC,gBAAgB,4CAA4C,YAAY,iBAAiB,oCAAoC,kBAAkB,SAAS,WAAW,WAAW,mCAAmC,kBAAkB,UAAU,UAAU,QAAQ,mBAAmB,4BAA4B,yBAAyB,cAAc,eAAe,sDAAsD,YAAY,yVAAyV,gBAAgB,8DAA8D,sBAAsB,sBAAsB,2EAA2E,kBAAkB,kEAAkE,gBAAgB,gBAAgB,yDAAyD,2BAA2B,4EAA4E,YAAY,+EAA+E,gBAAgB,oFAAoF,gBAAgB,gBAAgB,2DAA2D,iBAAiB,yJAAyJ,YAAY,qEAAqE,aAAa,SAAS,sDAAsD,YAAY,sBAAsB,yBAAyB,yBAAyB,aAAa,yVAAyV,gBAAgB,8DAA8D,sBAAsB,sBAAsB,2EAA2E,kBAAkB,kEAAkE,gBAAgB,gBAAgB,yDAAyD,2BAA2B,4EAA4E,YAAY,+EAA+E,gBAAgB,oFAAoF,gBAAgB,gBAAgB,2DAA2D,iBAAiB,yJAAyJ,YAAY,qEAAqE,aAAa,SAAS,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,mCAAmC,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,2BAA2B,8BAA8B,4BAA4B,kCAAkC,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,6BAA6B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,0BAA0B,8BAA8B,2BAA2B,kCAAkC,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,kCAAkC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,0BAA0B,mCAAmC,2BAA2B;AACrtuB;AACA;;;;;;;;ACNA;AACA,kCAAkC,mBAAO,CAAC,uDAAsD;AAChG;AACA;AACA,cAAc,QAAS,iCAAiC,WAAW;AACnE;AACA;;;;;;;;ACNA;AACA,kCAAkC,mBAAO,CAAC,uDAAsD;AAChG;AACA;AACA,cAAc,QAAS,gCAAgC,WAAW,YAAY,sBAAsB,cAAc,eAAe,gCAAgC,6BAA6B,4BAA4B,2BAA2B,wBAAwB,iCAAiC,cAAc,mBAAmB,WAAW,YAAY,WAAW,sBAAsB,SAAS,UAAU,kBAAkB,gBAAgB,gCAAgC,6BAA6B,4BAA4B,2BAA2B,wBAAwB,kBAAkB,2BAA2B,cAAc,mBAAmB,WAAW,YAAY,kBAAkB,iBAAiB,WAAW,2BAA2B,mBAAmB,SAAS,YAAY,kBAAkB,2BAA2B,mBAAmB,gBAAgB,YAAY,kBAAkB,2BAA2B,mBAAmB,iBAAiB,YAAY,kBAAkB,2BAA2B,mBAAmB,UAAU,YAAY,kBAAkB,2BAA2B,mBAAmB,iBAAiB,YAAY,kBAAkB,2BAA2B,mBAAmB,iBAAiB,YAAY,kBAAkB,2BAA2B,mBAAmB,UAAU,YAAY,kBAAkB,2BAA2B,mBAAmB,iBAAiB,YAAY,kBAAkB,2BAA2B,mBAAmB,iBAAiB,YAAY,kBAAkB,2BAA2B,mBAAmB,UAAU,YAAY,kBAAkB,4BAA4B,mBAAmB,iBAAiB,YAAY,kBAAkB,4BAA4B,mBAAmB,iBAAiB,YAAY,kBAAkB,4BAA4B,mBAAmB,WAAW,YAAY,kBAAkB,kCAAkC,mBAAmB,WAAW,kBAAkB,sBAAsB,qDAAqD,kBAAkB,SAAS,QAAQ,WAAW,YAAY,cAAc,iCAAiC,kBAAkB,6CAA6C,kBAAkB,wCAAwC,iBAAiB,kCAAkC,0CAA0C,uBAAuB,2BAA2B,uBAAuB,6BAA6B,wBAAwB,uCAAuC,uBAAuB,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,2BAA2B,cAAc,WAAW,YAAY,4BAA4B,cAAc,WAAW,YAAY,4BAA4B,cAAc,WAAW,YAAY,4BAA4B,cAAc,WAAW,YAAY,kCAAkC,oBAAoB,+BAA+B,WAAW,gBAAgB,cAAc,eAAe,kBAAkB,iBAAiB,kBAAkB,sBAAsB,gCAAgC,6BAA6B,4BAA4B,2BAA2B,wBAAwB,yBAAyB,yBAAyB,kBAAkB,4DAA4D,aAAa,gBAAgB,mCAAmC,4DAA4D,cAAc,mCAAmC,4DAA4D,aAAa,0DAA0D,wBAAwB,8CAA8C,4BAA4B,mDAAmD,gBAAgB,mBAAmB,mCAAmC,mDAAmD,gBAAgB,oBAAoB,gCAAgC,cAAc,kBAAkB,YAAY,WAAW,YAAY,SAAS,kBAAkB,eAAe,UAAU,mCAAmC,gCAAgC,yBAAyB,kCAAkC,2BAA2B,oBAAoB,4BAA4B,eAAe,qBAAqB,kBAAkB,mBAAmB,sBAAsB,yBAAyB,kCAAkC,qCAAqC,6BAA6B,uBAAuB,oBAAoB,6BAA6B,IAAI,iCAAiC,IAAI,kCAAkC,0BAA0B,oBAAoB,gCAAgC,IAAI,oCAAoC,IAAI,qCAAqC,kBAAkB,oBAAoB,gCAAgC,6BAA6B,4BAA4B,2BAA2B,wBAAwB,IAAI,oCAAoC,iCAAiC,gCAAgC,+BAA+B,4BAA4B,IAAI,oCAAoC,iCAAiC,gCAAgC,+BAA+B,6BAA6B,wCAAwC,iCAAiC,WAAW,6BAA6B,kBAAkB,SAAS,QAAQ,WAAW,YAAY,gBAAgB,4CAA4C,kBAAkB,SAAS,QAAQ,WAAW,YAAY,sBAAsB,4BAA4B,4BAA4B,0EAA0E,qCAAqC,yCAAyC,6CAA6C,wCAAwC,0CAA0C,oBAAoB,KAAK,mBAAmB,uBAAuB,2BAA2B,sBAAsB,wBAAwB,GAAG,qBAAqB,yBAAyB,6BAA6B,wBAAwB,2BAA2B,+CAA+C,kBAAkB,SAAS,QAAQ,WAAW,YAAY,sBAAsB,YAAY,iDAAiD,kBAAkB,SAAS,QAAQ,WAAW,YAAY,gBAAgB,gBAAgB,oEAAoE,UAAU,+BAA+B,UAAU,yEAAyE,yBAAyB,yEAAyE,sBAAsB,2EAA2E,sBAAsB,wUAAwU,WAAW,+TAA+T,WAAW,8CAA8C,WAAW,8CAA8C,WAAW,iCAAiC,mBAAmB,oCAAoC,sBAAsB,+CAA+C,kBAAkB,gDAAgD,mBAAmB,mCAAmC,+CAA+C,iBAAiB,gDAAgD,mBAAmB,kCAAkC,+CAA+C,iBAAiB,gDAAgD,mBAAmB,4NAA4N,iBAAiB,iOAAiO,kBAAkB,6EAA6E,kBAAkB,gFAAgF,qBAAqB,6EAA6E,kBAAkB,gFAAgF,qBAAqB,6EAA6E,kBAAkB,gFAAgF,qBAAqB,6EAA6E,iBAAiB,gFAAgF,oBAAoB,6EAA6E,iBAAiB,gFAAgF,oBAAoB,4EAA4E,aAAa,+EAA+E,gBAAgB,4EAA4E,gBAAgB,+EAA+E,mBAAmB,4EAA4E,gBAAgB,+EAA+E,mBAAmB,4EAA4E,iBAAiB,+EAA+E,oBAAoB,4EAA4E,iBAAiB,+EAA+E,oBAAoB,4EAA4E,iBAAiB,+EAA+E,oBAAoB,kCAAkC,6EAA6E,kBAAkB,gFAAgF,qBAAqB,6EAA6E,kBAAkB,gFAAgF,qBAAqB,6EAA6E,kBAAkB,gFAAgF,qBAAqB,6EAA6E,iBAAiB,gFAAgF,oBAAoB,6EAA6E,iBAAiB,gFAAgF,oBAAoB,4EAA4E,gBAAgB,+EAA+E,mBAAmB,4EAA4E,gBAAgB,+EAA+E,mBAAmB,4EAA4E,gBAAgB,+EAA+E,mBAAmB,4EAA4E,gBAAgB,+EAA+E,mBAAmB,4EAA4E,gBAAgB,+EAA+E,oBAAoB,2CAA2C,cAAc,4CAA4C,eAAe,2CAA2C,iBAAiB,4CAA4C,kBAAkB,2CAA2C,iBAAiB,4CAA4C,kBAAkB,2CAA2C,kBAAkB,4CAA4C,mBAAmB,2CAA2C,kBAAkB,4CAA4C,mBAAmB,2CAA2C,kBAAkB,4CAA4C,mBAAmB,kCAAkC,2CAA2C,iBAAiB,4CAA4C,kBAAkB,2CAA2C,iBAAiB,4CAA4C,kBAAkB,2CAA2C,iBAAiB,4CAA4C,kBAAkB,2CAA2C,iBAAiB,4CAA4C,kBAAkB,2CAA2C,iBAAiB,4CAA4C,mBAAmB,iCAAiC,iBAAiB,kCAAkC,kBAAkB,gCAAgC,gBAAgB,mCAAmC,mBAAmB,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,8CAA8C,WAAW,8CAA8C,YAAY,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,kCAAkC,4BAA4B,kCAAkC,4BAA4B,kCAAkC,4BAA4B,mCAAmC,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,iCAAiC,2BAA2B,kCAAkC,2BAA2B,kCAAkC,2BAA2B,kCAAkC,4BAA4B,+CAA+C,WAAW,+CAA+C,WAAW,+CAA+C,WAAW,+CAA+C,WAAW,+CAA+C,WAAW,+CAA+C,WAAW,gDAAgD,YAAY,iDAAiD,WAAW,4CAA4C,cAAc,eAAe,0BAA0B,2BAA2B,0BAA0B,sBAAsB,4CAA4C,aAAa,gBAAgB,yBAAyB,4BAA4B,gDAAgD,0BAA0B,2BAA2B,oDAAoD,0BAA0B,2BAA2B,gDAAgD,yBAAyB,4BAA4B,6CAA6C,YAAY,8BAA8B,2CAA2C,wCAAwC,mCAAmC,kCAAkC,eAAe,gCAAgC,6BAA6B,4BAA4B,2BAA2B,wBAAwB,wCAAwC,WAAW,4BAA4B,wBAAwB,0FAA0F,kBAAkB,cAAc,0FAA0F,kBAAkB,+BAA+B,2BAA2B,sBAAsB,yBAAyB,sBAAsB,qBAAqB,iBAAiB,2BAA2B,wBAAwB,uBAAuB,mBAAmB,wCAAwC,6BAA6B,gBAAgB,SAAS,UAAU,mCAAmC,UAAU,sCAAsC,eAAe,YAAY,uFAAuF,uCAAuC,oCAAoC,mCAAmC,kCAAkC,+BAA+B,8BAA8B,MAAM,OAAO,yEAAyE,cAAc,aAAa,oCAAoC,WAAW,8BAA8B,aAAa,WAAW,YAAY,eAAe,wCAAwC,YAAY,kCAAkC,cAAc,gDAAgD,aAAa,2CAA2C,oBAAoB,iDAAiD,cAAc,8CAA8C,cAAc,YAAY,6BAA6B,2CAA2C,aAAa,2DAA2D,uBAAuB,0DAA0D,YAAY,cAAc,kBAAkB,QAAQ,cAAc,UAAU,qBAAqB,qCAAqC,iCAAiC,6BAA6B,eAAe,kBAAkB,YAAY,UAAU,4IAA4I,kBAAkB,UAAU,eAAe,oFAAoF,UAAU,sGAAsG,YAAY,wEAAwE,eAAe,cAAc,WAAW,WAAW,mCAAmC,kCAAkC,6BAA6B,UAAU,WAAW,WAAW,WAAW,YAAY,wfAAwf,uCAAuC,YAAY,UAAU,gDAAgD,WAAW,YAAY,wfAAwf,mCAAmC,UAAU,6BAA6B,WAAW,WAAW,WAAW,WAAW,YAAY,wfAAwf,uCAAuC,WAAW,WAAW,gDAAgD,WAAW,YAAY,wfAAwf,mCAAmC,UAAU,+BAA+B,YAAY,6BAA6B,WAAW,kBAAkB,YAAY,SAAS,cAAc,WAAW,UAAU,gBAAgB,kBAAkB,uEAAuE,WAAW,YAAY,UAAU,eAAe,uCAAuC,YAAY,cAAc,cAAc,kBAAkB,SAAS,UAAU,eAAe,gCAAgC,kBAAkB,qBAAqB,aAAa,oBAAoB,sCAAsC,mFAAmF,gCAAgC,qCAAqC,gCAAgC,6FAA6F,0BAA0B,+BAA+B,sBAAsB,4BAA4B,4BAA4B,WAAW,YAAY,yBAAyB,aAAa,iCAAiC,mBAAmB,sBAAsB,uBAAuB,qBAAqB,YAAY,gDAAgD,uBAAuB,4CAA4C,YAAY,8BAA8B,kBAAkB,QAAQ,SAAS,eAAe,gBAAgB,WAAW,YAAY,wCAAwC,qCAAqC,oCAAoC,gCAAgC,mCAAmC,kBAAkB,SAAS,QAAQ,WAAW,YAAY,sBAAsB,YAAY,2HAA2H,yBAAyB,qHAAqH,oBAAoB,6IAA6I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,6HAA6H,wBAAwB,uHAAuH,oBAAoB,+IAA+I,qBAAqB,6HAA6H,yBAAyB,uHAAuH,oBAAoB,+IAA+I,sBAAsB,+HAA+H,uBAAuB,yHAAyH,oBAAoB,iJAAiJ,oBAAoB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,uBAAuB,yHAAyH,oBAAoB,iJAAiJ,oBAAoB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,yBAAyB,yHAAyH,oBAAoB,iJAAiJ,sBAAsB,+HAA+H,0BAA0B,yHAAyH,oBAAoB,iJAAiJ,uBAAuB,+HAA+H,uBAAuB,yHAAyH,oBAAoB,iJAAiJ,oBAAoB,4BAA4B,oBAAoB,wCAAwC,oBAAoB,uHAAuH,gEAAgE,mHAAmH,gCAAgC,yHAAyH,mCAAmC,2HAA2H,oCAAoC,iIAAiI,uCAAuC,mIAAmI,kEAAkE,qIAAqI,mEAAmE,2IAA2I,kEAAkE,mIAAmI,+DAA+D,qIAAqI,+DAA+D,2IAA2I,iEAAiE,mIAAmI,iEAAiE,qIAAqI,gEAAgE,2IAA2I,mEAAmE,qIAAqI,iEAAiE,uIAAuI,gEAAgE,6IAA6I,mEAAmE,qIAAqI,iEAAiE,uIAAuI,gEAAgE,6IAA6I,mEAAmE,cAAc,mEAAmE,UAAU,8CAA8C,sCAAsC,wDAAwD,+EAA+E,UAAU,uBAAuB,eAAe,qDAAqD,2CAA2C,mCAAmC,uDAAuD,4CAA4C,oCAAoC,wDAAwD,4CAA4C,oCAAoC,uDAAuD,2CAA2C,mCAAmC,2DAA2D,gDAAgD,wCAAwC,0DAA0D,+CAA+C,uCAAuC,6DAA6D,iDAAiD,yCAAyC,4DAA4D,gDAAgD,wCAAwC,mEAAmE,UAAU,8CAA8C,sCAAsC,wDAAwD,+EAA+E,UAAU,yCAAyC,iCAAiC,qDAAqD,6BAA6B,qBAAqB,wDAAwD,sDAAsD,8CAA8C,0DAA0D,uDAAuD,+CAA+C,2DAA2D,uDAAuD,+CAA+C,0DAA0D,sDAAsD,8CAA8C,sDAAsD,6BAA6B,qBAAqB,yDAAyD,sDAAsD,8CAA8C,2DAA2D,uDAAuD,+CAA+C,4DAA4D,uDAAuD,+CAA+C,2DAA2D,sDAAsD,8CAA8C,qEAAqE,sCAAsC,8BAA8B,gDAAgD,kBAAkB,iFAAiF,mBAAmB,gCAAgC,wBAAwB,sDAAsD,0CAA0C,kCAAkC,wDAAwD,2CAA2C,mCAAmC,yDAAyD,2CAA2C,mCAAmC,wDAAwD,0CAA0C,kCAAkC,mEAAmE,mCAAmC,2BAA2B,sCAAsC,8BAA8B,gDAAgD,uDAAuD,uDAAuD,+CAA+C,mEAAmE,iDAAiD,yCAAyC,wDAAwD,sDAAsD,8CAA8C,oEAAoE,iDAAiD,yCAAyC,qDAAqD,uDAAuD,+CAA+C,iEAAiE,iDAAiD,yCAAyC,uDAAuD,sDAAsD,8CAA8C,mEAAmE,iDAAiD,0CAA0C,qCAAqC,4BAA4B,oBAAoB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,uCAAuC,8BAA8B,sBAAsB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,wCAAwC,+BAA+B,uBAAuB,mCAAmC,gCAAgC,YAAY;AAC7//D;AACA;;;;;;;;ACNA;AACA,kCAAkC,mBAAO,CAAC,uDAAsD;AAChG;AACA;AACA,cAAc,QAAS,eAAe,aAAa,WAAW,kBAAkB,QAAQ,SAAS,sBAAsB,WAAW,iBAAiB,aAAa,kBAAkB,eAAe,kBAAkB,gBAAgB,WAAW,WAAW,YAAY,iBAAiB,kBAAkB,MAAM,OAAO,4BAA4B,wBAAwB,iCAAiC,gBAAgB,WAAW,aAAa,kBAAkB,MAAM,OAAO,4BAA4B,wBAAwB,iCAAiC,iBAAiB,UAAU,aAAa,UAAU,6BAA6B,QAAQ,SAAS,WAAW,iBAAiB,WAAW,YAAY,mBAAmB,qBAAqB,WAAW,YAAY,gBAAgB,sBAAsB,YAAY,eAAe,kBAAkB,iBAAiB,WAAW,iBAAiB,eAAe,mBAAmB,WAAW,mBAAmB,eAAe,mBAAmB,WAAW,wCAAwC,sBAAsB,UAAU,WAAW,0BAA0B,iBAAiB,iCAAiC,qBAAqB,eAAe,mBAAmB,UAAU,qBAAqB,yBAAyB,WAAW,YAAY,+BAA+B,WAAW,gBAAgB,SAAS,sBAAsB,cAAc,+CAA+C,4CAA4C,uCAAuC,+BAA+B,UAAU,iBAAiB,YAAY,iBAAiB,SAAS,iBAAiB,sBAAsB,gBAAgB,kBAAkB,kBAAkB,kCAAkC,iBAAiB,kBAAkB,gBAAgB,kBAAkB,sBAAsB,iCAAiC,sBAAsB,YAAY,qBAAqB,qBAAqB,qBAAqB,yBAAyB,kDAAkD,WAAW,YAAY,gBAAgB,iBAAiB,oDAAoD,WAAW,YAAY,gBAAgB,iBAAiB,6BAA6B,kBAAkB,YAAY,cAAc,eAAe,MAAM,OAAO,WAAW,YAAY,mBAAmB,qBAAqB,uCAAuC,0CAA0C,kCAAkC,WAAW,cAAc,WAAW,YAAY,gBAAgB,kBAAkB,eAAe,eAAe,4BAA4B,kBAAkB,oCAAoC,mBAAmB,sBAAsB,wCAAwC,mBAAmB,yCAAyC,mBAAmB,oBAAoB,cAAc,eAAe,MAAM,OAAO,WAAW,eAAe,YAAY,gBAAgB,sBAAsB,iCAAiC,qBAAqB,UAAU,8CAA8C,sCAAsC,8BAA8B,gDAAgD,gCAAgC,wBAAwB,2CAA2C,mCAAmC,6CAA6C,2BAA2B,uCAAuC,+BAA+B,wBAAwB,WAAW,YAAY,eAAe,gBAAgB,mCAAmC,aAAa,iCAAiC,aAAa,oBAAoB,gBAAgB,sBAAsB,gBAAgB,oCAAoC,WAAW,YAAY,kBAAkB,mBAAmB,mBAAmB,sBAAsB,mDAAmD,kBAAkB,WAAW,YAAY,iBAAiB,0DAA0D,SAAS,YAAY,qCAAqC,yBAAyB,kCAAkC,yCAAyC,gBAAgB,qBAAqB,6CAA6C,uBAAuB,gBAAgB,UAAU,mDAAmD,YAAY,8CAA8C,mBAAmB,sBAAsB,sBAAsB,mBAAmB,sBAAsB,0BAA0B,mBAAmB,sBAAsB,oBAAoB,WAAW,kCAAkC,oBAAoB,iBAAiB,mCAAmC,oBAAoB,kBAAkB,mCAAmC,oBAAoB,kBAAkB,oCAAoC,WAAW,kCAAkC,oCAAoC,iBAAiB,mCAAmC,oCAAoC,kBAAkB,mCAAmC,oCAAoC,kBAAkB,UAAU,WAAW,YAAY,oBAAoB,2BAA2B,SAAS,aAAa,YAAY,gBAAgB,uBAAuB,0BAA0B,8BAA8B,oCAAoC,eAAe,uCAAuC,oCAAoC,+BAA+B,0BAA0B,2BAA2B,mCAAmC,mBAAmB,2BAA2B,yCAAyC,mBAAmB,4BAA4B,qCAAqC,mBAAmB,4BAA4B,2CAA2C,mBAAmB,2BAA2B,wBAAwB,0BAA0B,UAAU,kBAAkB,iBAAiB,YAAY,YAAY,gBAAgB,sBAAsB,kBAAkB,4BAA4B,0BAA0B,UAAU,kBAAkB,iBAAiB,YAAY,yBAAyB,cAAc,YAAY,sBAAsB,sBAAsB,WAAW,YAAY,iBAAiB,sBAAsB,kBAAkB,oBAAoB,eAAe,cAAc,mBAAmB,aAAa,aAAa,8BAA8B,uBAAuB,oCAAoC,iBAAiB,qCAAqC,wBAAwB,+BAA+B,wBAAwB,YAAY,YAAY,MAAM,4BAA4B,oBAAoB,yBAAyB,sBAAsB,iBAAiB,eAAe,aAAa,qBAAqB,gBAAgB,eAAe,aAAa,MAAM,WAAW,WAAW,WAAW,YAAY,+BAA+B,sBAAsB,2BAA2B,GAAG,mBAAmB,IAAI,sBAAsB,KAAK,oBAAoB,kEAAkE,mBAAmB,0EAA0E,cAAc,YAAY,kGAAkG,YAAY,uBAAuB,eAAe,mBAAmB,kBAAkB,gFAAgF,WAAW,WAAW,eAAe,gBAAgB,gBAAgB,oBAAoB,8EAA8E,eAAe,cAAc,gGAAgG,WAAW,YAAY,cAAc,mBAAmB,4GAA4G,mBAAmB,6BAA6B,eAAe,WAAW,4CAA4C,mBAAmB;AACh/P;AACA;;;;;;;;ACNA;AACA,kCAAkC,mBAAO,CAAC,uDAAsD;AAChG;AACA;AACA,cAAc,QAAS,eAAe,wBAAwB,gBAAgB,kBAAkB,gBAAgB,0BAA0B,aAAa,mBAAmB,aAAa,iCAAiC,wCAAwC,mBAAmB,gCAAgC,0BAA0B,wBAAwB,0BAA0B,UAAU,oCAAoC,uCAAuC,0DAA0D,aAAa,yBAAyB,iCAAiC,8BAA8B,6BAA6B,gBAAgB,eAAe,iBAAiB,8BAA8B,8BAA8B,uBAAuB,wBAAwB,uCAAuC,aAAa,sCAAsC,wBAAwB,aAAa,cAAc,WAAW,YAAY,oBAAoB,IAAI,gBAAgB,sBAAsB,iCAAiC,cAAc,cAAc,gBAAgB,WAAW,UAAU,QAAQ,WAAW,aAAa,wBAAwB,eAAe,2BAA2B,wBAAwB,iBAAiB,UAAU,4BAA4B,UAAU,gBAAgB,iCAAiC,WAAW,wBAAwB,kBAAkB,wBAAwB,6BAA6B,wBAAwB,SAAS,uBAAuB,eAAe,mBAAmB,kBAAkB,WAAW,eAAe,uBAAuB,uBAAuB,uCAAuC,2BAA2B,YAAY,qCAAqC,2BAA2B,wBAAwB,yCAAyC,WAAW,iCAAiC,YAAY,yCAAyC,mBAAmB,uDAAuD,kBAAkB,2BAA2B,2CAA2C,kBAAkB,iBAAiB,kBAAkB,MAAM,OAAO,aAAa,cAAc,gBAAgB,yBAAyB,6CAA6C,uBAAuB,cAAc,sBAAsB,aAAa,WAAW,kBAAkB,0BAA0B,mBAAmB,UAAU,YAAY,iBAAiB,sBAAsB,kBAAkB,cAAc,iBAAiB,yBAAyB,WAAW,0CAA0C,eAAe,iCAAiC,uBAAuB,YAAY,uBAAuB,kBAAkB,MAAM,OAAO,aAAa,gBAAgB,yBAAyB,sBAAsB,kBAAkB,MAAM,OAAO,aAAa,gBAAgB,yBAAyB,mDAAmD,cAAc,SAAS,2CAA2C,gBAAgB,UAAU,iEAAiE,WAAW,YAAY,SAAS,gBAAgB,uEAAuE,mBAAmB,6EAA6E,mBAAmB,yEAAyE,UAAU,iGAAiG,gBAAgB,0BAA0B,4KAA4K,YAAY,UAAU,mBAAmB,iBAAiB,6EAA6E,UAAU,2CAA2C,+EAA+E,WAAW,UAAU,4CAA4C,wPAAwP,sBAAsB,gBAAgB,wBAAwB,ocAAoc,WAAW,WAAW,mBAAmB,qBAAqB,qJAAqJ,cAAc,aAAa,eAAe,SAAS,YAAY,gBAAgB,qCAAqC,6DAA6D,cAAc,wLAAwL,WAAW,YAAY,SAAS,gBAAgB,uMAAuM,mBAAmB,sNAAsN,mBAAmB,sNAAsN,YAAY,QAAQ,sBAAsB,2CAA2C,2NAA2N,YAAY,QAAQ,sBAAsB,4CAA4C,qJAAqJ,WAAW,sBAAsB,gBAAgB,yKAAyK,aAAa,wBAAwB,wLAAwL,oCAAoC,uBAAuB,6BAA6B,gCAAgC,KAAK,WAAW,GAAG,aAAa,kMAAkM,mCAAmC,uBAAuB,6BAA6B,+BAA+B,KAAK,YAAY,GAAG,YAAY,sNAAsN,YAAY,UAAU,0OAA0O,sBAAsB,wBAAwB,yPAAyP,wCAAwC,uBAAuB,6BAA6B,oCAAoC,KAAK,QAAQ,GAAG,YAAY,mQAAmQ,uCAAuC,uBAAuB,6BAA6B,mCAAmC,KAAK,WAAW,GAAG,SAAS,2NAA2N,YAAY,UAAU,+OAA+O,sBAAsB,wBAAwB,8PAA8P,yCAAyC,uBAAuB,6BAA6B,qCAAqC,KAAK,QAAQ,GAAG,YAAY,wQAAwQ,wCAAwC,uBAAuB,6BAA6B,oCAAoC,KAAK,WAAW,GAAG,SAAS,2BAA2B,cAAc,aAAa,gBAAgB,sBAAsB,eAAe,SAAS,YAAY,0CAA0C,gBAAgB,UAAU,kCAAkC,qCAAqC,wBAAwB,6BAA6B,iCAAiC,KAAK,SAAS,GAAG,cAAc,oCAAoC,oCAAoC,wBAAwB,6BAA6B,gCAAgC,KAAK,aAAa,GAAG,UAAU,wCAAwC,mBAAmB,sBAAsB,sDAAsD,2BAA2B,wCAAwC,0CAA0C,aAAa,UAAU,gBAAgB,+CAA+C,yCAAyC,wBAAwB,6BAA6B,qCAAqC,KAAK,QAAQ,GAAG,aAAa,iDAAiD,wCAAwC,wBAAwB,6BAA6B,oCAAoC,KAAK,YAAY,GAAG,SAAS,qDAAqD,oBAAoB,yCAAyC,2CAA2C,aAAa,UAAU,gBAAgB,gDAAgD,0CAA0C,wBAAwB,6BAA6B,sCAAsC,KAAK,QAAQ,GAAG,aAAa,kDAAkD,yCAAyC,wBAAwB,6BAA6B,qCAAqC,KAAK,YAAY,GAAG,SAAS,sDAAsD,oBAAoB,2BAA2B,cAAc,aAAa,sBAAsB,eAAe,SAAS,gBAAgB,YAAY,0CAA0C,gBAAgB,UAAU,kCAAkC,eAAe,WAAW,gBAAgB,YAAY,YAAY,kCAAkC,8BAA8B,wBAAwB,6BAA6B,0BAA0B,KAAK,SAAS,GAAG,cAAc,oCAAoC,6BAA6B,wBAAwB,6BAA6B,yBAAyB,KAAK,aAAa,GAAG,UAAU,wCAAwC,aAAa,QAAQ,gBAAgB,0CAA0C,+CAA+C,mBAAmB,+CAA+C,kCAAkC,wBAAwB,6BAA6B,8BAA8B,KAAK,QAAQ,GAAG,aAAa,iDAAiD,iCAAiC,wBAAwB,6BAA6B,6BAA6B,KAAK,YAAY,GAAG,SAAS,yCAAyC,aAAa,QAAQ,gBAAgB,2CAA2C,gDAAgD,mBAAmB,gDAAgD,kCAAkC,wBAAwB,6BAA6B,8BAA8B,KAAK,QAAQ,GAAG,aAAa,kDAAkD,iCAAiC,wBAAwB,6BAA6B,6BAA6B,KAAK,YAAY,GAAG,SAAS,iCAAiC,cAAc,aAAa,sBAAsB,eAAe,SAAS,gBAAgB,YAAY,0CAA0C,gBAAgB,UAAU,wCAAwC,eAAe,WAAW,gBAAgB,YAAY,YAAY,wCAAwC,oCAAoC,wBAAwB,6BAA6B,gCAAgC,KAAK,SAAS,GAAG,cAAc,0CAA0C,mCAAmC,wBAAwB,6BAA6B,+BAA+B,KAAK,aAAa,GAAG,UAAU,8CAA8C,aAAa,QAAQ,gBAAgB,0CAA0C,qDAAqD,mBAAmB,qDAAqD,wCAAwC,wBAAwB,6BAA6B,oCAAoC,KAAK,QAAQ,GAAG,aAAa,uDAAuD,uCAAuC,wBAAwB,6BAA6B,mCAAmC,KAAK,YAAY,GAAG,SAAS,+CAA+C,aAAa,QAAQ,gBAAgB,2CAA2C,sDAAsD,mBAAmB,sDAAsD,wCAAwC,wBAAwB,6BAA6B,oCAAoC,KAAK,QAAQ,GAAG,aAAa,wDAAwD,uCAAuC,wBAAwB,6BAA6B,mCAAmC,KAAK,YAAY,GAAG,SAAS,gCAAgC,cAAc,aAAa,gBAAgB,sBAAsB,eAAe,SAAS,YAAY,0CAA0C,gBAAgB,UAAU,uCAAuC,mCAAmC,wBAAwB,6BAA6B,+BAA+B,KAAK,SAAS,GAAG,cAAc,yCAAyC,kCAAkC,wBAAwB,6BAA6B,8BAA8B,KAAK,aAAa,GAAG,UAAU,oCAAoC,YAAY,oBAAoB,sBAAsB,kBAAkB,gBAAgB,2CAA2C,eAAe,WAAW,iDAAiD,mBAAmB,6CAA6C,YAAY,QAAQ,0CAA0C,oDAAoD,uCAAuC,wBAAwB,6BAA6B,mCAAmC,KAAK,QAAQ,GAAG,aAAa,sDAAsD,sCAAsC,wBAAwB,6BAA6B,kCAAkC,KAAK,YAAY,GAAG,SAAS,iDAAiD,YAAY,aAAa,oBAAoB,8CAA8C,YAAY,QAAQ,2CAA2C,qDAAqD,wCAAwC,wBAAwB,6BAA6B,oCAAoC,KAAK,QAAQ,GAAG,aAAa,uDAAuD,uCAAuC,wBAAwB,6BAA6B,mCAAmC,KAAK,YAAY,GAAG,SAAS,kDAAkD,YAAY,aAAa,oBAAoB,gCAAgC,cAAc,aAAa,gBAAgB,sBAAsB,eAAe,SAAS,YAAY,0CAA0C,gBAAgB,UAAU,uCAAuC,mCAAmC,wBAAwB,6BAA6B,+BAA+B,KAAK,SAAS,GAAG,cAAc,yCAAyC,kCAAkC,wBAAwB,6BAA6B,8BAA8B,KAAK,aAAa,GAAG,UAAU,uCAAuC,mBAAmB,oCAAoC,YAAY,oBAAoB,sBAAsB,kBAAkB,wCAAwC,eAAe,gBAAgB,cAAc,sBAAsB,8CAA8C,mBAAmB,0CAA0C,+BAA+B,oBAAoB,4BAA4B,kBAAkB,6CAA6C,YAAY,QAAQ,0CAA0C,oDAAoD,uCAAuC,wBAAwB,6BAA6B,mCAAmC,KAAK,QAAQ,GAAG,aAAa,sDAAsD,sCAAsC,wBAAwB,6BAA6B,kCAAkC,KAAK,YAAY,GAAG,SAAS,iDAAiD,YAAY,oBAAoB,8CAA8C,YAAY,QAAQ,2CAA2C,qDAAqD,wCAAwC,wBAAwB,6BAA6B,oCAAoC,KAAK,QAAQ,GAAG,aAAa,uDAAuD,uCAAuC,wBAAwB,6BAA6B,mCAAmC,KAAK,YAAY,GAAG,SAAS,kDAAkD,YAAY,oBAAoB,kCAAkC,cAAc,aAAa,sBAAsB,eAAe,SAAS,gBAAgB,YAAY,0CAA0C,gBAAgB,UAAU,sCAAsC,YAAY,aAAa,sBAAsB,2BAA2B,sBAAsB,yCAAyC,WAAW,YAAY,SAAS,oBAAoB,gBAAgB,gBAAgB,+CAA+C,mBAAmB,4CAA4C,cAAc,iBAAiB,yBAAyB,cAAc,WAAW,kBAAkB,kBAAkB,eAAe,0BAA0B,yCAAyC,qCAAqC,wBAAwB,6BAA6B,iCAAiC,KAAK,SAAS,GAAG,cAAc,2CAA2C,oCAAoC,wBAAwB,6BAA6B,gCAAgC,KAAK,aAAa,GAAG,UAAU,+CAA+C,YAAY,QAAQ,0CAA0C,sDAAsD,yCAAyC,wBAAwB,6BAA6B,qCAAqC,KAAK,QAAQ,GAAG,aAAa,wDAAwD,wCAAwC,wBAAwB,6BAA6B,oCAAoC,KAAK,YAAY,GAAG,SAAS,gDAAgD,YAAY,QAAQ,2CAA2C,uDAAuD,0CAA0C,wBAAwB,6BAA6B,sCAAsC,KAAK,QAAQ,GAAG,aAAa,yDAAyD,yCAAyC,wBAAwB,6BAA6B,qCAAqC,KAAK,YAAY,GAAG,SAAS,gBAAgB,WAAW,gBAAgB,6BAA6B,cAAc,0BAA0B,kBAAkB,iBAAiB,aAAa,kBAAkB,qBAAqB,kBAAkB,qBAAqB,YAAY,uBAAuB,kBAAkB,MAAM,QAAQ,eAAe,gCAAgC,cAAc,WAAW,YAAY,kBAAkB,iBAAiB,eAAe,eAAe,iBAAiB,kBAAkB,SAAS,UAAU,WAAW,YAAY,aAAa,UAAU,eAAe,aAAa,kBAAkB,yBAAyB,mBAAmB,eAAe,oCAAoC,yBAAyB,uBAAuB,iBAAiB,gBAAgB,yBAAyB,YAAY,gBAAgB,gCAAgC,WAAW,YAAY,2BAA2B,mBAAmB,eAAe,WAAW,YAAY,MAAM,OAAO,aAAa,cAAc,qCAAqC,uBAAuB,mBAAmB,sBAAsB,uBAAuB,8CAA8C,kBAAkB,UAAU,gBAAgB,yBAAyB,6CAA6C,kBAAkB,sBAAsB,0BAA0B,aAAa,4DAA4D,sBAAsB,uBAAuB,0BAA0B,2BAA2B,uBAAuB,sBAAsB,YAAY,kBAAkB,uBAAuB,eAAe,mBAAmB,mBAAmB,cAAc,kBAAkB,iBAAiB,oCAAoC,YAAY,gBAAgB,uBAAuB,UAAU,YAAY,uCAAuC,UAAU,WAAW,YAAY,kBAAkB,QAAQ,UAAU,sBAAsB,UAAU,iBAAiB,eAAe,WAAW,kBAAkB,eAAe,kBAAkB,cAAc,eAAe,MAAM,aAAa,UAAU,YAAY,YAAY,YAAY,wCAAwC,sBAAsB,gBAAgB,wBAAwB,uBAAuB,eAAe,mBAAmB,cAAc,yBAAyB,QAAQ,2BAA2B,YAAY,WAAW,YAAY,+BAA+B,kCAAkC,OAAO,sBAAsB,WAAW,gBAAgB,YAAY,gBAAgB,UAAU,8BAA8B,WAAW,YAAY,uCAAuC,WAAW,uBAAuB,eAAe,mBAAmB,gBAAgB,6BAA6B,4CAA4C,UAAU,cAAc,qBAAqB,sBAAsB,SAAS,UAAU,eAAe,oBAAoB,kBAAkB,kBAAkB,gBAAgB,iBAAiB,sBAAsB,wBAAwB,yBAAyB,oBAAoB,mBAAmB,aAAa,mBAAmB,uBAAuB,sBAAsB,aAAa,wBAAwB,WAAW,YAAY,cAAc,mBAAmB,8BAA8B,mBAAmB,mBAAmB,mBAAmB,gCAAgC,qBAAqB,WAAW,YAAY,kBAAkB,mBAAmB,gBAAgB,mBAAmB,kCAAkC,qBAAqB,WAAW,YAAY,kBAAkB,mBAAmB,uBAAuB,sCAAsC,mBAAmB,kBAAkB,oBAAoB,eAAe,cAAc,mBAAmB,SAAS,iBAAiB,sBAAsB,yBAAyB,sBAAsB,wBAAwB,aAAa,sBAAsB,aAAa,qBAAqB,aAAa,0BAA0B,WAAW,YAAY,sBAAsB,SAAS,uBAAuB,eAAe,mBAAmB,UAAU,iBAAiB,WAAW,qBAAqB,YAAY,wCAAwC,gBAAgB,yBAAyB,qBAAqB,aAAa,eAAe,eAAe,mBAAmB,UAAU,+CAA+C,kBAAkB,UAAU,aAAa,gBAAgB,gBAAgB,eAAe,mBAAmB,YAAY,gBAAgB,cAAc,kBAAkB,YAAY,sBAAsB,WAAW,qBAAqB,sBAAsB,4BAA4B,yBAAyB,oBAAoB,cAAc,uBAAuB,gBAAgB,sBAAsB,aAAa,gCAAgC,kBAAkB,yBAAyB,gBAAgB,yBAAyB,aAAa,YAAY,4CAA4C,wCAAwC,gCAAgC,QAAQ,kCAAkC,YAAY,yCAAyC,OAAO,2BAA2B,kBAAkB,WAAW,YAAY,UAAU,WAAW,gBAAgB,uCAAuC,kBAAkB,iBAAiB,kBAAkB,6CAA6C,eAAe,oDAAoD,iBAAiB,+BAA+B,UAAU,YAAY,4DAA4D,aAAa,2BAA2B,WAAW,YAAY,iBAAiB,cAAc,eAAe,eAAe,kBAAkB,eAAe,eAAe,uBAAuB,oDAAoD,cAAc,sDAAsD,cAAc,yBAAyB,YAAY,SAAS,4BAA4B,sBAAsB,gBAAgB,kBAAkB,kBAAkB,6CAA6C,6BAA6B,YAAY,gBAAgB,mBAAmB,YAAY,qBAAqB,mDAAmD,sCAAsC,iCAAiC,gBAAgB,cAAc,+BAA+B,sBAAsB,WAAW,uCAAuC,oBAAoB,mCAAmC,yBAAyB,2CAA2C,iCAAiC,6BAA6B,cAAc,YAAY,UAAU,kCAAkC,aAAa,SAAS,UAAU,gBAAgB,8DAA8D,wBAAwB,WAAW,cAAc,kBAAkB,gBAAgB,sBAAsB,uBAAuB,eAAe,mBAAmB,iBAAiB,iBAAiB,YAAY,cAAc,YAAY,yBAAyB,uCAAuC,eAAe,UAAU,eAAe,gBAAgB,oBAAoB,YAAY,eAAe,cAAc,qBAAqB,cAAc,mBAAmB,gBAAgB,eAAe,kCAAkC,uBAAuB,qCAAqC,8BAA8B,GAAG,mBAAmB,IAAI,sBAAsB,KAAK,oBAAoB,2BAA2B,gBAAgB,wBAAwB,YAAY,eAAe,qCAAqC,eAAe,yCAAyC,aAAa,mBAAmB,gBAAgB,kDAAkD,YAAY,uBAAuB,eAAe,gBAAgB,mBAAmB,kBAAkB,4CAA4C,WAAW,YAAY,eAAe,cAAc,yBAAyB,iBAAiB,sBAAsB,YAAY,mBAAmB,yDAAyD,WAAW,YAAY,UAAU,uBAAuB,iCAAiC,2CAA2C,eAAe,cAAc,sDAAsD,gBAAgB,YAAY,eAAe,4CAA4C,gBAAgB,YAAY,SAAS,wCAAwC,SAAS,WAAW,qBAAqB,aAAa,eAAe,gBAAgB,YAAY,aAAa,WAAW,UAAU,UAAU,YAAY,cAAc,gBAAgB,yBAAyB,6CAA6C,uBAAuB,sBAAsB,4BAA4B,aAAa,+CAA+C,kBAAkB,MAAM,OAAO,gBAAgB,YAAY,YAAY,WAAW,UAAU,4CAA4C,WAAW,uBAAuB,YAAY,gBAAgB,gBAAgB,sBAAsB,yCAAyC,mBAAmB,6CAA6C,aAAa,mBAAmB,YAAY,sDAAsD,YAAY,uBAAuB,eAAe,gBAAgB,mBAAmB,kBAAkB,gDAAgD,WAAW,YAAY,eAAe,cAAc,yBAAyB,iBAAiB,sBAAsB,YAAY,mBAAmB,6DAA6D,WAAW,YAAY,UAAU,uBAAuB,iCAAiC,+CAA+C,eAAe,cAAc,mBAAmB,kBAAkB,QAAQ,UAAU,WAAW,YAAY,8BAA8B,WAAW,iBAAiB,kBAAkB,eAAe,eAAe,aAAa,6CAA6C,cAAc,iCAAiC,cAAc,eAAe,YAAY,aAAa,QAAQ,SAAS,kBAAkB,mBAAmB,gBAAgB,2CAA2C,6BAA6B,eAAe,gBAAgB,YAAY,aAAa,QAAQ,UAAU,WAAW,kBAAkB,gBAAgB,6CAA6C,uBAAuB,mBAAmB,uBAAuB,uCAAuC,2CAA2C,yBAAyB,2BAA2B,aAAa,2CAA2C,WAAW,uBAAuB,YAAY,gBAAgB,gBAAgB,sBAAsB,gBAAgB,2BAA2B,YAAY,wCAAwC,WAAW,YAAY,UAAU,uBAAuB,iCAAiC,qBAAqB,yBAAyB,qBAAqB,eAAe,gBAAgB,WAAW,aAAa,QAAQ,UAAU,WAAW,kBAAkB,gBAAgB,6CAA6C,uCAAuC,uBAAuB,4BAA4B,aAAa,4CAA4C,WAAW,uBAAuB,YAAY,gBAAgB,gBAAgB,sBAAsB,4BAA4B,WAAW,YAAY,mCAAmC,WAAW,2CAA2C,aAAa,mBAAmB,YAAY,sBAAsB,gBAAgB,mBAAmB,eAAe,uBAAuB,mBAAmB,0BAA0B,WAAW,YAAY,YAAY,cAAc,gBAAgB,yBAAyB,WAAW,sBAAsB,gBAAgB,SAAS,kBAAkB,MAAM,OAAO,aAAa,cAAc,gCAAgC,sBAAsB,kBAAkB,UAAU,aAAa,gBAAgB,WAAW,YAAY,6BAA6B,YAAY,eAAe,iBAAiB,sBAAsB,wBAAwB,yBAAyB,oBAAoB,WAAW,WAAW,qBAAqB,sBAAsB,SAAS,UAAU,uBAAuB,mBAAmB,eAAe,gBAAgB,yBAAyB,kBAAkB,kBAAkB,kBAAkB,gBAAgB,wBAAwB,sBAAsB,aAAa,eAAe,cAAc,gBAAgB,aAAa,uCAAuC,mBAAmB,gBAAgB,8CAA8C,WAAW,YAAY,iDAAiD,uBAAuB,kDAAkD,uBAAuB,oDAAoD,uBAAuB,2CAA2C,WAAW,YAAY,UAAU,sDAAsD,WAAW,YAAY,aAAa,iCAAiC,mBAAmB,eAAe,wCAAwC,WAAW,YAAY,2CAA2C,mBAAmB,4CAA4C,8BAA8B,8CAA8C,6BAA6B,qCAAqC,WAAW,YAAY,UAAU,gDAAgD,WAAW,YAAY,UAAU,4BAA4B,sBAAsB,gCAAgC,gBAAgB,iBAAiB,mCAAmC,WAAW,YAAY,kBAAkB,cAAc,gBAAgB,yBAAyB,WAAW,kBAAkB,sBAAsB,gBAAgB,wCAAwC,qBAAqB,WAAW,YAAY,uCAAuC,UAAU,qBAAqB,sBAAsB,WAAW,UAAU,YAAY,mDAAmD,aAAa,4BAA4B,WAAW,YAAY,iCAAiC,iBAAiB,iCAAiC,mBAAmB,qCAAqC,8BAA8B,+BAA+B,8BAA8B,iCAAiC,6BAA6B,qCAAqC,UAAU,WAAW,YAAY,gBAAgB,yCAAyC,UAAU,WAAW,YAAY,gBAAgB,mCAAmC,UAAU,WAAW,YAAY,qCAAqC,UAAU,WAAW,YAAY,8CAA8C,WAAW,YAAY,mDAAmD,iBAAiB,mDAAmD,uBAAuB,uDAAuD,uBAAuB,iDAAiD,uBAAuB,mDAAmD,uBAAuB,uDAAuD,UAAU,WAAW,YAAY,gBAAgB,2DAA2D,UAAU,WAAW,YAAY,qDAAqD,aAAa,WAAW,YAAY,uDAAuD,UAAU,WAAW,YAAY,yBAAyB,sBAAsB,6BAA6B,YAAY,iBAAiB,gCAAgC,WAAW,YAAY,kBAAkB,cAAc,gBAAgB,yBAAyB,WAAW,kBAAkB,sBAAsB,gBAAgB,qCAAqC,qBAAqB,WAAW,YAAY,oCAAoC,UAAU,kCAAkC,gCAAgC,yCAAyC,WAAW,YAAY,uBAAuB,sCAAsC,WAAW,YAAY,UAAU,gDAAgD,WAAW,YAAY,yBAAyB,sBAAsB,6BAA6B,YAAY,iBAAiB,gCAAgC,WAAW,YAAY,kBAAkB,cAAc,gBAAgB,yBAAyB,WAAW,kBAAkB,sBAAsB,gBAAgB,qCAAqC,qBAAqB,WAAW,YAAY,oCAAoC,UAAU,qCAAqC,aAAa,0DAA0D,cAAc,oDAAoD,aAAa,wDAAwD,cAAc,kDAAkD,aAAa,oDAAoD,aAAa,oDAAoD,aAAa,wDAAwD,uBAAuB,4DAA4D,UAAU,WAAW,YAAY,iBAAiB,gCAAgC,aAAa,gCAAgC,aAAa,+BAA+B,uCAAuC,qDAAqD,aAAa,wCAAwC,aAAa,iDAAiD,aAAa,sCAAsC,WAAW,WAAW,qCAAqC,aAAa,qCAAqC,aAAa,oCAAoC,0BAA0B,sCAAsC,aAAa,sCAAsC,uCAAuC,qCAAqC,uCAAuC,kDAAkD,aAAa,kDAAkD,aAAa,iDAAiD,uCAAuC,4CAA4C,0BAA0B,oCAAoC,0BAA0B,UAAU,gDAAgD,uCAAuC,sCAAsC,wBAAwB,sCAAsC,wBAAwB,qCAAqC,wBAAwB,iDAAiD,wBAAwB,yHAAyH,aAAa,8CAA8C,6BAA6B,mDAAmD,wBAAwB,wCAAwC,aAAa,8IAA8I,wBAAwB,mDAAmD,cAAc,gBAAgB,aAAa,kBAAkB,YAAY,WAAW,wBAAwB,WAAW,YAAY,gCAAgC,UAAU,uBAAuB,gBAAgB,uBAAuB,kBAAkB,SAAS,sBAAsB,yBAAyB,oBAAoB,YAAY,yDAAyD,cAAc,iBAAiB,WAAW,YAAY,uBAAuB,eAAe,yBAAyB,mBAAmB,uBAAuB,mBAAmB,WAAW,0BAA0B,gCAAgC,eAAe,wBAAwB,uBAAuB,2BAA2B,uBAAuB,aAAa,sBAAsB,oBAAoB,cAAc,eAAe,cAAc,eAAe,wCAAwC,aAAa,6BAA6B,WAAW,YAAY,8BAA8B,iCAAiC,UAAU,SAAS,mBAAmB,aAAa,mBAAmB,iBAAiB,sBAAsB,uBAAuB,eAAe,2BAA2B,yBAAyB,mBAAmB,mBAAmB,aAAa,eAAe,WAAW,qBAAqB,kBAAkB,cAAc,oCAAoC,qBAAqB,qBAAqB,+BAA+B,kBAAkB,uBAAuB,gBAAgB,eAAe,8CAA8C,gBAAgB,aAAa,aAAa,sBAAsB,eAAe,cAAc,sBAAsB,YAAY,kBAAkB,MAAM,OAAO,gBAAgB,aAAa,UAAU,uBAAuB,eAAe,yBAAyB,mBAAmB,uCAAuC,2CAA2C,gBAAgB,cAAc,cAAc,aAAa,qBAAqB,kBAAkB,6CAA6C,mBAAmB,YAAY,kBAAkB,aAAa,gBAAgB,eAAe,gBAAgB,kBAAkB,cAAc,eAAe,iDAAiD,YAAY,UAAU,yBAAyB,cAAc,SAAS,QAAQ,kBAAkB,oBAAoB,SAAS,wBAAwB,iCAAiC,yBAAyB,iBAAiB,iBAAiB,yBAAyB,2BAA2B,4BAA4B,iBAAiB,iBAAiB,8BAA8B,yBAAyB,+BAA+B,4BAA4B,6DAA6D,UAAU,8BAA8B,WAAW,+BAA+B,WAAW,2DAA2D,WAAW,6BAA6B,UAAU,8BAA8B,UAAU,mDAAmD,WAAW,SAAS,yBAAyB,cAAc,SAAS,QAAQ,kBAAkB,oBAAoB,yBAAyB,iCAAiC,wBAAwB,iBAAiB,gBAAgB,0BAA0B,2BAA2B,2BAA2B,iBAAiB,gBAAgB,qDAAqD,UAAU,SAAS,yBAAyB,cAAc,SAAS,QAAQ,kBAAkB,oBAAoB,0BAA0B,iCAAiC,uBAAuB,iBAAiB,gBAAgB,2BAA2B,2BAA2B,0BAA0B,iBAAiB,gBAAgB,uDAAuD,SAAS,uBAAuB,yBAAyB,cAAc,SAAS,QAAQ,kBAAkB,oBAAoB,2BAA2B,iCAAiC,sBAAsB,iBAAiB,iBAAiB,4BAA4B,2BAA2B,yBAAyB,iBAAiB,iBAAiB,+DAA+D,qBAAqB,iEAAiE,sBAAsB,qEAAqE,qBAAqB,KAAK,WAAW,UAAU,kBAAkB,yBAAyB,qBAAqB,kBAAkB,4CAA4C,wBAAwB,QAAQ,0BAA0B,IAAI,4BAA4B,IAAI,2BAA2B,oBAAoB,4BAA4B,oBAAoB,4BAA4B,kBAAkB,aAAa,kBAAkB,MAAM,OAAO,UAAU,sBAAsB,2BAA2B,gBAAgB,sBAAsB,mBAAmB,sBAAsB,kBAAkB,uBAAuB,sBAAsB,kBAAkB,+BAA+B,aAAa,gCAAgC,aAAa,iCAAiC,aAAa,mBAAmB,kBAAkB,YAAY,8BAA8B,kBAAkB,WAAW,iCAAiC,kBAAkB,MAAM,QAAQ,WAAW,eAAe,WAAW,YAAY,iBAAiB,uBAAuB,oCAAoC,sBAAsB,UAAU,gCAAgC,sBAAsB,6BAA6B,mCAAmC,4BAA4B,GAAG,sBAAsB,UAAU,IAAI,0BAA0B,UAAU,IAAI,sBAAsB,UAAU,IAAI,0BAA0B,UAAU,KAAK,sBAAsB,WAAW,qNAAqN,cAAc,YAAY,cAAc,kBAAkB,sBAAsB,kBAAkB,yBAAyB,sBAAsB,qBAAqB,iBAAiB,uBAAuB,cAAc,YAAY,uBAAuB,2BAA2B,0BAA0B,wBAAwB,uBAAuB,WAAW,qFAAqF,SAAS,OAAO,kBAAkB,QAAQ,MAAM,kCAAkC,gBAAgB,kBAAkB,sBAAsB,UAAU,eAAe,sBAAsB,WAAW,kBAAkB,cAAc,YAAY,uBAAuB,mCAAmC,gBAAgB,WAAW,gBAAgB,qBAAqB,cAAc,WAAW,kBAAkB,yBAAyB,wBAAwB,qBAAqB,iBAAiB,OAAO,cAAc,WAAW,yBAAyB,sBAAsB,uBAAuB,YAAY,eAAe,MAAM,gBAAgB,gBAAgB,cAAc,SAAS,SAAS,YAAY,kBAAkB,QAAQ,QAAQ,6CAA6C,sBAAsB,cAAc,cAAc,kBAAkB,uBAAuB,WAAW,UAAU,MAAM,UAAU,sBAAsB,WAAW,OAAO,SAAS,UAAU,2CAA2C,cAAc,YAAY,WAAW,kBAAkB,WAAW,cAAc,sBAAsB,OAAO,MAAM,cAAc,sBAAsB,qBAAqB,iBAAiB,WAAW,MAAM,UAAU,qBAAqB,iBAAiB,WAAW,OAAO,SAAS,qBAAqB,iBAAiB,UAAU,MAAM,UAAU,qBAAqB,YAAY,iBAAiB,WAAW,OAAO,eAAe,sBAAsB,WAAW,YAAY,UAAU,uBAAuB,iBAAiB,gBAAgB,WAAW,QAAQ,uBAAuB,iBAAiB,SAAS,iBAAiB,SAAS,uBAAuB,iBAAiB,UAAU,gBAAgB,QAAQ,uBAAuB,YAAY,gBAAgB,SAAS,iBAAiB,wBAAwB,mBAAmB,WAAW,SAAS,wBAAwB,mBAAmB,UAAU,SAAS,wBAAwB,YAAY,mBAAmB,UAAU,wBAAwB,YAAY,mBAAmB,YAAY,UAAU,WAAW,WAAW,yBAAyB,wBAAwB,YAAY,YAAY,yBAAyB,wBAAwB,YAAY,YAAY,0BAA0B,wBAAwB,WAAW,YAAY,WAAW,+BAA+B,sBAAsB,YAAY,cAAc,cAAc,YAAY,UAAU,kBAAkB,WAAW,WAAW,mBAAmB,UAAU,YAAY,sCAAsC,2OAA2O,cAAc,cAAc,SAAS,kBAAkB,QAAQ,gBAAgB,wBAAwB,cAAc,YAAY,cAAc,iBAAiB,qIAAqI,mBAAmB,kDAAkD,cAAc,sBAAsB,kBAAkB,6BAA6B,kCAAkC,kCAAkC,YAAY,WAAW,gCAAgC,YAAY,WAAW,gCAAgC,2DAA2D,WAAW,4BAA4B,6BAA6B,kBAAkB,wCAAwC,YAAY,MAAM,OAAO,sCAAsC,WAAW,SAAS,OAAO,8BAA8B,sBAAsB,eAAe,qBAAqB,WAAW,YAAY,kBAAkB,6EAA6E,kBAAkB,UAAU,0CAA0C,SAAS,wCAAwC,WAAW,SAAS,oCAAoC,aAAa,cAAc,WAAW,YAAY,YAAY,kBAAkB,MAAM,QAAQ,SAAS,OAAO,8EAA8E,kBAAkB,qCAAqC,2EAA2E,mEAAmE,uCAAuC,8BAA8B,kBAAkB,QAAQ,YAAY,mBAAmB,mBAAmB,iBAAiB,WAAW,YAAY,gBAAgB,oCAAoC,qBAAqB,aAAa,eAAe,cAAc,WAAW,aAAa,aAAa,sBAAsB,kCAAkC,gBAAgB,kBAAkB,gBAAgB,aAAa,YAAY,kBAAkB,WAAW,YAAY,6BAA6B,eAAe,wBAAwB,gBAAgB,WAAW,aAAa,aAAa,sBAAsB,kCAAkC,gBAAgB,kBAAkB,kBAAkB,aAAa,YAAY,oBAAoB,WAAW,YAAY,6BAA6B,eAAe,wBAAwB,iFAAiF,WAAW,WAAW,YAAY,eAAe,8HAA8H,WAAW,YAAY,6BAA6B,mGAAmG,eAAe,QAAQ,kBAAkB,MAAM,OAAO,aAAa,cAAc,gBAAgB,yBAAyB,wBAAwB,QAAQ,cAAc,gBAAgB,qBAAqB,eAAe,2EAA2E,eAAe,WAAW,0BAA0B,uBAAuB,eAAe,8BAA8B,eAAe,mBAAmB,gBAAgB,iBAAiB,yBAAyB,UAAU,WAAW,aAAa,WAAW,kBAAkB,sBAAsB,kBAAkB,QAAQ,SAAS,kCAAkC,wBAAwB,kBAAkB,uBAAuB,qBAAqB,sBAAsB,2BAA2B,4BAA4B,2BAA2B,8DAA8D,wBAAwB,8DAA8D,wBAAwB,eAAe,wBAAwB,iCAAiC,wBAAwB,oCAAoC,wBAAwB,cAAc,YAAY,sBAAsB,mBAAmB,gBAAgB,4BAA4B,eAAe,gBAAgB,eAAe,oBAAoB,mBAAmB,sBAAsB,WAAW,aAAa,yBAAyB,gBAAgB,kBAAkB,sBAAsB,aAAa,0BAA0B,YAAY,mBAAmB,4BAA4B,eAAe,gBAAgB,eAAe,gCAAgC,mBAAmB,mCAAmC,mBAAmB;AAC1muD;AACA","file":"Scripts.ContentBox-4.1.1.17870f9ba8636f61041a.js","sourcesContent":["/* v3.1 */\r\nfunction _tabs(n) {\r\n var html = '';\r\n for (var i = 1; i <= n; i++) {\r\n html += '\\t';\r\n }\r\n return '\\n' + html;\r\n}\r\n\r\nvar data_basic = {\r\n 'snippets': [\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-01.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n '
' +\r\n\t\t\t \t\t'

Beautiful Content. Responsive.

' +\r\n \t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-02.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-03.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t \t\t'

Heading 1 Text Goes Here.

' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-04.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t \t\t'

Heading 2 Text Goes Here.

' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-05.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-06.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-07.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-08.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-09.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n '
' +\r\n\t\t\t \t\t'

Lorem Ipsum is simply dummy text of the printing industry

' +\r\n '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-10.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n '
' +\r\n '

This is a special report

' +\r\n\t\t\t \t\t'

Lorem Ipsum is simply dummy text of the printing industry

' +\r\n '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-11.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t \t\t'

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-12.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t \t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-13.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t \t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-14.png', \r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'

List Item

' +\r\n\t\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'

List Item

' +\r\n\t\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-15.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n\t\t\t '
' +\r\n '' +\r\n\t\t\t\t '\\n' +\r\n\t\t\t\t '\\n' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/basic-16.png',\r\n\t\t 'category': '120',\r\n\t\t 'html':\r\n '
' +\r\n \t '' +\r\n \t '' +\r\n \t '' + \t\t\t\r\n\t\t '
 '\r\n\t\t},\r\n \r\n\t\t/* Video */\r\n\t\t{\r\n\t\t'thumbnail': 'preview/element-video.png',\r\n\t\t'category': '120',\r\n\t\t'html':\r\n\t\t\t\t'
' +\r\n \t\t'' +\r\n \t'
'\r\n },\r\n\r\n /* Map */\r\n\t\t{\r\n\t\t'thumbnail': 'preview/element-map.png',\r\n\t\t'category': '120',\r\n\t\t'html':\r\n\t\t\t '
' +\r\n \t\t'' +\r\n \t'
'\r\n },\r\n\r\n\r\n /* Slider */\r\n\r\n // Slider Module (Slick)\r\n\t\t{\r\n\t\t'thumbnail': 'preview/element-slider.png',\r\n\t\t'category': '120',\r\n\t\t'html':\r\n\t\t\t '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n 'var docReady = function (fn) {' +\r\n 'var stateCheck = setInterval(function () {' +\r\n 'if (document.readyState !== \"complete\") return;' +\r\n 'clearInterval(stateCheck);' +\r\n 'try { fn() } catch (e) { }' +\r\n '}, 1);' +\r\n '};' +\r\n 'docReady(function () {' +\r\n 'jQuery(\"#{id}\").css(\"display\",\"block\");' +\r\n 'jQuery(\"#{id}\").slick({' +\r\n 'dots: true,' +\r\n 'arrows: true,' +\r\n 'infinite: true,' +\r\n 'speed: 500,' +\r\n 'cssEase: \"linear\",' +\r\n 'slidesToShow: 1,' +\r\n 'autoplay: false,' +\r\n 'autoplaySpeed: 3000,' +\r\n 'fade: false,' +\r\n 'adaptiveHeight: true,' +\r\n 'responsive: [' +\r\n '{breakpoint: 480, settings: {arrows: false,slidesToShow: 1}}' +\r\n ']' +\r\n '});' +\r\n '});' +\r\n '' +\r\n '') +\r\n\r\n '\" data-settings=\"' +\r\n\r\n encodeURIComponent('[' +\r\n '{' +\r\n '\"auto\":false,' +\r\n '\"arrow\":true,' +\r\n '\"dots\":true,' +\r\n '\"fade\":false,' +\r\n '\"height\":\"500\",' +\r\n '\"images\":' +\r\n '[' +\r\n '{' +\r\n '\"src\": \"assets/minimalist-blocks/images/slide1.jpg\", ' +\r\n '\"caption\": \"\", \"link\": \"\", \"width\": \"450\", \"align\": \"\", \"position\": \"bottom left\"' +\r\n '},' +\r\n '{' +\r\n '\"src\": \"assets/minimalist-blocks/images/slide2.jpg\", ' +\r\n '\"caption\": \"\", \"link\": \"\", \"width\": \"450\", \"align\": \"\", \"position\": \"bottom left\"' +\r\n '},' +\r\n '{' +\r\n '\"src\": \"assets/minimalist-blocks/images/slide3.jpg\", ' +\r\n '\"caption\": \"\", \"link\": \"\", \"width\": \"450\", \"align\": \"\", \"position\": \"bottom left\"' +\r\n '}' +\r\n ']' +\r\n '}]') + '\"' +\r\n\r\n '>' +\r\n\r\n\t\t '
' +\r\n\t\t\t ''\r\n },\r\n \r\n // Slider Module (Glide) => Experimental\r\n {\r\n 'thumbnail': 'preview/element-slider.png', 'glide': true,\r\n 'category': '120',\r\n 'html':\r\n '
' +\r\n '' +\r\n '
'\r\n },\r\n \r\n /* Custom Code */\r\n\t\t{\r\n\t\t'thumbnail': 'preview/element-code.png',\r\n\t\t'category': '120',\r\n\t\t'html':\r\n\t\t\t '
' +\r\n\t\t\t\t '
Lorem ipsum' +\r\n '

This is a code block. You can edit this block using the source dialog.

' +\r\n '' +\r\n 'var docReady = function (fn) {' +\r\n\t 'var stateCheck = setInterval(function () {' +\r\n\t\t 'if (document.readyState !== \"complete\") return;' +\r\n\t\t 'clearInterval(stateCheck);' +\r\n\t\t 'try{fn()}catch(e){}' +\r\n\t '}, 1);' +\r\n '};' +\r\n 'docReady(function() {' +\r\n\t 'document.querySelector(\\'#{id}\\').innerHTML =\\'Hello World..!\\';' +\r\n '});' +\r\n '') +\r\n\r\n '\">' +\r\n\r\n\t\t\t\t '
' +\r\n\t\t\t '
'\r\n },\r\n\t\t\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-02.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Flying High

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-04.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

A BEAUTIFUL DAY IN OCTOBER

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Time to think, time to create.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

— By David Anderson

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-07.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Sunday Lovely Sunday.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

By Jennifer Anderson

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\t\t\t\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-08.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WORDS FROM ANDREW JONES

' +\r\n\t\t\t\t\t\t'\\n

Home is wherever I\\'m with you.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\t\t\t\t\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-09.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Simplify Things

' +\r\n\t\t\t\t\t\t'\\n

Natasha Williams

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Vivamus leo ante, consectetur sit amet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\t\t\t\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-10.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

EMILLIA JONES

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Hello, Summer.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem Ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\t\t\t\t\t\t\r\n\t\t},\r\n\t\t\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-13.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Slow Living

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Vivian C. Bailey

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t\t'\\n

Vivamus leo ante, consectetur sit amet vulputate vel, sit amet lectus.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\t\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-16.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Simple, Versatile, Functional

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

JANE SMITH

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\t\t\t\t\t\t\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-23.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

New Style

' +\r\n\t\t\t\t\t\t'\\n

By David Smith

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-25.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

the

' +\r\n\t\t\t\t\t\t'\\n

OCEAN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus leo ante, consectetur sit amet vulputate vel, dapibus sit amet lectus.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Spencer Lane

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-27.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

A Little Story

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

JOHN ANDERSON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-30.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

My Summer

' +\r\n\t\t\t\t\t\t'\\n

\"Lorem Ipsum is simply dummy text of the printing and typesetting industry.\"
Jane Clark

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-31.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Simple, clean, bright

' +\r\n\t\t\t\t\t\t'\\n

— Samantha Holmes

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-33.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

EMMA STAUFER

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Back to December

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-35.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Happiness.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet. Vimamus ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet. Vimamus ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Bryan Lewis

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-39.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'

Spring in March

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Irene Johnson

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-40.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Twenty Four Minutes

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

William Norris

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-41.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Early Morning Riser

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Jeff Watkins

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-43.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

BEAUTY OF NATURE

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

DAVID ANDERSON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-46.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

October & November

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Sarah Anderson

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-49.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

just chillin\\'

' +\r\n\t\t\t\t\t\t'\\n

\"Lorem Ipsum is simply dummy text.\" — Anne Marry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-50.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Michelle Duncan

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

IN LOVE WITH YOUR LIFE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus leo ante, consectetur sit amet vulputate vel, dapibus sit amet lectus.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-51.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Behind you.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus leo ante, consectetur sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Brenda Waller

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-52.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CLEAN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Words from Michael Williams

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet. Vivamus ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet. Vivamus ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-54.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

A STORY.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

THE WHEELS ARE SPINNING

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Casey Lansford

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-55.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Brave

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus leo ante, consectetur sit amet vulputate vel, dapibus sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

RUTH WATTERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-57.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Keep everything Simple

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Words from:
Brandon Lamberth

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-58.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

hello...

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Samantha Holmes

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-59.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Go explore.

' +\r\n\t\t\t\t\t\t'\\n

Russel Y. Trevino

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-60.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Heart-warming story from
Wilhelmina Bradley

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Best friend

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t\t\t\t\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-61.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

WORDS FROM HEART

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Stephen Garcia

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/article-62.png',\r\n\t\t 'category': '118',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

A STORY

' +\r\n\t\t\t\t\t\t'\\n

Dancing in Harmony

' +\r\n\t\t\t\t\t\t'\\n

\"Lorem Ipsum is simply dummy text of the printing.\"

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Annie Baldwin

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus leo ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t\r\n\r\n\r\n /* HEADLINE */\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-02.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STUNNING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-07.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Outstanding

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Contact Us' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-08.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Café & Bistro

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-09.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Calm, Pure, and lovely

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard text ever since the 1500s, when an unknown printer took a galley of type

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Shop Now' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n {\r\n\t\t 'thumbnail': 'preview/header-23.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Pure & Healthy

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard text ever since the 1500s, when an unknown printer took a galley of type

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Our Products' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-25.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Welcome to our coffee shop

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Smell it, taste it.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Browse Menu' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-26.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Planning a memorable trip? You came to the right place.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'CONTACT US' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-27.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

We are Creative Agency in New York

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

CLEAN. SIMPLE.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Get A Quote' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-28.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Good for Health, Good for You

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'All Products' +\r\n\t\t\t\t '\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-32.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\t\t\t\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Stitch Studio

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Join Our Sewing Classes & Craft Workshops

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Contact Us' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-34.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Unique.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

PLAN YOUR SPECIAL DAY

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Book a Consultation' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-38.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

DREAM HOME

' +\r\n\t\t\t\t\t\t'\\n

BEAUTIFY YOUR HOME WITH MODERN FURNITURE SET.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'New Arrivals' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-41.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

We Create and Design Beautiful Websites

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Our Works' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-42.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Tasty

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Healthy & Natural Food

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Our Menu' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-43.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Mike Watson

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Expert in Public Interior Design

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'View Portfolio' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-46.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Monday to Friday

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

We make shopping way easier and convenient for you

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'View Collection' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-47.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Struggling to find the perfect event organizer? No worries. We\\'re here to help you creating the event like no other.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-48.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Design
in
Silence

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an
unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-49.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STUDIO

' +\r\n\t\t\t\t\t\t'\\n

EVERY DETAIL MATTERS

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'OUR WORKS' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-50.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

A MININALIST STYLE

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of printing industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'View Gallery' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-51.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

THE LOOKBOOK

' +\r\n\t\t\t\t\t\t'\\n

NEW SUMMER TRENDS.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-52.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TRAVEL AGENCY

' +\r\n\t\t\t\t\t\t'\\n

Where Will You Go Today?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'View Destinations' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-53.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MARY EDWARDS

' +\r\n\t\t\t\t\t\t'\\n

Web Developer & Graphic Designer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-54.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Spring 2020

' +\r\n\t\t\t\t\t\t'\\n

IT\\'S YOUR TIME TO SHINE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'Contact Us' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-55.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Creative Agency

' +\r\n\t\t\t\t\t\t'\\n

Innovation

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Get a Quote' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-56.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hello Friends

' +\r\n\t\t\t\t\t\t'\\n

This is Dave. I Develop Websites and Design Beautiful Things You Will Love

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-57.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

now or never

' +\r\n\t\t\t\t\t\t'\\n

MEN\\'S CLOTHING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry, vivamus leo ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-58.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Love for Food

' +\r\n\t\t\t\t\t\t'\\n

Eat & Dream

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-59.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

We design and build awesome products that make a difference.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-60.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

HOME DECOR

' +\r\n\t\t\t\t\t\t'\\n

A Reflection of You

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Modern / Functional / Timeless

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-61.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CREATIVITY. PEOPLE.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

A Place to Connect

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-63.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Scale.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-104.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

EXPAND YOUR BUSINESS

' +\r\n\t\t\t\t\t\t'\\n

We build awesome things that make a difference

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
Contact Us
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-105.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Made with Love

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-106.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Creative Agency You Can Trust

' +\r\n\t\t\t\t\t\t'\\n

AWESOME

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
Get a Quote
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/header-107.png',\r\n\t\t 'category': '101',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CREATIVE
INSPIRING

' +\r\n\t\t\t\t\t\t'\\n

Design for Delight

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t/* PHOTOS */\r\n\r\n\r\n\t\t//TODO START\r\n\r\n\r\n\r\n\t\t{\r\n\t\t'thumbnail': 'preview/photos-51.png',\r\n\t\t'category': '102',\r\n\t\t'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-52.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-50.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-47.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-48.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-49.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-46.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-53.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-14.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PORTFOLIO

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-15.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Gallery

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-16.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-17.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

GALLERY

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n '
' +\r\n '\\n

Lorem Ipsum is dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n '\\n

Lorem Ipsum is dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n '
' +\r\n '\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n '\\n

Lorem Ipsum is dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-18.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Gallery.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-19.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Creative Things We\\'ve Done

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-20.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-21.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CREATIVE THINGS WE HAVE CREATED LATELY

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-22.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Caption.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-23.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-24.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-25.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-26.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-27.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Vivamus leo ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-28.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Vivamus leo ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-29.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Caption.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-30.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Caption.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-35.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Image Caption

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Vivamus leo ante sit amet.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-36.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Image Caption

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Vivamus leo ante sit amet.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-37.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Goodbye, things.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-38.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Behold the Beauty.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-39.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

WORK 01

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

WORK 02

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-40.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-41.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-69.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Image Caption

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-70.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Image Caption

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-71.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
\"\"
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
\"\"
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

IMAGE CAPTION

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-72.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
\"\"
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

01

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

02

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-73.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'

Caption

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-74.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'

Caption

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-75.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Caption

' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-76.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Caption

' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry

' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-77.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Gallery

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Image Caption

' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-78.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Gallery

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-79.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Latest Works

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\t\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Caption
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Caption
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-80.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

Portfolio

' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/photos-81.png',\r\n\t\t 'category': '102',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\r\n //TODO END\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-01.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MEET OUR TEAM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

VINCENT NELSON

' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGNER

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

NATHAN WILLIAMS

' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPER

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

THOMAS CALVIN

' +\r\n\t\t\t\t\t\t'\\n

ACCOUNT MANAGER

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-02.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HIGHLY QUALIFIED TEAM

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

JENNIFER ASH

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

MICHAEL ISON

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

JOHN CONWAY

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-03.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MEET THE EXPERTS

' +\r\n\t\t\t\t\t\t'\\n

Here are our awesome team.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Sarah Doe

' +\r\n\t\t\t\t\t\t'\\n

Founder

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

David Anderson

' +\r\n\t\t\t\t\t\t'\\n

Programmer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Jennifer Clarke

' +\r\n\t\t\t\t\t\t'\\n

Web Designer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-04.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Meet
our amazing team.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
Nathan Williams / Founder
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
Sarah Smith / Developer
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
Jane Doe / Web Designer
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-05.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Meet The Team

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Here are our awesome team.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

David Smith

' +\r\n\t\t\t\t\t\t'\\n

CEO & Founder

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

Milla Clarke

' +\r\n\t\t\t\t\t\t'\\n

Project Manager

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

John Rugg

' +\r\n\t\t\t\t\t\t'\\n

Developer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

Sarah Ashley

' +\r\n\t\t\t\t\t\t'\\n

Web Designer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-07.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR TEAM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Your Name

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Your Name

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-08.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MEET THE EXPERTS

' +\r\n\t\t\t\t\t\t'\\n

Here are our awesome team

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(2) + '

JANE FOSTER

' +\r\n\t\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '

MICHELLE DOE

' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '

JANE WILLIAMS

' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-12.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR TEAM

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

JOHN ANDERSON

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

DAVID CLARK

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

NATASHA KERR

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-13.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Discover More

' +\r\n\t\t\t\t\t\t'\\n

ABOUT ME

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Jeniffer Phillips

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-14.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ABOUT ME

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

David Stuart

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-15.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MEET OUR TEAM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Laura Clark

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Michael Smith

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-16.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PASSIONATE TEAM

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Roy Krueger

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Amanda Barnet

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-17.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MEET THE TEAM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Patricia Young

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Angela Griffin

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-18.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hi World!

' +\r\n\t\t\t\t\t\t'\\n

I\\'M AUDREY SMITH

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

I design beautiful and functional stuff

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-19.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MEET OUR TEAM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

Yolanda Ludwig

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

Anthony Fales

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-20.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HI, I\\'M HENDRY CODY. I CREATE SIMPLE AND BEAUTIFUL WEBSITES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Get in touch with me

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-21.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Irene Waller

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-22.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Kevin Josiah

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-23.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

Jenny Barnett

' +\r\n\t\t\t\t\t\t'\\n

Graphic Designer

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet vivamus leo ante.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-24.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

George Smith

' +\r\n\t\t\t\t\t\t'\\n

Graphic Designer

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet vivamus leo ante.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-26.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Sabrina Watson

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPER

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-27.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Julio Anderson

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPER

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-29.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Martha Massey

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum dolor sit amet.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-30.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

James Tidwell

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum dolor sit amet.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n {\r\n 'thumbnail': 'preview/profile-43.png',\r\n 'category': '103',\r\n 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Amanda Davis

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n },\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-44.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Ronald Evans

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-31.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Discover more about me.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Charles Parker

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum dolor sit amet.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-32.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Discover more about me.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Sarah Smith

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem Ipsum dolor sit amet.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-59.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

A.

' +\r\n\t\t\t\t\t\t'\\n

Ann Higby

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Web Developer

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-60.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

M.

' +\r\n\t\t\t\t\t\t'\\n

Michael Snow

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Freelance Graphic Designer

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-61.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hello

' +\r\n\t\t\t\t\t\t'\\n

I\\'m Olivia Maus. I develop website and design awesome things you will love.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-62.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hello

' +\r\n\t\t\t\t\t\t'\\n

I\\'m Juanita Smith. I develop website and design awesome things you will love.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-63.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

About us

' +\r\n\t\t\t\t\t\t'\\n

Founded in 2019

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-64.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hello, we are [Company Name]. We are a team of passionate design-thinkers & product strategist.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-65.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Story

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1st floor, Building Name.
Street Name, City. State 456.
Phone: (123) 456 7890

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-66.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

who we are

' +\r\n\t\t\t\t\t\t'\\n

read the story about us and discover what we do.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

we\\'re a team of passionate design-thinkers

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-67.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Who We Are

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-68.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ABOUT US

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

We believe in simplicity

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-69.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ABOUT US

' +\r\n\t\t\t\t\t\t'\\n

We are CreativeStudio. We love to create and develop beautiful things.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1st floor, Building Name.
Street Name, City. State 456.
(123) 456 7890

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-70.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

About Us.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-71.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hello, we are [Company Name]. We are a team of passionate design-thinkers & product strategist.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-72.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Who are we?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Portfolio   Contact' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-73.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHO WE ARE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
\t' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/profile-74.png',\r\n\t\t 'category': '103',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

About.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t/* PRODUCTS */\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-01.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PRODUCTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Product One, $109

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Product Two, $299

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-19.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES WE PROVIDE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Creative Designs

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Web Development

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Brand Building 

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Friendly Support

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-18.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SERVICES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Service One

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Service Two

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Service Three

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Service Four

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Service Five

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Service Six

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-02.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'

Our Products

' +\r\n\t\t\t\t\t\t\t'\\n

We make shopping way easier & convenient for you

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
\"\"
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Product One

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
\"\"
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Product Two

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
\"\"
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Product Three

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-04.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SERVICES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n '
' +\r\n\t '
' +\r\n '
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t '' +\r\n\t\t\t\t\t\t'\\n

Clean & Minimalist Design

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Modern Ideas

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Brand Building

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Unlimited Possibilities

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Superior Supports

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Web Development

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-13.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TOP RATED PRODUCTS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

PRODUCT NAME

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n

BUY NOW

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

PRODUCT NAME

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n

BUY NOW

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

PRODUCT NAME

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n

BUY NOW

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-05.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES WE OFFER

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'\\n

Service One

' +\r\n\t\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'\\n

Service Two

' +\r\n\t\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'\\n

Service Three

' +\r\n\t\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-07.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SERVICES

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01.

' +\r\n\t\t\t\t\t\t'\\n

SERVICE ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02.

' +\r\n\t\t\t\t\t\t'\\n

SERVICE TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03.

' +\r\n\t\t\t\t\t\t'\\n

SERVICE THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-08.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES WE PROVIDE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1

' +\r\n\t\t\t\t\t\t'\\n

MODERN IDEAS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

2

' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

3

' +\r\n\t\t\t\t\t\t'\\n

SUPERIOR SUPPORTS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-10.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SERVICES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Generate Ideas

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Creative Designs

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Support

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-09.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PRODUCTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

PRODUCT NAME, $129

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

BUY NOW

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

PRODUCT NAME, $79

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

BUY NOW

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

PRODUCT NAME, $49

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

BUY NOW

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n {\r\n 'thumbnail': 'preview/products-15.png',\r\n 'category': '104',\r\n 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service One

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service Two

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service Three

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n },\t\t\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-12.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Product Name

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

$17,00

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Product Name

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

$14,00

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-14.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES WE OFFER

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service One

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service Two

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service Three

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Service Four

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n {\r\n 'thumbnail': 'preview/products-20.png',\r\n 'category': '104',\r\n 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES WE OFFER

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Creative Design

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Web Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

24/7 Supports

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n },\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-21.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SERVICES WE OFFER

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Creative Design

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Web Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

24/7 Supports

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-17.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE FOUR

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE FIVE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE SIX

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-16.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SERVICE FOUR

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-03.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PRODUCTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'PRODUCT NAME' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '$79' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'PRODUCT NAME' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '$99' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'PRODUCT NAME' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '$89' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'PRODUCT NAME' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '$99' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-11.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SERVICES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Generate Ideas

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Support

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-36.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Vintage Flower Vase

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

$39

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Categories: Home Decor, New Arrival

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-37.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Green Wingtip Shoes

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

$217

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Categories: Shoes, Men

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\t\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-38.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Store Name
Perth, Australia

' +\r\n\t\t\t\t\t\t'\\n

Stylish Cup

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t\t'\\n

$17

' +\r\n\t\t\t\t\t\t'\\n

In stock: 126 items

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-39.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Store Name
Perth, Australia

' +\r\n\t\t\t\t\t\t'\\n

Wooden Chair

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t\t'\\n

$87

' +\r\n\t\t\t\t\t\t'\\n

In stock: 48 items

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t'
' +\t\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-40.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Bikes

' +\r\n\t\t\t\t\t\t'\\n

CLASSIC BIKE

' +\r\n\t\t\t\t\t\t'\\n

$134

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-41.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Furniture

' +\r\n\t\t\t\t\t\t'\\n

MODERN SOFA

' +\r\n\t\t\t\t\t\t'\\n

$439

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-42.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Charge & Sync Cable

' +\r\n\t\t\t\t\t\t'\\n

$23

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Color Availability: White, Black

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n

Share:

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-43.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Woman\\'s Watch

' +\r\n\t\t\t\t\t\t'\\n

$79

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Color Availability: Soft Pink, Black, Brown, White

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n

Share:

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-44.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Extra Bass Earphone

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s.

' +\r\n\t\t\t\t\t\t'\\n\\n' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
Price$34
Color AvailabilityBlack, White, Red
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Share:

' +\r\n\t\t\t\t\t\t'\\n\\n\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-45.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Ceramic Pitcher

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s.

' +\r\n\t\t\t\t\t\t'\\n\\n' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
Price$41
Color AvailabilityBlack, Brown, White
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Share:

' +\r\n\t\t\t\t\t\t'\\n\\n\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-46.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Leather Watch

' +\r\n\t\t\t\t\t\t'\\n

Availability: In stock
Delivery: 1 to 2 weeks

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
$91 | Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-47.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Desk Lamp

' +\r\n\t\t\t\t\t\t'\\n

Availability: In stock
Delivery: 1 to 5 days

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
$53 | Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-48.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Leather Handbag

' +\r\n\t\t\t\t\t\t'\\n

$213

' +\r\n\t\t\t\t\t\t'\\n

Availability: In stock

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n

Categories: New Arrival, Women, Handbags

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-49.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Athletic Shoes

' +\r\n\t\t\t\t\t\t'\\n

$512

' +\r\n\t\t\t\t\t\t'\\n

Availability: In stock

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n

Categories: Men, Sport, Shoes

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-50.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Silk Pillow

' +\r\n\t\t\t\t\t\t'\\n

Color Availability: Naxy, Red, White

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t\t'\\n
$99 | Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-51.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Rattan Lamp

' +\r\n\t\t\t\t\t\t'\\n

Color Availability: Brown, White

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t\t'\\n
$72 | Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-52.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Latest Products / Women / Sunglasses

' +\r\n\t\t\t\t\t\t'\\n

SUNGLASSES

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t\t'\\n

$36

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-53.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Women / Tops / Knitwear

' +\r\n\t\t\t\t\t\t'\\n

KNITTED SWEATER

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t\t'\\n

$49

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-54.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Alexa Earrings

' +\r\n\t\t\t\t\t\t'\\n

$22

' +\r\n\t\t\t\t\t\t'\\n

Color Availability: Brown, Silver, Black
Delivery: 1 to 3 days

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-55.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Sofa Chair

' +\r\n\t\t\t\t\t\t'\\n

$118

' +\r\n\t\t\t\t\t\t'\\n

Color Availability: Beige, Brown, White
Delivery: 1 to 2 weeks

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-56.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Roberto Pizza

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t\t'\\n

SIZE:
Small, Medium, Large

' +\r\n\t\t\t\t\t\t'\\n

TOPPINGS:
Roast Beef, Mushrooms, Bacon, Pineapple, Pepperoni, Tomatoes, Extra Cheese

' +\r\n\t\t\t\t\t\t'\\n

$15

' +\r\n\t\t\t\t\t\t'\\n
Place Order
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-57.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Meat Burger

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t\t'\\n

SIZE:
Small, Medium, Large

' +\r\n\t\t\t\t\t\t'\\n

EXTRAS:
Burger Patty, Smoked Beef, Swiss Cheese, Cheese Sauce, Mushroom Sauce

' +\r\n\t\t\t\t\t\t'\\n

$9

' +\r\n\t\t\t\t\t\t'\\n
Place Order
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-58.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Rice Noodles

' +\r\n\t\t\t\t\t\t'\\n

 25 MINS     2 PEOPLE    142 CALORIES

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'\\n

$23

' +\r\n\t\t\t\t\t\t'\\n
Place Order
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-59.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Strawberries Dessert

' +\r\n\t\t\t\t\t\t'\\n

 18 MINS     1 PERSON    93 CALORIES

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took.

' +\r\n\t\t\t\t\t\t'\\n

$14

' +\r\n\t\t\t\t\t\t'\\n
Place Order
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-60.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Jiaozi Dumplings

' +\r\n\t\t\t\t\t\t'\\n

$7

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Be the first to review this food

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-61.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Chicken Dumplings

' +\r\n\t\t\t\t\t\t'\\n

$9

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t\t'\\n
Add to Cart   Buy Now
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Be the first to review this food

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-62.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Monte Cristo Toast $13

' +\r\n\t\t\t\t\t\t'\\n

325 cal

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
Add to Order
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/products-63.png',\r\n\t\t 'category': '104',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

King Avocado Toast $11

' +\r\n\t\t\t\t\t\t'\\n

170 cal

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
Add to Order
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-01.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHY CHOOSE US

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-02.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Vivamus leo ante, consectetur sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Vivamus leo ante, consectetur sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Vivamus leo ante, consectetur sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-03.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHY CHOOSE US?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Feature Item

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Feature Item

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Feature Item

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-04.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

CREATIVE IDEAS

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

PHOTOGRAPHY

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

RESPONSIVE DESIGN

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

DIGITAL MARKETING

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

ONLINE SUPPORT

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-05.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Discover

' +\r\n\t\t\t\t\t\t'\\n

Why Choose Our Products

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Feature Item

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Feature Item

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Feature Item

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-06.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-07.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1

' +\r\n\t\t\t\t\t\t'\\n

CREATIVE IDEAS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

2

' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

3

' +\r\n\t\t\t\t\t\t'\\n

RESPONSIVE DESIGN

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

4

' +\r\n\t\t\t\t\t\t'\\n

ONLINE SUPPORT

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-08.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FEATURES

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

FEATURE TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t\t'\\n

FEATURE THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-09.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SPECIAL FEATURES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-10.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR FEATURES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

FEATURE ITEM

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

FEATURE ITEM

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

FEATURE ITEM

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

FEATURE ITEM

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-11.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

FEATURE 01

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

FEATURE 02

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

FEATURE 03

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

FEATURE 04

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-12.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What Makes Us Different

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem ipsum dolor sit amet vivamus leo ante.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM
Lorem Ipsum is dummy.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM
Lorem Ipsum is dummy.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-13.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

FEATURE TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t\t'\\n

FEATURE THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

04

' +\r\n\t\t\t\t\t\t'\\n

FEATURE FOUR

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-14.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-15.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM
Lorem ipsum dummy text

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM
Lorem ipsum dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM
Lorem ipsum dummy text

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

FEATURE ITEM
Lorem ipsum dummy text

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-19.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SMART SOLUTIONS FOR YOUR BUSINESS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-27.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t _tabs(2) + '' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature One

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t _tabs(2) + '' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Two

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t _tabs(2) + '' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Three

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t _tabs(2) + '' +\r\n\t\t\t\t\t\t\t _tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Four

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-28.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

We do the work.
You stay focused on your customers

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Ideas

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Unlimited Possibilities

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-29.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-30.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Features

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t'\\n
Read More
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Feature Item
Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Feature Item
Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-31.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Powerful Features

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-32.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR FEATURES

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-33.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Special Features.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Feature Item
Lorem Ipsum is simply dummy text of the and typesetting printing industry.

' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text of the and typesetting printing industry.

' +\r\n\t\t\t\t\t\t'\\n

Feature Item
Lorem Ipsum is simply dummy text of the and typesetting printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/features-34.png',\r\n\t\t 'category': '105',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Special Features

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Feature Item
\"Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-01.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Discover

' +\r\n\t\t\t\t\t\t'\\n

HOW IT WORKS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1.

' +\r\n\t\t\t\t\t\t'\\n

STEP 01

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

2.

' +\r\n\t\t\t\t\t\t'\\n

STEP 02

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

3.

' +\r\n\t\t\t\t\t\t'\\n

STEP 03

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-02.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW WE WORK

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-03.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

THE PROCESS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01.

' +\r\n\t\t\t\t\t\t'\\n

STEP ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Vivamus leo ante, consectetur sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02.

' +\r\n\t\t\t\t\t\t'\\n

STEP TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Vivamus leo ante, consectetur sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-04.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW WE WORK

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t _tabs(1) + '' +\r\n\t\t\t\t\t\t _tabs(1) + '

STEP 1

' +\r\n\t\t\t\t\t\t _tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t _tabs(1) + '' +\r\n\t\t\t\t\t\t _tabs(1) + '

STEP 2

' +\r\n\t\t\t\t\t\t _tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t _tabs(1) + '' +\r\n\t\t\t\t\t\t _tabs(1) + '

STEP 2

' +\r\n\t\t\t\t\t\t _tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-05.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW IT WORKS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

1

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step One

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

2

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step Two

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

3

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step Three

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-06.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW IT WORKS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

1

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step One

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

2

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step Two

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

3

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step Three

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-07.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Discover

' +\r\n\t\t\t\t\t\t'\\n

OUR WORK STEPS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 STEP 01

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 STEP 2

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 STEP 3

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-08.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW

' +\r\n\t\t\t\t\t\t'\\n

Step One

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

IT

' +\r\n\t\t\t\t\t\t'\\n

Step Two

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WORKS

' +\r\n\t\t\t\t\t\t'\\n

Step Three

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-09.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Timeline Process

' +\r\n\t\t\t\t\t\t'\\n

Discover How We Work

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-10.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

THE PROCESS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 1

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 2

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 3

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 4

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-11.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

THE PROCESS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 1

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 2

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 3

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Step 4

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-12.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Timeline Process

' +\r\n\t\t\t\t\t\t'\\n

Discover How We Work

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

STEP ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

STEP TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t\t'\\n

STEP THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\t\t\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-13.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WORK STEPS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Vivamus leo ante, dolor sit amet vel.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Vivamus leo ante, dolor sit amet vel.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Vivamus leo ante, dolor sit amet vel.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\t\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-14.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Discover

' +\r\n\t\t\t\t\t\t'\\n

HOW WE WORK

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STEP ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STEP TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STEP THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\t\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-15.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP ONE

' +\r\n\t\t\t\t\t\t'\\n

Discovery

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP TWO

' +\r\n\t\t\t\t\t\t'\\n

Design and Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\t\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-16.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

THIS IS HOW WE WORK

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STEP ONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STEP TWO

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STEP THREE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-26.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How [our company] Works

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

CREATE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

PUBLISH

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

START SELLING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

MANAGE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-27.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How it Works

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP ONE
Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP TWO
Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STEP THREE
Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-28.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW
WE WORKS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1. Tell us what you need. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n

2. Solution offer. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n

3. Planning & design. Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

4. Implementing & maintenance. Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\t\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-29.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

4 simple steps

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

PLAN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

BUILD

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

MANAGE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-30.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How [our company] Works

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

1.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

2.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

3.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

4.

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-31.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

This is how we work

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Step 1

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Step 2

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Step 3

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Step 4

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-32.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How it Works

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Choose your product

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Add your design

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Processing

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Shipping

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/steps-33.png',\r\n\t\t 'category': '106',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WORK STEPS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-01.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CHOOSE YOUR PLAN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

LITE / $33

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

ADVANCED / $59

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

03

' +\r\n\t\t\t\t\t\t'\\n

ULTIMATE / $77

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-02.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SIMPLE PRICING

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

STANDARD

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$29/mo

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

DELUXE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$59/mo

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

ULTIMATE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$79/mo

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-04.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SUBSCRIPTION PLANS

' +\r\n\t\t\t\t\t\t'\\n

Choose the right plan that works for you.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

01

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

BASIC / FREE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

02

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

DELUXE / $77

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

03

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

PREMIUM / $89

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-05.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PRICING PLANS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$31

' +\r\n\t\t\t\t\t\t'\\n

MONTHLY

' +\r\n\t\t\t\t\t\t'\\n

STANDARD

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$57

' +\r\n\t\t\t\t\t\t'\\n

MONTHLY

' +\r\n\t\t\t\t\t\t'\\n

PREMIUM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$62

' +\r\n\t\t\t\t\t\t'\\n

MONTHLY

' +\r\n\t\t\t\t\t\t'\\n

ULTIMATE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-06.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PRICING PLANS

' +\r\n\t\t\t\t\t\t'

Fair Prices. Excellent Services.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(4) + '

$55

' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

STANDARD

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Purchase' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(4) + '

$67

' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

DELUXE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Purchase' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '
' +\r\n\t\t\t\t\t\t\t\t\t\t_tabs(4) + '

$72

' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

PREMIUM

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Purchase' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-07.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PLANS THAT MEET YOUR NEEDS

' +\r\n\t\t\t\t\t\t'\\n

Fair Prices. Excellent Services.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

BASIC

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$ 39

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

ADVANCED

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$ 59

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

ULTIMATE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$ 79

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-08.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Plans That Meet Your Needs

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

01

' +\r\n\t\t\t\t\t\t'\\n

BASIC / $55

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Select Plan' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

02

' +\r\n\t\t\t\t\t\t'\\n

PREMIUM / $77

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Select Plan' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-09.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Pricing Plans

' +\r\n\t\t\t\t\t\t'\\n

Choose the right plan that works for you. No hidden fees.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$17

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

BASIC

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$29

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

PREMIUM

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Buy Now' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-12.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CHOOSE YOUR PLAN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$19

' +\r\n\t\t\t\t\t\t'\\n

Per Month

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$27

' +\r\n\t\t\t\t\t\t'\\n

Per Month

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$39

' +\r\n\t\t\t\t\t\t'\\n

Per Month

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-10.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SIMPLE PRICING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$31

' +\r\n\t\t\t\t\t\t'\\n

MONTHLY

' +\r\n\t\t\t\t\t\t'\\n

STANDARD

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$57

' +\r\n\t\t\t\t\t\t'\\n

MONTHLY

' +\r\n\t\t\t\t\t\t'\\n

ULTIMATE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-15.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PRICING PLANS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

BASIC

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

$34/ month

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Choose Plan' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PREMIUM

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

$57/ month

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Choose Plan' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-16.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PRICING PLANS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FREE

' +\r\n\t\t\t\t\t\t'\\n

Try New Features

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$19

' +\r\n\t\t\t\t\t\t'\\n

Monthly

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

$227

' +\r\n\t\t\t\t\t\t'\\n

Yearly

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Buy Now' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-17.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PRICING PLANS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

BASIC

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$ 39

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

PREMIUM

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$ 59

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

ULTIMATE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$ 99

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Select Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-18.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

SUBSCRIPTION PLANS

' +\r\n\t\t\t\t\t\t'\\n

We make everything way easier for you.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

STARTER

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$19 / MONTH

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Choose Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

PRO

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$59 / MONTH

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Choose Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

BUSINESS

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$79 / MONTH

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t\t\t_tabs(3) + 'Choose Plan' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-19.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PLANS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

STANDARD

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$27

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Per Month

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
Get Started
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

DELUXE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$39

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Per Month

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
Get Started
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

ULTIMATE

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

$55

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Per Month

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
Get Started
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/pricing-20.png',\r\n\t\t 'category': '107',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

BASIC PLAN

' +\r\n\t\t\t\t\t\t'\\n

$ 39

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem ipsum dolor sit amet, vivamus ante.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PRO PLAN

' +\r\n\t\t\t\t\t\t'\\n

$ 79

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Lorem ipsum dolor sit amet, vivamus ante.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Get Started' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-01.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

DISCOVER HOW GOOD WE ARE

' +\r\n\t\t\t\t\t\t'\\n

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

85%

' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

98%

' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

77%

' +\r\n\t\t\t\t\t\t'\\n

PHOTOSHOP

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-02.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PROFESSIONAL SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

87%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

92%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

99%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

CUSTOMER SUPPORT

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-03.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WORK SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

93%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Design / Graphics

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

85%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

HTML & CSS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

77%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

WordPress

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

89%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Customer Support

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-04.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'

PROFESSIONAL SKILLS

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
91%
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

HTML & CSS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
83%
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

PHP

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
72%
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

JavaScript

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '
85%
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Photoshop

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-05.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

HTML & CSS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

BRANDING

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-06.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PROFESSIONAL SKILLS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

92%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

CREATIVE DESIGN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

80%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

PROGRAMMING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

77%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

PHOTOGRAPHY

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

83%

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

PHOTOSHOP

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-07.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

DISCOVER HOW GOOD WE ARE

' +\r\n\t\t\t\t\t\t'\\n

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

85%

' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

98%

' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

77%

' +\r\n\t\t\t\t\t\t'\\n

PHOTOSHOP

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

83%

' +\r\n\t\t\t\t\t\t'\\n

ANIMATION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-08.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR FINEST SKILLS

' +\r\n\t\t\t\t\t\t'\\n

We create things beautifully.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

80%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

DESIGN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

75%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

MARKETING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

92%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

DEVELOPMENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-09.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TEAM SKILLS

' +\r\n\t\t\t\t\t\t'\\n

DISCOVER HOW GOOD WE ARE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

87%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

92%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

PHOTOGRAPHY

' +\r\n\t\t\t\t\t\t'\\n

77%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

BRANDING

' +\r\n\t\t\t\t\t\t'\\n

80%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-10.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR CAPABILITIES

' +\r\n\t\t\t\t\t\t'\\n

SEE WHAT WE ARE GOOD AT

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

90%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

78%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

GRAPHIC DESIGN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

70%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

PHOTOGRAPHY

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

82%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

MARKETING

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-11.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

GRAPHIC DESIGN

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-12.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR CAPABILITIES

' +\r\n\t\t\t\t\t\t'\\n

SEE WHAT WE ARE GOOD AT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

95%

' +\r\n\t\t\t\t\t\t'\\n

WEB DESIGN

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

90%

' +\r\n\t\t\t\t\t\t'\\n

WEB DEVELOPMENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

87%

' +\r\n\t\t\t\t\t\t'\\n

PHOTOGRAPHY

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-13.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

90%  CONCEPT & IDEAS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'

88%  WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

85%  WEB DEVELOPMENT

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

77%  BRANDING

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-14.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

90%  CONCEPT IDEAS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

88%  WEB DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

88%  PHOTOGRAPHY

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-16.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

91%

' +\r\n\t\t\t\t\t\t'\\n

CREATIVE DESIGN

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

85%

' +\r\n\t\t\t\t\t\t'\\n

PROGRAMMING

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

80%

' +\r\n\t\t\t\t\t\t'\\n

BRANDING

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-23.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Expertise

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Concept & Ideas

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Responsive Design

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Web Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Marketing

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-24.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Expertise

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Concepting

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Responsive Web Design

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Web Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Photography

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Security

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Branding

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-25.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What We\\'re Good At

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Concept & Ideas

' +\r\n\t\t\t\t\t\t'\\n

Lorem ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Web Development

' +\r\n\t\t\t\t\t\t'\\n

Lorem ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Responsive Design

' +\r\n\t\t\t\t\t\t'\\n

Lorem ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Marketing

' +\r\n\t\t\t\t\t\t'\\n

Lorem ipsum is dummy text of printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-26.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

90%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Concepting
Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

85%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Responsive Design
Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

87%

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Web Development
Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/skills-27.png',\r\n\t\t 'category': '108',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

TEAM SKILLS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

95%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Concepting
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

87%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Responsive Design
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

90%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Web Development
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-01.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t\t'\\n

DISCOVER HOW GOOD WE ARE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

97

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

200+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

15

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-02.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Fun Facts

' +\r\n\t\t\t\t\t\t'\\n

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

100%

' +\r\n\t\t\t\t\t\t'\\n

Satisfaction

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

45

' +\r\n\t\t\t\t\t\t'\\n

Awards

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

312

' +\r\n\t\t\t\t\t\t'\\n

Happy Clients

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-03.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS / WHY WE\\'RE GOOD

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

100% SATISFACTION

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

AWARDS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-04.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS / WHY WE ARE SO AWESOME

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-05.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

355

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Happy Clients

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

70+

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Projects Done

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

30

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Awards Won

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

19k

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Followers

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-06.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

130+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

72

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

14

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

99%

' +\r\n\t\t\t\t\t\t'\\n

SATISFACTION

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-08.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR ACHIEVEMENTS

' +\r\n\t\t\t\t\t\t'\\n

Discover things that make us different.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

200+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS
Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

85

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE
Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-10.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHY WE\\'RE AWESOME

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

775

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

60+

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

12

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-11.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

600+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

234

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

17

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

90k+

' +\r\n\t\t\t\t\t\t'\\n

FOLLOWERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-12.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FUN FACTS / WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

300+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

123

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

78K+

' +\r\n\t\t\t\t\t\t'\\n

SUBSCRIBERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

12

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-13.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

200+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

77

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

12

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-14.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t\t'\\n

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

4k+ HAPPY CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

98 PROJECTS DONE

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

12 AWARDS WON

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-15.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Happy Clients

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Completed Projects

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Awards Won

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Followers

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-16.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Happy Clients

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Projects Done

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Subscribers

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-17.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

400+

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

123

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

90k+

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-18.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t\t'\\n

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

400+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

234

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

12

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

70k+

' +\r\n\t\t\t\t\t\t'\\n

FOLLOWERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-28.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

400+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

123

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

79k+

' +\r\n\t\t\t\t\t\t'\\n

FOLLOWERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-29.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

ACHIEVEMENTS

' +\r\n\t\t\t\t\t\t'\\n

Disvover how good we are

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

267

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

500+

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CUSTOMERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

95k+

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

FOLLOWERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

11

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-30.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Milestones

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

127

' +\r\n\t\t\t\t\t\t'\\n

PROJECTS DONE

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

11

' +\r\n\t\t\t\t\t\t'\\n

AWARDS WON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

300+

' +\r\n\t\t\t\t\t\t'\\n

HAPPY CLIENTS

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

105k+

' +\r\n\t\t\t\t\t\t'\\n

FOLLOWERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-31.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FUN FACTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

12.000

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Customers

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

23.000

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Buyer Rating

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

99

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

New Features

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

134.078

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Facebook Likes

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-32.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FUN FACTS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

12.000

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Customers

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

23.000

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Buyer Rating

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

99

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

New Features

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

134.078

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Facebook Likes

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-33.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Fun Facts

' +\r\n\t\t\t\t\t\t'\\n

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 11

' +\r\n\t\t\t\t\t\t'\\n

YEAR OF EXPERIENCE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 100%

' +\r\n\t\t\t\t\t\t'\\n

POSITIVE FEEDBACK

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 14

' +\r\n\t\t\t\t\t\t'\\n

NATIONAL AWARDS

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/achievements-34.png',\r\n\t\t 'category': '109',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Fun Facts

' +\r\n\t\t\t\t\t\t'\\n

WHAT MAKES US DIFFERENT

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 100%

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

POSITIVE FEEDBACK

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 455k

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

USERS WORLDWIDE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

 350

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

DOWNLOADS PER DAY

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n {\r\n 'thumbnail': 'preview/quotes-24.png',\r\n 'category': '110',\r\n 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

HAPPY CLIENTS

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

MARY PALS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

WILMA FINN

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n },\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-25.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

TESTIMONIALS

' +\r\n\t\t\t\t\t\t'\\n

Hear the interesting stories from our customers

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. — Nelson Sand

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. — Karin Sparks

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-26.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

By George Howard

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-27.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
\"\"
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

By Lucas Fulmer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-28.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Victoria Martin' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-29.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Cathy Hartman' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Josh Perkins' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-30.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

OUR HAPPY CLIENTS

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Jason Butterfield' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Paula Johnson' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-31.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

OUR HAPPY CLIENTS

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet leo ante.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Amy Meyers ' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet leo ante.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'by Christopher Cook ' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-05.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HAPPIEST CUSTOMERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n

by Your Name

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n

by Your Name

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t\t'\\n

by Your Name

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-06.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CUSTOMER TESTIMONIALS

' +\r\n\t\t\t\t\t\t'

Hear the interesting stories from our lovely customers.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(1) + '

\"Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.\"

' +\r\n\t\t\t\t\t\t\t\t_tabs(1) + '

by Your Name

' +\r\n\t\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(1) + '

\"Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.\"

' +\r\n\t\t\t\t\t\t\t\t_tabs(1) + '

by Your Name

' +\r\n\t\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-07.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHAT PEOPLE SAY ABOUT US

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n

— John Smith, Web Developer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n

— Dave Clark, Designer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n

— Ellen Lage, Photographer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-08.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CLIENTS REVIEWS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. — Dave Smith

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. — Clara Wang

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. — Jane Doe

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n {\r\n 'thumbnail': 'preview/quotes-16.png',\r\n 'category': '110',\r\n 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

CLIENT REVIEWS

' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'

JOHN WEBER

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

NICOLE HOLOWAY

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CHRIS WILLIAMS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n },\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-17.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'\"\"' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'

\"Incredible services and awesome customer support.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

BY THOMAS JONE
Project Manager at Company Name

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-18.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'

\"Incredible services and awesome customer support.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

BY MARGARET VICKREY
Web Developer at Company Name

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-19.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
\"\"
' +\r\n\t\t \t\t'
' +\r\n\t\t \t'
' +\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

By Christopher Maxime

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-40.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

\"It\\'s easy to use and customizable. A truly amazing features with reasonable prices.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

By Margaret Fuller

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-41.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t\t'
' +\r\n\t\t \t\t\t'

\"It\\'s easy to use and customizable. A truly amazing features with reasonable prices.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

By Ella Vandegrift

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t \t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-42.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t \t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t\t\t'

Mary Andrews

' +\r\n\t\t\t\t\t\t\t'

Web Designer based in New York

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-43.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

\"All products are awesome with strong attention to details.\"

' +\r\n\t\t\t\t\t\t'\\n

- Glenda Drake

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Read the Success Story

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-44.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

\"All products are awesome with strong attention to details.\"

' +\r\n\t\t\t\t\t\t'\\n

- Kyle Harrelson

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Read the Success Story

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-45.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Cathy Braswell

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Web Developer

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-46.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Louis Richardson

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Web Developer

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-47.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Sara Stark - Director at CreativeStudio

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-48.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Stacy Hildebrand - Director at Artive

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-49.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Rachael Wilson, Director at CreativeStudio

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-50.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details.\"

' +\r\n\t\t\t\t\t\t'\\n\\n
' +\r\n\t\t\t\t\t\t'\\n

Bobby Addison, Director at Artive

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-51.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Customers Love What We Do

' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

All products are super awesome with strong attention to details, customizable tools which can help us improve our business

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

by Leonard Smith

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

It\\'s easy to use and customizable. A truly amazing features with reasonable prices.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

by David Horan

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

User-friendly, unlimited features and awesome support.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

by Loraine Beck

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-52.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Clients Trust Us.

' +\r\n\t\t\t\t\t\t'\\n

Hear what they said

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\" - Angie Todd

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

\"It\\'s easy to use and customizable. A truly amazing features with reasonable prices.\" - Ruben Chapman

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

\"User-friendly, unlimited features and awesome support.\" - Mathew M. Brown

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-53.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Geraldine Pipes

' +\r\n\t\t\t\t\t\t'\\n

Web Developer

' +\r\n '
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-54.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\\n

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Elizabeth Johns

' +\r\n\t\t\t\t\t\t'\\n

Graphic Designer

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
\"\"
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-55.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

It fits my requirements perfectly!

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Aaron Stephen

' +\r\n\t\t\t\t\t\t'\\n

CEO of Artive

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

All products are super awesome with strong attention to details, customizable tools which can help us improve our business.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-56.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

It fits my requirements perfectly!

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Darrel Roberts

' +\r\n\t\t\t\t\t\t'\\n

Director at CreativeStudio

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

All products are super awesome with strong attention to details, customizable tools which can help us improve our business.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/quotes-57.png',\r\n\t\t 'category': '110',\r\n\t\t 'html':\r\n\t\t \t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Building trust through experience.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

\"All products are super awesome with strong attention to details, customizable tools which can help us improve our business.\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Richard Allen

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

CEO of CreativeStudio

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

\"Has a bunch of amazing tools. Very easy to use and customizable. No need to make extra actions. It fits my requirements perfectly!\"

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Sandra Stephenson

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Director at Artive

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\t\t\r\n\t\t\r\n\r\n\t\t/* PARTNERS */ \r\n\r\n\t\t{\r\n\t\t\t'thumbnail': 'preview/partners-03.png',\r\n\t\t\t'category': '111',\r\n\t\t\t'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

We are globally trusted by the world\\'s best names.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-05.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PARTNERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-06.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Clients

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-01.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PARTNERS

' +\r\n\t\t\t\t\t\t'\\n

We are globally recognized and trusted by the world\\'s best names.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-07.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

We are globally recognized and trusted by the world\\'s best names.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '\"\"' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-08.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PARTNERS

' +\r\n\t\t\t\t\t\t'\\n

We are globally recognized and trusted by the world\\'s best names.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-09.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Serving Clients with Passion.

' +\r\n\t\t\t\t\t\t'\\n

We are globally recognized and trusted by the world\\'s best names.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-10.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR CLIENTS

' +\r\n\t\t\t\t\t\t'\\n

You can be the next to work with!

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-11.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR PARTNERS

' +\r\n\t\t\t\t\t\t'\\n

We are globally recognized and trusted by the world\\'s best names.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-12.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

We Provide Proven Solutions to Our Clients

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-13.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Our Clients

' +\r\n\t\t\t\t\t\t'\\n

Serving Clients with Passion

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/partners-14.png',\r\n\t\t 'category': '111',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

PARTNERS

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-01.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

AS FEATURED ON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-02.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

As featured on

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-03.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

AS FEATURED ON

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-05.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

AS FEATURED ON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-06.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

AS FEATURED ON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-07.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

AS SEEN ON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/asfeaturedon-08.png',\r\n\t\t 'category': '112',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

AS FEATURED ON

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-01.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

404

' +\r\n\t\t\t\t\t\t'\\n

PAGE NOT FOUND

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Back to Home' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-02.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

404

' +\r\n\t\t\t\t\t\t'\\n

Oops! The page you\\'re looking for doesn\\'t exist.
Click the link below to return home.

' +\r\n\t\t\t\t\t\t'\\n

HOMEPAGE

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-03.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Oops, page not found.

' +\r\n\t\t\t\t\t\t'\\n

The page you are looking for might have been removed, had its name changed, or temporarily unavailable.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Homepage' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-04.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Something\\'s wrong here...

' +\r\n\t\t\t\t\t\t'\\n

The page you requested couldn\\'t be found. This could be a spelling error in the URL or a removed page.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Back to Home' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-06.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t\t'\\n

Sorry. The page you are looking for could not be found.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Back to Home' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-07.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

404 ERROR - PAGE NOT FOUND

' +\r\n\t\t\t\t\t\t'\\n

Sorry, the page could not be found. You might be able to find what you are looking for from the homepage.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Back to Home' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-08.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

404

' +\r\n\t\t\t\t\t\t'\\n

PAGE NOT FOUND

' +\r\n\t\t\t\t\t\t'\\n

The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/404-09.png',\r\n\t\t 'category': '113',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

404

' +\r\n\t\t\t\t\t\t'\\n

We are sorry, the page you are looking for could not be found. This could be a spelling error in the URL or a removed page.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Contact Us  ' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Homepage' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-01.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STAY TUNED!

' +\r\n\t\t\t\t\t\t'\\n

OUR WEBSITE IS COMING VERY SOON

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-02.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

WE ARE COMING SOON

' +\r\n\t\t\t\t\t\t'\\n

Our website is under construction. We will be here with new awesome site.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Contact Us  ' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Notify Me' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-03.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

SITE IS UNDER MAINTENANCE

' +\r\n\t\t\t\t\t\t'\\n

Please check back in sometime.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-04.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

MAINTENANCE MODE

' +\r\n\t\t\t\t\t\t'\\n

Our website is under maintenance. Please comeback later.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

90%

' +\r\n\t\t\t\t\t\t'\\n

COMPLETED

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-05.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

COMING SOON

' +\r\n\t\t\t\t\t\t'\\n

CHECK BACK SOON FOR THE NEW AND IMPROVED SITE

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-06.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OUR SITE IS COMING VERY SOON

' +\r\n\t\t\t\t\t\t'\\n

We are currently working on something awesome. We will be here soon.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'Notify Me' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-07.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

COMING SOON.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Our website is under construction. We will be here with new awesome site.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-08.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\\n

Sorry, our website is currently getting a face lift. Check back soon for the new awesome and improved site.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-13.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Coming Soon.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-14.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t_tabs(1) + '

Our new website is on its way

' +\r\n\t\t\t\t\t\t_tabs(1) + '

We are working hard on our new site. Sign up to be the first to know when it\\'s ready.

' +\r\n\t\t\t\t\t\t_tabs(1) + '
Notify Me
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/comingsoon-15.png',\r\n\t\t 'category': '114',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

We Are Building Awesome Thing

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Follow the news updates and you will be the first to know when our site is ready

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
Stay Updated
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-01.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQs

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

How do I sign up?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

How do I cancel my order?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

What is account limits?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

How do I update my settings?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-02.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQs

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I create an account?

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I cancel my order?

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I close my account?

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I update my settings?

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum dolor sit amet.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-03.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQs

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I sign up?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I cancel or change my order?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I contact customer support?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-04.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Frequently Asked Questions

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CREATE AN ACCOUNT?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHAT\\'S ACCOUNT LIMITS?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CANCEL MY ORDER?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I RESET MY PASSWORD?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I REPORT A BUG?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CLOSE MY ACCOUNT?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-05.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQ

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I SIGN UP?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

WHAT\\'S ACCOUNT LIMIT?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CONTACT SUPPORT?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I UPDATE MY SETTINGS?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I REPORT AN ISSUE?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CHANGE MY ORDER?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetur elit.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-06.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQ

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CREATE AN ACCOUNT?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I UPDATE MY SETTINGS?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CHANGE MY PASSWORD?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CANCEL MY ORDER?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CLOSE MY ACCOUNT?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

HOW DO I CONTACT CUSTOMER SERVICE?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-07.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQ

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

  ORDER

' +\r\n\t\t\t\t\t\t'\\n

How can I order?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t\t'\\n

Is there a minimum order?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

  SHIPPING

' +\r\n\t\t\t\t\t\t'\\n

Do you ship internationally?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t\t'\\n

How fast will my order arrive?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

  PAYMENT

' +\r\n\t\t\t\t\t\t'\\n

What payment methods are accepted?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t\t'\\n

How do I pay by credit card?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

  RETURN

' +\r\n\t\t\t\t\t\t'\\n

What is the Return Policy?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t\t'\\n

What items can I return?
Lorem Ipsum is simply dummy text of printing

' +\r\n\t\t\t\t\t'
\t' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-08.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How can we help you?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I create an account?

' +\r\n\t\t\t\t\t\t'\\n\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I update my settings?

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley.

' +\r\n\t\t\t\t\t'
\t' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I contact customer servive?

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s, when an unknown printer took a galley.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-09.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Frequently asked questions

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\t\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What do you do?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How does this work?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What is the return policy?

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

An unknown printer took a galley of type & scrambled it to make a type specimen book.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-10.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

All you need to know

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do the offers work?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What is the return policy?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I get in touch?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-11.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQ

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t'

How can I order?

' +\r\n\t\t\t\t\t\t\t\t'

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Do you ship internationally?

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

What payment methods are accepted?

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

What is the Return Policy?

' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-12.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FAQ

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do the offers work?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What payment methods are accepted?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

What is the Return Policy?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

How do I get in touch?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Can\\'t find what you are looking for here?

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Email Us' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-13.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Frequently Asked Questions

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

How can I buy your product?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Do you ship internationally?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

What payment methods are accepted?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

What should I do if my product arrives damaged or is not what I ordered?

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is dummy text of the printing.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/faq-14.png',\r\n\t\t 'category': '115',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Help Center

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

General FAQ

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Read More

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Payment

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Read More

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Shipping

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s. Read More

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-01.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

FIND US HERE

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-02.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

OPENING TIMES

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

Monday – Friday: 9 AM – 4.30 PM
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Saturday: 8 AM – 2 PM

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

FIND US HERE

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

123 Street Name, City. State 456
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Phone: (123) 456 7890

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n \r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-04.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CONTACT US

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Your Company Name
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '12345 Street Name, City.' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'State 12345
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'P: (123) 456 7890 / 456 7891.' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OPENING HOURS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Monday - Friday: 9:00 AM - 10:00 PM
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Saturday: 10:00 AM - 11:00 PM' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STAY UPDATED

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Follow us on:
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Facebook: Company Name
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Twitter: @companyname' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-05.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

OUR LOCATION

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Your Company Name
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '12345 Street Name, City.' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'P: (123) 456 7890' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

OPENING HOURS

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Monday - Friday: 9:00 AM - 10:00 PM
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Sat: 10:00 AM - 11:00 PM' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

STAY UPDATED

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Follow us on:
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Facebook: Company Name
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Twitter: @companyname' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-06.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Do you have something to say? Contact us!

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

YOUR COMPANY NAME

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '12345 Street Name, City.' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'State 12345
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'P: (123) 456 7890 / 456 7891.
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Email:
companyname@example.com' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-07.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Have questions? Give us a call 0 123 456 78 90

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t\t_tabs(2) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-08.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

GET IN TOUCH

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '12345 STREET NAME, CITY.' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'STATE 12345
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'PHONE: (123) 456 7890 / 456 7891' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-09.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n
OUR LOCATION
' +\r\n\t\t\t\t\t\t'\\n

12 Street Name, City

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n
CALL US
' +\r\n\t\t\t\t\t\t'\\n

(123) 456 7890 / 456 7891

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n
DROP US A LINE
' +\r\n\t\t\t\t\t\t'\\n

first.last@example.com

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-10.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CONTACT

' +\r\n\t\t\t\t\t\t'\\n

Company Name
123 Street Name, City.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

OPENING HOURS

' +\r\n\t\t\t\t\t\t'\\n

Monday - Friday: 8 AM - 5 PM
Saturday: 10 AM - 3 PM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

STAY IN TOUCH

' +\r\n\t\t\t\t\t\t'\\n

Instagram: @companyname
Twitter:
@companyname

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-11.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Hi... Let\\'s get in touch!

' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-12.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

GET CONNECTED

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Your Company Name, Inc. 12345 Street Name, City. State 12345.
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'P: (123) 456 7890 / 456 7891' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-18.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CONTACT US

' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t\t_tabs(1) + '123 STREET NAME, CITY.' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'STATE 12345
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'PHONE: (123) 456 7890' +\r\n\t\t\t\t\t\t'\\n

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-14.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

DROP IN OUR OFFICE.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

   Company Name, Inc. 12345 Street, City. State 12345.
   Phone: (123) 456 7890 / 456 7891

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-15.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Drop us a line to get the conversation started.

' +\r\n\t\t\t\t\t\t'\\n

Please kindly write to us at companyname@example.com or call us on +123 4567 890

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-16.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

CONTACT US

' +\r\n\t\t\t\t\t\t'\\n

(123) 456 7890

' +\r\n\t\t\t\t\t\t'\\n

Monday - Friday: 8:00 AM - 5:00 PM

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t_tabs(1) + 'Drop us a line' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-19.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Talk To Us

' +\r\n\t\t\t\t\t\t'\\n

Get in touch.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\\'s standard dummy text ever since the 1500s.

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Phone:
(123) 456 7890 / 456 7891

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-41.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Let\\'s stay in touch.

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Company Name
1st floor, Building Name. Street Name, City. State 12.
Phone: (123) 456 7890
Fax: (123) 456 7891

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-42.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Contact us

' +\r\n\t\t\t\t\t\t'\\n

Let\\'s talk about everything! Send us an email

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

123 Street Name, City. State

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

(123) 456 7890 / 456 7891

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'\\n

Monday - Fri: 9 AM - 5 PM

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-43.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

We\\'d love to hear from you...

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Write to us at company@email.com

' +\r\n\t\t\t\t\t\t'\\n

1st floor, Building Name. Street Name, City. State 12345

' +\r\n\t\t\t\t\t\t'\\n

Phone:
(123) 456 7890 / 456 7891

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-44.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

We\\'d love to hear from you...

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n

Write to us at company@email.com

' +\r\n\t\t\t\t\t\t'\\n

1st floor, Building Name. Street Name, City. State 12345

' +\r\n\t\t\t\t\t\t'\\n

Phone:
(123) 456 7890 / 456 7891

' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t\t_tabs(1) + '' +\r\n\t\t\t\t\t\t'\\n
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'\"\"' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/contact-46.png',\r\n\t\t 'category': '116',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t'

Get in touch

' +\r\n\t\t\t\t\t\t'\\n

We\\'d love to hear from you info@example.com

' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
'\r\n\t\t},\r\n\r\n\t\t/* Buttons */\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-01.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More  ' +\r\n '\\nBuy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-02.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More' +\r\n '
' \r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-03.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Buy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-04.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More  ' +\r\n '\\nBuy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-05.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Buy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-06.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Buy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-07.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More  ' +\r\n '\\nBuy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-08.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-09.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Buy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-10.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More  ' +\r\n '\\nBuy Now' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-11.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Read More' +\r\n '
'\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t 'thumbnail': 'preview/button-12.png',\r\n\t\t 'category': '119',\r\n\t\t 'html':\r\n\t\t\t\t'
' +\r\n 'Buy Now' +\r\n '
'\r\n\t\t},\r\n \r\n /*\r\n // Custom Module example (with just simple initial content) => Experimental\r\n {\r\n 'thumbnail': 'preview/element-code.png',\r\n 'category': '120',\r\n 'html':\r\n\t\t\t '
' +\r\n '
My Custom Module') +\r\n '\" data-settings=\"\">' +\r\n\t\t '
' +\r\n\t\t\t '
'\r\n },\r\n\r\n // Custom Module example with initial content (see default HTML) and custom variables (see default settings) => Experimental\r\n // Example of custom script is also embedded in the HTML.\r\n {\r\n\t\t'thumbnail': 'preview/element-module.png',\r\n\t\t'category': '120',\r\n\t\t'html':\r\n\t\t\t '
' +\r\n '
My Custom Module - Id: {id}' +\r\n '
' + // a Sub Block is an editable area\r\n '

' +\r\n 'This is an editable area inside a custom module.' +\r\n '

' +\r\n '
' +\r\n '' +\r\n 'document.querySelector(\"#{id}\").style.color = \"red\";' +\r\n '' +\r\n '') +\r\n\r\n '\" data-settings=\"' +\r\n // Default Settings (Custom Variables)\r\n encodeURIComponent('{\"variable1\": true, \"variable2\": \"Hello World\"}') + '\"' +\r\n\r\n '>' +\r\n\r\n\t\t '
' +\r\n\t\t\t '
'\r\n },\r\n\r\n // Custom Module example on how to use AJAX to get data from server\r\n {\r\n\t\t'thumbnail': 'preview/element-ajax.png',\r\n\t\t'category': '120',\r\n\t\t'html':\r\n\t\t\t '
' +\r\n '
Sample Content From Ajax Request' +\r\n '
' +\r\n '' +\r\n 'var docReady = function (fn) {' +\r\n 'var stateCheck = setInterval(function () {' +\r\n 'if (document.readyState !== \"complete\") return;' +\r\n 'clearInterval(stateCheck);' +\r\n 'try { fn() } catch (e) { }' +\r\n '}, 1);' +\r\n '};' +\r\n 'docReady(function () {' +\r\n '' +\r\n // https://happycoding.io/tutorials/javascript/ajax\r\n 'var xmlhttp = new XMLHttpRequest();' +\r\n 'xmlhttp.onreadystatechange = function() {' +\r\n 'if (xmlhttp.readyState == XMLHttpRequest.DONE) {' + \r\n 'if (xmlhttp.status == 200) {' +\r\n 'var jsonObj = JSON.parse(xmlhttp.responseText);' +\r\n 'var randomMessagesArray = jsonObj.randomMessages;' +\r\n 'var randomIndex = Math.floor(Math.random()*randomMessagesArray.length);' +\r\n 'var messageObj = randomMessagesArray[randomIndex];' +\r\n 'document.getElementById(\"{id}\").innerHTML = messageObj.message;' +\r\n 'document.getElementById(\"{id}\").style.color = messageObj.color;' +\r\n '} else {' +\r\n 'console.log(\"Status error: \" + xmlhttp.status);' +\r\n '}' +\r\n '}' +\r\n '};' +\r\n 'xmlhttp.open(\"GET\", \"assets/sampledata.txt\", true);' +\r\n 'xmlhttp.send();' +\r\n '' +\r\n '});' +\r\n '' +\r\n '') +\r\n\r\n '\" data-settings=\"' +\r\n // Default Settings (Custom Variables)\r\n encodeURIComponent('{\"title\": \"Sample Content From Ajax Request\", \"requestUrl\": \"assets/sampledata.txt\"}') + '\"' +\r\n\r\n '>' +\r\n\r\n\t\t '
' +\r\n\t\t\t '
'\r\n }, \r\n */\r\n\r\n\t]\r\n\r\n};\r\n\r\nif(!(window.Glide||parent.Glide)){\r\n for (let i = 0; i < data_basic.snippets.length; i++) {\r\n if (data_basic.snippets[i].glide) {\r\n data_basic.snippets.splice(i, 1);\r\n break;\r\n }\r\n }\r\n}\r\n\r\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = data_basic;","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./content.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./content.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./box-ie.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/*** IMPORTS FROM imports-loader ***/\n\nvar define = false, module = undefined, exports = undefined;\n\n(function() {\n$(document).ready(function (e) {\r\n\r\n $('.is-arrow-down a').on('click', function (e) {\r\n if ($(this).parents(\".is-section\").nextAll('div:not(.is-hidden)').html()) { /* .hidden class can be used as an exception */\r\n $('html,body').animate({\r\n scrollTop: $(this).parents(\".is-section\").nextAll('div:not(.is-hidden)').offset().top - parseInt($('.is-wrapper').css('padding-top')) /* + 1 Adjustment due to topbar height*/\r\n }, 800);\r\n }\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n return false;\r\n });\r\n\r\n $('.is-wrapper > div:first-child').find('.is-scale-animated').addClass('is-appeared');\r\n\r\n $('.is-scale-animated').appear();\r\n $('.is-scale-animated').on('appear', function () {\r\n $(this).addClass('is-appeared');\r\n });\r\n $('.is-scale-animated').on('disappear', function () {\r\n $(this).removeClass('is-appeared');\r\n });\r\n\r\n //Hide all animated elements first\r\n $('.is-animated').each(function () {\r\n $(this).addClass('animated');\r\n $(this).addClass('fadeOut');\r\n });\r\n\r\n\r\n /* Animate Section/Boxes */\r\n $('.is-section').appear();\r\n $('.is-section').each(function () {\r\n if ($(this).is(':appeared')) {\r\n applyAnimationSection($(this));\r\n }\r\n });\r\n if ($(window).scrollTop() == 0) {//on editing, appear not triggered on first load (on top only). This is the fix.\r\n setTimeout(applyAnimationSection($('.is-section').first()), 2000);\r\n }\r\n $('.is-section').on('appear', function () {\r\n applyAnimationSection($(this));\r\n });\r\n $('.is-section').on('disappear', function () {\r\n removeAnimationSection($(this));\r\n });\r\n\r\n\r\n /* Animate Content/Container */\r\n $('.is-container').appear();\r\n $('.is-container').each(function () {\r\n if ($(this).is(':appeared')) {\r\n applyAnimation($(this));\r\n }\r\n });\r\n if ($(window).scrollTop() == 0) {//on editing, appear not triggered on first load (on top only). This is the fix.\r\n $('.is-section').first().find('.is-container').each(function () {\r\n setTimeout(applyAnimation($(this)), 2000);\r\n });\r\n }\r\n $('.is-container').on('appear', function () {\r\n applyAnimation($(this));\r\n });\r\n $('.is-container').on('disappear', function () {\r\n removeAnimation($(this));\r\n });\r\n\r\n});\r\n\r\nfunction applyAnimation($root) {\r\n var n = 0;\r\n $root.find('.is-animated').each(function () {\r\n\r\n if ($(this).data('animated') != 'done') {\r\n\r\n if (n > 0) $(this).css('animation-delay', n + 's');\r\n n = n + 0.2;\r\n\r\n $(this).removeClass('fadeOut');\r\n\r\n if ($(this).hasClass('is-pulse')) $(this).addClass('pulse');\r\n if ($(this).hasClass('is-bounceIn')) $(this).addClass('bounceIn');\r\n if ($(this).hasClass('is-fadeIn')) $(this).addClass('fadeIn');\r\n if ($(this).hasClass('is-fadeInDown')) $(this).addClass('fadeInDown');\r\n if ($(this).hasClass('is-fadeInLeft')) $(this).addClass('fadeInLeft');\r\n if ($(this).hasClass('is-fadeInRight')) $(this).addClass('fadeInRight');\r\n if ($(this).hasClass('is-fadeInUp')) $(this).addClass('fadeInUp');\r\n if ($(this).hasClass('is-flipInX')) $(this).addClass('flipInX');\r\n if ($(this).hasClass('is-flipInY')) $(this).addClass('flipInY');\r\n if ($(this).hasClass('is-slideInUp')) $(this).addClass('slideInUp');\r\n if ($(this).hasClass('is-slideInDown')) $(this).addClass('slideInDown');\r\n if ($(this).hasClass('is-slideInLeft')) $(this).addClass('slideInLeft');\r\n if ($(this).hasClass('is-slideInRight')) $(this).addClass('slideInRight');\r\n if ($(this).hasClass('is-zoomIn')) $(this).addClass('zoomIn');\r\n\r\n if ($(this).hasClass('once')) $(this).data('animated', 'done');\r\n }\r\n\r\n });\r\n}\r\n\r\nfunction removeAnimation($root) {\r\n $root.find('.is-animated').each(function () {\r\n\r\n //$(this).removeClass('animated');\r\n $(this).removeClass('pulse');\r\n $(this).removeClass('bounceIn');\r\n $(this).removeClass('fadeIn');\r\n $(this).removeClass('fadeInDown');\r\n $(this).removeClass('fadeInLeft');\r\n $(this).removeClass('fadeInRight');\r\n $(this).removeClass('fadeInUp');\r\n $(this).removeClass('flipInX');\r\n $(this).removeClass('flipInY');\r\n $(this).removeClass('slideInUp');\r\n $(this).removeClass('slideInDown');\r\n $(this).removeClass('slideInLeft');\r\n $(this).removeClass('slideInRight');\r\n $(this).removeClass('zoomIn');\r\n\r\n if (!$(this).hasClass('once')) {\r\n $(this).addClass('fadeOut');\r\n }\r\n });\r\n}\r\n\r\n\r\nfunction applyAnimationSection($section) {\r\n /*\r\n try {\r\n var s = $('.is-wrapper').data('contentbox').settings;\r\n //return;\r\n } catch (e) { }\r\n */\r\n\r\n var n = 0;\r\n\r\n if ($section.hasClass('is-animated')) {\r\n\r\n if ($section.data('animated') != 'done') {\r\n \r\n if(n>0) $section.css('animation-delay', n + 's');\r\n n = n + 0.2;\r\n\r\n $section.removeClass('fadeOut');\r\n\r\n if ($section.hasClass('is-pulse')) $section.addClass('pulse');\r\n if ($section.hasClass('is-bounceIn')) $section.addClass('bounceIn');\r\n if ($section.hasClass('is-fadeIn')) $section.addClass('fadeIn');\r\n if ($section.hasClass('is-fadeInDown')) $section.addClass('fadeInDown');\r\n if ($section.hasClass('is-fadeInLeft')) $section.addClass('fadeInLeft');\r\n if ($section.hasClass('is-fadeInRight')) $section.addClass('fadeInRight');\r\n if ($section.hasClass('is-fadeInUp')) $section.addClass('fadeInUp');\r\n if ($section.hasClass('is-flipInX')) $section.addClass('flipInX');\r\n if ($section.hasClass('is-flipInY')) $section.addClass('flipInY');\r\n if ($section.hasClass('is-slideInUp')) $section.addClass('slideInUp');\r\n if ($section.hasClass('is-slideInDown')) $section.addClass('slideInDown');\r\n if ($section.hasClass('is-slideInLeft')) $section.addClass('slideInLeft');\r\n if ($section.hasClass('is-slideInRight')) $section.addClass('slideInRight');\r\n if ($section.hasClass('is-zoomIn')) $section.addClass('zoomIn');\r\n\r\n if ($section.hasClass('once')) $section.data('animated', 'done');\r\n \r\n }\r\n }\r\n \r\n $section.find('.is-box.is-animated').each(function () {\r\n\r\n if ($(this).data('animated') != 'done') {\r\n\r\n if(n>0) $(this).css('animation-delay', n + 's');\r\n n = n + 0.2;\r\n\r\n $(this).removeClass('fadeOut');\r\n\r\n if ($(this).hasClass('is-pulse')) $(this).addClass('pulse');\r\n if ($(this).hasClass('is-bounceIn')) $(this).addClass('bounceIn');\r\n if ($(this).hasClass('is-fadeIn')) $(this).addClass('fadeIn');\r\n if ($(this).hasClass('is-fadeInDown')) $(this).addClass('fadeInDown');\r\n if ($(this).hasClass('is-fadeInLeft')) $(this).addClass('fadeInLeft');\r\n if ($(this).hasClass('is-fadeInRight')) $(this).addClass('fadeInRight');\r\n if ($(this).hasClass('is-fadeInUp')) $(this).addClass('fadeInUp');\r\n if ($(this).hasClass('is-flipInX')) $(this).addClass('flipInX');\r\n if ($(this).hasClass('is-flipInY')) $(this).addClass('flipInY');\r\n if ($(this).hasClass('is-slideInUp')) $(this).addClass('slideInUp');\r\n if ($(this).hasClass('is-slideInDown')) $(this).addClass('slideInDown');\r\n if ($(this).hasClass('is-slideInLeft')) $(this).addClass('slideInLeft');\r\n if ($(this).hasClass('is-slideInRight')) $(this).addClass('slideInRight');\r\n if ($(this).hasClass('is-zoomIn')) $(this).addClass('zoomIn');\r\n\r\n if ($(this).hasClass('once')) $(this).data('animated', 'done');\r\n }\r\n });\r\n}\r\n\r\nfunction removeAnimationSection($section) {\r\n\r\n if ($section.hasClass('is-animated')) {\r\n\r\n $section.removeClass('pulse');\r\n $section.removeClass('bounceIn');\r\n $section.removeClass('fadeIn');\r\n $section.removeClass('fadeInDown');\r\n $section.removeClass('fadeInLeft');\r\n $section.removeClass('fadeInRight');\r\n $section.removeClass('fadeInUp');\r\n $section.removeClass('flipInX');\r\n $section.removeClass('flipInY');\r\n $section.removeClass('slideInUp');\r\n $section.removeClass('slideInDown');\r\n $section.removeClass('slideInLeft');\r\n $section.removeClass('slideInRight');\r\n $section.removeClass('zoomIn');\r\n\r\n if (!$section.hasClass('once')) {\r\n $section.addClass('fadeOut');\r\n }\r\n }\r\n\r\n $section.find('.is-animated').each(function () {\r\n\r\n $(this).removeClass('pulse');\r\n $(this).removeClass('bounceIn');\r\n $(this).removeClass('fadeIn');\r\n $(this).removeClass('fadeInDown');\r\n $(this).removeClass('fadeInLeft');\r\n $(this).removeClass('fadeInRight');\r\n $(this).removeClass('fadeInUp');\r\n $(this).removeClass('flipInX');\r\n $(this).removeClass('flipInY');\r\n $(this).removeClass('slideInUp');\r\n $(this).removeClass('slideInDown');\r\n $(this).removeClass('slideInLeft');\r\n $(this).removeClass('slideInRight');\r\n $(this).removeClass('zoomIn');\r\n\r\n if (!$(this).hasClass('once')) {\r\n $(this).addClass('fadeOut');\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\n\r\n/*\r\n//How to use:\r\n//on body load, call: demo($('.is-wrapper > div:first-child'))\");\r\nvar $activeSect;\r\nfunction demo($section) {\r\nsetTimeout(function () {\r\n$activeSect = $section;\r\n$('html,body').animate({\r\nscrollTop: $activeSect.offset().top\r\n}, 700, function () {\r\nif ($activeSect.next().html()) {\r\ndemo($activeSect.next());\r\nreturn false;\r\n}\r\n}); \r\n}, 700);\r\n}\r\n*/\r\n\r\n\r\n/*\r\n* jQuery appear plugin\r\n*\r\n* Copyright (c) 2012 Andrey Sidorov\r\n* licensed under MIT license.\r\n*\r\n* https://github.com/morr/jquery.appear/\r\n*\r\n* Version: 0.3.6\r\n*/\r\n(function ($) {\r\n var selectors = [];\r\n\r\n var check_binded = false;\r\n var check_lock = false;\r\n var defaults = {\r\n interval: 250,\r\n force_process: false\r\n };\r\n var $window = $(window);\r\n\r\n var $prior_appeared = [];\r\n\r\n function process() {\r\n check_lock = false;\r\n for (var index = 0, selectorsLength = selectors.length; index < selectorsLength; index++) {\r\n var $appeared = $(selectors[index]).filter(function () {\r\n return $(this).is(':appeared');\r\n });\r\n\r\n $appeared.trigger('appear', [$appeared]);\r\n\r\n if ($prior_appeared[index]) {\r\n var $disappeared = $prior_appeared[index].not($appeared);\r\n $disappeared.trigger('disappear', [$disappeared]);\r\n }\r\n $prior_appeared[index] = $appeared;\r\n }\r\n };\r\n\r\n function add_selector(selector) {\r\n selectors.push(selector);\r\n $prior_appeared.push();\r\n }\r\n\r\n // \"appeared\" custom filter\r\n $.expr.pseudos['appeared'] = function (element) {\r\n var $element = $(element);\r\n if (!$element.is(':visible')) {\r\n return false;\r\n }\r\n\r\n var window_left = $window.scrollLeft();\r\n var window_top = $window.scrollTop();\r\n var offset = $element.offset();\r\n var left = offset.left;\r\n var top = offset.top;\r\n\r\n if (top + $element.height() >= window_top &&\r\n top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() - 200 && /* - 200 (custom) */\r\n left + $element.width() >= window_left &&\r\n left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n $.fn.extend({\r\n // watching for element's appearance in browser viewport\r\n appear: function (options) {\r\n var opts = $.extend({}, defaults, options || {});\r\n var selector = this.selector || this;\r\n if (!check_binded) {\r\n var on_check = function () {\r\n if (check_lock) {\r\n return;\r\n }\r\n check_lock = true;\r\n\r\n setTimeout(process, opts.interval);\r\n };\r\n\r\n $(window).on('scroll', on_check).on('resize', on_check);\r\n check_binded = true;\r\n }\r\n\r\n if (opts.force_process) {\r\n setTimeout(process, opts.interval);\r\n }\r\n add_selector(selector);\r\n return $(selector);\r\n }\r\n });\r\n\r\n $.extend({\r\n // force elements's appearance check\r\n force_appear: function () {\r\n if (check_binded) {\r\n process();\r\n return true;\r\n }\r\n return false;\r\n }\r\n });\r\n})(function () {\r\n if (typeof module !== 'undefined') {\r\n // Node\r\n return require('jquery');\r\n } else {\r\n return jQuery;\r\n }\r\n} ());\r\n\r\n\r\n\r\n/*\r\n _ _ _ _\r\n ___| (_) ___| | __ (_)___\r\n/ __| | |/ __| |/ / | / __|\r\n\\__ \\ | | (__| < _ | \\__ \\\r\n|___/_|_|\\___|_|\\_(_)/ |___/\r\n |__/\r\n\r\n Version: 1.5.9\r\n Author: Ken Wheeler\r\n Website: http://kenwheeler.github.io\r\n Docs: http://kenwheeler.github.io/slick\r\n Repo: http://github.com/kenwheeler/slick\r\n Issues: http://github.com/kenwheeler/slick/issues\r\n\r\n */\r\n!function(a){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"undefined\"!=typeof exports?module.exports=a(require(\"jquery\")):a(jQuery)}(function(a){\"use strict\";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:\"50px\",cssEase:\"ease\",customPaging:function(a,b){return'\"},dots:!1,dotsClass:\"slick-dots\",draggable:!1,easing:\"linear\",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:\"ondemand\",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:\"window\",responsive:null,rows:1,rtl:!1,slide:\"\",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!1,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden=\"hidden\",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange=\"visibilitychange\",e.windowWidth=0,e.windowTimer=null,f=a(c).data(\"slick\")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,\"undefined\"!=typeof document.mozHidden?(e.hidden=\"mozHidden\",e.visibilityChange=\"mozvisibilitychange\"):\"undefined\"!=typeof document.webkitHidden&&(e.hidden=\"webkitHidden\",e.visibilityChange=\"webkitvisibilitychange\"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\\s*(<[\\w\\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if(\"boolean\"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),\"number\"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr(\"data-slick-index\",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]=\"translate(\"+a+\"px, 0px)\",e.$slideTrack.css(d)):(d[e.animType]=\"translate(0px,\"+a+\"px)\",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]=\"translate3d(\"+b+\"px, 0px, 0px)\":d[e.animType]=\"translate3d(0px,\"+b+\"px, 0px)\",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&\"object\"==typeof d&&d.each(function(){var c=a(this).slick(\"getSlick\");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+\" \"+b.options.speed+\"ms \"+b.options.cssEase:c[b.transitionType]=\"opacity \"+b.options.speed+\"ms \"+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(a.currentSlide-1===0&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass(\"slick-arrow\"),b.$nextArrow=a(b.options.nextArrow).addClass(\"slick-arrow\"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass(\"slick-hidden\").removeAttr(\"aria-hidden tabindex\"),b.$nextArrow.removeClass(\"slick-hidden\").removeAttr(\"aria-hidden tabindex\"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\",\"true\")):b.$prevArrow.add(b.$nextArrow).addClass(\"slick-hidden\").attr({\"aria-disabled\":\"true\",tabindex:\"-1\"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='\",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find(\"li\").first().addClass(\"slick-active\").attr(\"aria-hidden\",\"false\")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+\":not(.slick-cloned)\").addClass(\"slick-slide\"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr(\"data-slick-index\",b).data(\"originalStyling\",a(c).attr(\"style\")||\"\")}),b.$slider.addClass(\"slick-slider\"),b.$slideTrack=0===b.slideCount?a('
').appendTo(b.$slider):b.$slides.wrapAll('
').parent(),b.$list=b.$slideTrack.wrap('
').parent(),b.$slideTrack.css(\"opacity\",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a(\"img[data-lazy]\",b.$slider).not(\"[src]\").addClass(\"slick-loading\"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses(\"number\"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass(\"draggable\")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement(\"div\");for(c=0;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,\"unslick\"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,\"unslick\"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger(\"breakpoint\",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is(\"a\")&&b.preventDefault(),e.is(\"li\")||(e=e.closest(\"li\")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case\"previous\":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case\"next\":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case\"index\":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger(\"focus\");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off(\"click.slick\",b.changeSlide),b.$nextArrow&&b.$nextArrow.off(\"click.slick\",b.changeSlide)),b.$list.off(\"touchstart.slick mousedown.slick\",b.swipeHandler),b.$list.off(\"touchmove.slick mousemove.slick\",b.swipeHandler),b.$list.off(\"touchend.slick mouseup.slick\",b.swipeHandler),b.$list.off(\"touchcancel.slick mouseleave.slick\",b.swipeHandler),b.$list.off(\"click.slick\",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off(\"mouseenter.slick\",a.proxy(b.setPaused,b,!0)),b.$list.off(\"mouseleave.slick\",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off(\"keydown.slick\",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off(\"click.slick\",b.selectHandler),a(window).off(\"orientationchange.slick.slick-\"+b.instanceUid,b.orientationChange),a(window).off(\"resize.slick.slick-\"+b.instanceUid,b.resize),a(\"[draggable!=true]\",b.$slideTrack).off(\"dragstart\",b.preventDefault),a(window).off(\"load.slick.slick-\"+b.instanceUid,b.setPosition),a(document).off(\"ready.slick.slick-\"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr(\"style\"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(\".slick-cloned\",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass(\"slick-disabled slick-arrow slick-hidden\").removeAttr(\"aria-hidden aria-disabled tabindex\").css(\"display\",\"\"),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass(\"slick-disabled slick-arrow slick-hidden\").removeAttr(\"aria-hidden aria-disabled tabindex\").css(\"display\",\"\"),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass(\"slick-slide slick-active slick-center slick-visible slick-current\").removeAttr(\"aria-hidden\").removeAttr(\"data-slick-index\").each(function(){a(this).attr(\"style\",a(this).data(\"originalStyling\"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass(\"slick-slider\"),c.$slider.removeClass(\"slick-initialized\"),c.unslicked=!0,b||c.$slider.trigger(\"destroy\",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]=\"\",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(\".slick-slide\").eq(a):b.$slideTrack.children(\".slick-slide\").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(\".slick-slide\").eq(a):b.$slideTrack.children(\".slick-slide\").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(\".slick-slide\").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr(\"data-slick-index\")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:\"index\",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass(\"slick-initialized\")||(a(c.$slider).addClass(\"slick-initialized\"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger(\"init\",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on(\"click.slick\",{message:\"previous\"},a.changeSlide),a.$nextArrow.on(\"click.slick\",{message:\"next\"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a(\"li\",b.$dots).on(\"click.slick\",{message:\"index\"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a(\"li\",b.$dots).on(\"mouseenter.slick\",a.proxy(b.setPaused,b,!0)).on(\"mouseleave.slick\",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on(\"touchstart.slick mousedown.slick\",{action:\"start\"},b.swipeHandler),b.$list.on(\"touchmove.slick mousemove.slick\",{action:\"move\"},b.swipeHandler),b.$list.on(\"touchend.slick mouseup.slick\",{action:\"end\"},b.swipeHandler),b.$list.on(\"touchcancel.slick mouseleave.slick\",{action:\"end\"},b.swipeHandler),b.$list.on(\"click.slick\",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on(\"mouseenter.slick\",a.proxy(b.setPaused,b,!0)),b.$list.on(\"mouseleave.slick\",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on(\"keydown.slick\",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on(\"click.slick\",b.selectHandler),a(window).on(\"orientationchange.slick.slick-\"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on(\"resize.slick.slick-\"+b.instanceUid,a.proxy(b.resize,b)),a(\"[draggable!=true]\",b.$slideTrack).on(\"dragstart\",b.preventDefault),a(window).on(\"load.slick.slick-\"+b.instanceUid,b.setPosition),a(document).on(\"ready.slick.slick-\"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match(\"TEXTAREA|INPUT|SELECT\")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:\"previous\"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:\"next\"}}))},b.prototype.lazyLoad=function(){function g(b){a(\"img[data-lazy]\",b).each(function(){var b=a(this),c=a(this).attr(\"data-lazy\"),d=document.createElement(\"img\");d.onload=function(){b.animate({opacity:0},100,function(){b.attr(\"src\",c).animate({opacity:1},200,function(){b.removeAttr(\"data-lazy\").removeClass(\"slick-loading\")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(\".slick-slide\").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(\".slick-slide\"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(\".slick-cloned\").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(\".slick-cloned\").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass(\"slick-loading\"),a.initUI(),\"progressive\"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:\"next\"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger(\"afterChange\",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:\"previous\"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a(\"img[data-lazy]\",b.$slider).length,c>0&&(d=a(\"img[data-lazy]\",b.$slider).first(),d.attr(\"src\",null),d.attr(\"src\",d.attr(\"data-lazy\")).removeClass(\"slick-loading\").load(function(){d.removeAttr(\"data-lazy\"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr(\"data-lazy\"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,c.options.infinite||(c.slideCount<=c.options.slidesToShow?c.currentSlide=0:c.currentSlide>e&&(c.currentSlide=e)),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:\"index\",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if(\"array\"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||\"window\";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass(\"slick-slide\"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on(\"click.slick\",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger(\"reInit\",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return\"boolean\"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d=\"left\"==b.positionProp?Math.ceil(a)+\"px\":\"0px\",e=\"top\"==b.positionProp?Math.ceil(a)+\"px\":\"0px\",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]=\"translate(\"+d+\", \"+e+\")\",b.$slideTrack.css(c)):(c[b.animType]=\"translate3d(\"+d+\", \"+e+\", 0px)\",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:\"0px \"+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+\" 0px\"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(\".slick-slide\").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(\".slick-slide\").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(\".slick-slide\").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:\"relative\",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:\"relative\",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css(\"height\",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if(\"responsive\"===b&&\"array\"===a.type(c))for(g in c)if(\"array\"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger(\"setPosition\",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?\"top\":\"left\",\"top\"===a.positionProp?a.$slider.addClass(\"slick-vertical\"):a.$slider.removeClass(\"slick-vertical\"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&(\"number\"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType=\"OTransform\",a.transformType=\"-o-transform\",a.transitionType=\"OTransition\",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType=\"MozTransform\",a.transformType=\"-moz-transform\",a.transitionType=\"MozTransition\",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType=\"webkitTransform\",a.transformType=\"-webkit-transform\",a.transitionType=\"webkitTransition\",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType=\"msTransform\",a.transformType=\"-ms-transform\",a.transitionType=\"msTransition\",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType=\"transform\",a.transformType=\"transform\",a.transitionType=\"transition\"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(\".slick-slide\").removeClass(\"slick-active slick-center slick-current\").attr(\"aria-hidden\",\"true\"),b.$slides.eq(a).addClass(\"slick-current\"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass(\"slick-center\"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass(\"slick-center\")),b.$slides.eq(a).addClass(\"slick-center\")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):d.length<=b.options.slidesToShow?d.addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr(\"id\",\"\").attr(\"data-slick-index\",d-b.slideCount).prependTo(b.$slideTrack).addClass(\"slick-cloned\");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr(\"id\",\"\").attr(\"data-slick-index\",d+b.slideCount).appendTo(b.$slideTrack).addClass(\"slick-cloned\");b.$slideTrack.find(\".slick-cloned\").find(\"[id]\").each(function(){a(this).attr(\"id\",\"\")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(\".slick-slide\")?a(b.target):a(b.target).parents(\".slick-slide\"),e=parseInt(d.attr(\"data-slick-index\"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d);\r\n}) : i.postSlide(d))) : i.options.infinite === !1 && i.options.centerMode === !0 && (0 > a || a > i.slideCount - i.options.slidesToScroll) ? void (i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function () { i.postSlide(d) }) : i.postSlide(d))) : (i.options.autoplay === !0 && clearInterval(i.autoPlayTimer), e = 0 > d ? i.slideCount % i.options.slidesToScroll !== 0 ? i.slideCount - i.slideCount % i.options.slidesToScroll : i.slideCount + d : d >= i.slideCount ? i.slideCount % i.options.slidesToScroll !== 0 ? 0 : d - i.slideCount : d, i.animating = !0, i.$slider.trigger(\"beforeChange\", [i, i.currentSlide, e]), f = i.currentSlide, i.currentSlide = e, i.setSlideClasses(i.currentSlide), i.updateDots(), i.updateArrows(), i.options.fade === !0 ? (c !== !0 ? (i.fadeSlideOut(f), i.fadeSlide(e, function () { i.postSlide(e) })) : i.postSlide(e), void i.animateHeight()) : void (c !== !0 ? i.animateSlide(h, function () { i.postSlide(e) }) : i.postSlide(e))))\r\n}, b.prototype.startLoad = function () { var a = this; a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.hide(), a.$nextArrow.hide()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.hide(), a.$slider.addClass(\"slick-loading\") }, b.prototype.swipeDirection = function () { var a, b, c, d, e = this; return a = e.touchObject.startX - e.touchObject.curX, b = e.touchObject.startY - e.touchObject.curY, c = Math.atan2(b, a), d = Math.round(180 * c / Math.PI), 0 > d && (d = 360 - Math.abs(d)), 45 >= d && d >= 0 ? e.options.rtl === !1 ? \"left\" : \"right\" : 360 >= d && d >= 315 ? e.options.rtl === !1 ? \"left\" : \"right\" : d >= 135 && 225 >= d ? e.options.rtl === !1 ? \"right\" : \"left\" : e.options.verticalSwiping === !0 ? d >= 35 && 135 >= d ? \"left\" : \"right\" : \"vertical\" }, b.prototype.swipeEnd = function (a) { var c, b = this; if (b.dragging = !1, b.shouldClick = b.touchObject.swipeLength > 10 ? !1 : !0, void 0 === b.touchObject.curX) return !1; if (b.touchObject.edgeHit === !0 && b.$slider.trigger(\"edge\", [b, b.swipeDirection()]), b.touchObject.swipeLength >= b.touchObject.minSwipe) switch (b.swipeDirection()) { case \"left\": c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide + b.getSlideCount()) : b.currentSlide + b.getSlideCount(), b.slideHandler(c), b.currentDirection = 0, b.touchObject = {}, b.$slider.trigger(\"swipe\", [b, \"left\"]); break; case \"right\": c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide - b.getSlideCount()) : b.currentSlide - b.getSlideCount(), b.slideHandler(c), b.currentDirection = 1, b.touchObject = {}, b.$slider.trigger(\"swipe\", [b, \"right\"]) } else b.touchObject.startX !== b.touchObject.curX && (b.slideHandler(b.currentSlide), b.touchObject = {}) }, b.prototype.swipeHandler = function (a) { var b = this; if (!(b.options.swipe === !1 || \"ontouchend\" in document && b.options.swipe === !1 || b.options.draggable === !1 && -1 !== a.type.indexOf(\"mouse\"))) switch (b.touchObject.fingerCount = a.originalEvent && void 0 !== a.originalEvent.touches ? a.originalEvent.touches.length : 1, b.touchObject.minSwipe = b.listWidth / b.options.touchThreshold, b.options.verticalSwiping === !0 && (b.touchObject.minSwipe = b.listHeight / b.options.touchThreshold), a.data.action) { case \"start\": b.swipeStart(a); break; case \"move\": b.swipeMove(a); break; case \"end\": b.swipeEnd(a) } }, b.prototype.swipeMove = function (a) { var d, e, f, g, h, b = this; return h = void 0 !== a.originalEvent ? a.originalEvent.touches : null, !b.dragging || h && 1 !== h.length ? !1 : (d = b.getLeft(b.currentSlide), b.touchObject.curX = void 0 !== h ? h[0].pageX : a.clientX, b.touchObject.curY = void 0 !== h ? h[0].pageY : a.clientY, b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curX - b.touchObject.startX, 2))), b.options.verticalSwiping === !0 && (b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curY - b.touchObject.startY, 2)))), e = b.swipeDirection(), \"vertical\" !== e ? (void 0 !== a.originalEvent && b.touchObject.swipeLength > 4 && a.preventDefault(), g = (b.options.rtl === !1 ? 1 : -1) * (b.touchObject.curX > b.touchObject.startX ? 1 : -1), b.options.verticalSwiping === !0 && (g = b.touchObject.curY > b.touchObject.startY ? 1 : -1), f = b.touchObject.swipeLength, b.touchObject.edgeHit = !1, b.options.infinite === !1 && (0 === b.currentSlide && \"right\" === e || b.currentSlide >= b.getDotCount() && \"left\" === e) && (f = b.touchObject.swipeLength * b.options.edgeFriction, b.touchObject.edgeHit = !0), b.options.vertical === !1 ? b.swipeLeft = d + f * g : b.swipeLeft = d + f * (b.$list.height() / b.listWidth) * g, b.options.verticalSwiping === !0 && (b.swipeLeft = d + f * g), b.options.fade === !0 || b.options.touchMove === !1 ? !1 : b.animating === !0 ? (b.swipeLeft = null, !1) : void b.setCSS(b.swipeLeft)) : void 0) }, b.prototype.swipeStart = function (a) { var c, b = this; return 1 !== b.touchObject.fingerCount || b.slideCount <= b.options.slidesToShow ? (b.touchObject = {}, !1) : (void 0 !== a.originalEvent && void 0 !== a.originalEvent.touches && (c = a.originalEvent.touches[0]), b.touchObject.startX = b.touchObject.curX = void 0 !== c ? c.pageX : a.clientX, b.touchObject.startY = b.touchObject.curY = void 0 !== c ? c.pageY : a.clientY, void (b.dragging = !0)) }, b.prototype.unfilterSlides = b.prototype.slickUnfilter = function () { var a = this; null !== a.$slidesCache && (a.unload(), a.$slideTrack.children(this.options.slide).detach(), a.$slidesCache.appendTo(a.$slideTrack), a.reinit()) }, b.prototype.unload = function () { var b = this; a(\".slick-cloned\", b.$slider).remove(), b.$dots && b.$dots.remove(), b.$prevArrow && b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.remove(), b.$nextArrow && b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.remove(), b.$slides.removeClass(\"slick-slide slick-active slick-visible slick-current\").attr(\"aria-hidden\", \"true\").css(\"width\", \"\") }, b.prototype.unslick = function (a) { var b = this; b.$slider.trigger(\"unslick\", [b, a]), b.destroy() }, b.prototype.updateArrows = function () { var b, a = this; b = Math.floor(a.options.slidesToShow / 2), a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && !a.options.infinite && (a.$prevArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\", \"false\"), a.$nextArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\", \"false\"), 0 === a.currentSlide ? (a.$prevArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\", \"true\"), a.$nextArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\", \"false\")) : a.currentSlide >= a.slideCount - a.options.slidesToShow && a.options.centerMode === !1 ? (a.$nextArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\", \"true\"), a.$prevArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\", \"false\")) : a.currentSlide >= a.slideCount - 1 && a.options.centerMode === !0 && (a.$nextArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\", \"true\"), a.$prevArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\", \"false\"))) }, b.prototype.updateDots = function () { var a = this; null !== a.$dots && (a.$dots.find(\"li\").removeClass(\"slick-active\").attr(\"aria-hidden\", \"true\"), a.$dots.find(\"li\").eq(Math.floor(a.currentSlide / a.options.slidesToScroll)).addClass(\"slick-active\").attr(\"aria-hidden\", \"false\")) }, b.prototype.visibility = function () { var a = this; document[a.hidden] ? (a.paused = !0, a.autoPlayClear()) : a.options.autoplay === !0 && (a.paused = !1, a.autoPlay()) }, b.prototype.initADA = function () { var b = this; b.$slides.add(b.$slideTrack.find(\".slick-cloned\")).attr({ \"aria-hidden\": \"true\", tabindex: \"-1\" }).find(\"a, input, button, select\").attr({ tabindex: \"-1\" }), b.$slideTrack.attr(\"role\", \"listbox\"), b.$slides.not(b.$slideTrack.find(\".slick-cloned\")).each(function (c) { a(this).attr({ role: \"option\", \"aria-describedby\": \"slick-slide\" + b.instanceUid + c }) }), null !== b.$dots && b.$dots.attr(\"role\", \"tablist\").find(\"li\").each(function (c) { a(this).attr({ role: \"presentation\", \"aria-selected\": \"false\", \"aria-controls\": \"navigation\" + b.instanceUid + c, id: \"slick-slide\" + b.instanceUid + c }) }).first().attr(\"aria-selected\", \"true\").end().find(\"button\").attr(\"role\", \"button\").end().closest(\"div\").attr(\"role\", \"toolbar\"), b.activateADA() }, b.prototype.activateADA = function () { var a = this; a.$slideTrack.find(\".slick-active\").attr({ \"aria-hidden\": \"false\" }).find(\"a, input, button, select\").attr({ tabindex: \"0\" }) }, b.prototype.focusHandler = function () { var b = this; b.$slider.on(\"focus.slick blur.slick\", \"*\", function (c) { c.stopImmediatePropagation(); var d = a(this); setTimeout(function () { b.isPlay && (d.is(\":focus\") ? (b.autoPlayClear(), b.paused = !0) : (b.paused = !1, b.autoPlay())) }, 0) }) }, a.fn.slick = function () { var f, g, a = this, c = arguments[0], d = Array.prototype.slice.call(arguments, 1), e = a.length; for (f = 0; e > f; f++) if (\"object\" == typeof c || \"undefined\" == typeof c ? a[f].slick = new b(a[f], c) : g = a[f].slick[c].apply(a[f].slick, d), \"undefined\" != typeof g) return g; return a }\r\n});\r\n\r\n/*! skrollr 0.6.30 (2015-06-19) | Alexander Prinzhorn - https://github.com/Prinzhorn/skrollr | Free to use under terms of MIT license */\r\n!function (a, b, c) { \"use strict\"; function d(c) { if (e = b.documentElement, f = b.body, T(), ha = this, c = c || {}, ma = c.constants || {}, c.easing) for (var d in c.easing) W[d] = c.easing[d]; ta = c.edgeStrategy || \"set\", ka = { beforerender: c.beforerender, render: c.render, keyframe: c.keyframe }, la = c.forceHeight !== !1, la && (Ka = c.scale || 1), na = c.mobileDeceleration || y, pa = c.smoothScrolling !== !1, qa = c.smoothScrollingDuration || A, ra = { targetTop: ha.getScrollTop() }, Sa = (c.mobileCheck || function () { return /Android|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent || navigator.vendor || a.opera) })(), Sa ? (ja = b.getElementById(c.skrollrBody || z), ja && ga(), X(), Ea(e, [s, v], [t])) : Ea(e, [s, u], [t]), ha.refresh(), wa(a, \"resize orientationchange\", function () { var a = e.clientWidth, b = e.clientHeight; (b !== Pa || a !== Oa) && (Pa = b, Oa = a, Qa = !0) }); var g = U(); return function h() { $(), va = g(h) } (), ha } var e, f, g = { get: function () { return ha }, init: function (a) { return ha || new d(a) }, VERSION: \"0.6.29\" }, h = Object.prototype.hasOwnProperty, i = a.Math, j = a.getComputedStyle, k = \"touchstart\", l = \"touchmove\", m = \"touchcancel\", n = \"touchend\", o = \"skrollable\", p = o + \"-before\", q = o + \"-between\", r = o + \"-after\", s = \"skrollr\", t = \"no-\" + s, u = s + \"-desktop\", v = s + \"-mobile\", w = \"linear\", x = 1e3, y = .004, z = \"skrollr-body\", A = 200, B = \"start\", C = \"end\", D = \"center\", E = \"bottom\", F = \"___skrollable_id\", G = /^(?:input|textarea|button|select)$/i, H = /^\\s+|\\s+$/g, I = /^data(?:-(_\\w+))?(?:-?(-?\\d*\\.?\\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/, J = /\\s*(@?[\\w\\-\\[\\]]+)\\s*:\\s*(.+?)\\s*(?:;|$)/gi, K = /^(@?[a-z\\-]+)\\[(\\w+)\\]$/, L = /-([a-z0-9_])/g, M = function (a, b) { return b.toUpperCase() }, N = /[\\-+]?[\\d]*\\.?[\\d]+/g, O = /\\{\\?\\}/g, P = /rgba?\\(\\s*-?\\d+\\s*,\\s*-?\\d+\\s*,\\s*-?\\d+/g, Q = /[a-z\\-]+-gradient/g, R = \"\", S = \"\", T = function () { var a = /^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/; if (j) { var b = j(f, null); for (var c in b) if (R = c.match(a) || +c == c && b[c].match(a)) break; if (!R) return void (R = S = \"\"); R = R[0], \"-\" === R.slice(0, 1) ? (S = R, R = { \"-webkit-\": \"webkit\", \"-moz-\": \"Moz\", \"-ms-\": \"ms\", \"-o-\": \"O\"}[R]) : S = \"-\" + R.toLowerCase() + \"-\" } }, U = function () { var b = a.requestAnimationFrame || a[R.toLowerCase() + \"RequestAnimationFrame\"], c = Ha(); return (Sa || !b) && (b = function (b) { var d = Ha() - c, e = i.max(0, 1e3 / 60 - d); return a.setTimeout(function () { c = Ha(), b() }, e) }), b }, V = function () { var b = a.cancelAnimationFrame || a[R.toLowerCase() + \"CancelAnimationFrame\"]; return (Sa || !b) && (b = function (b) { return a.clearTimeout(b) }), b }, W = { begin: function () { return 0 }, end: function () { return 1 }, linear: function (a) { return a }, quadratic: function (a) { return a * a }, cubic: function (a) { return a * a * a }, swing: function (a) { return -i.cos(a * i.PI) / 2 + .5 }, sqrt: function (a) { return i.sqrt(a) }, outCubic: function (a) { return i.pow(a - 1, 3) + 1 }, bounce: function (a) { var b; if (.5083 >= a) b = 3; else if (.8489 >= a) b = 9; else if (.96208 >= a) b = 27; else { if (!(.99981 >= a)) return 1; b = 91 } return 1 - i.abs(3 * i.cos(a * b * 1.028) / b) } }; d.prototype.refresh = function (a) { var d, e, f = !1; for (a === c ? (f = !0, ia = [], Ra = 0, a = b.getElementsByTagName(\"*\")) : a.length === c && (a = [a]), d = 0, e = a.length; e > d; d++) { var g = a[d], h = g, i = [], j = pa, k = ta, l = !1; if (f && F in g && delete g[F], g.attributes) { for (var m = 0, n = g.attributes.length; n > m; m++) { var p = g.attributes[m]; if (\"data-anchor-target\" !== p.name) if (\"data-smooth-scrolling\" !== p.name) if (\"data-edge-strategy\" !== p.name) if (\"data-emit-events\" !== p.name) { var q = p.name.match(I); if (null !== q) { var r = { props: p.value, element: g, eventType: p.name.replace(L, M) }; i.push(r); var s = q[1]; s && (r.constant = s.substr(1)); var t = q[2]; /p$/.test(t) ? (r.isPercentage = !0, r.offset = (0 | t.slice(0, -1)) / 100) : r.offset = 0 | t; var u = q[3], v = q[4] || u; u && u !== B && u !== C ? (r.mode = \"relative\", r.anchors = [u, v]) : (r.mode = \"absolute\", u === C ? r.isEnd = !0 : r.isPercentage || (r.offset = r.offset * Ka)) } } else l = !0; else k = p.value; else j = \"off\" !== p.value; else if (h = b.querySelector(p.value), null === h) throw 'Unable to find anchor target \"' + p.value + '\"' } if (i.length) { var w, x, y; !f && F in g ? (y = g[F], w = ia[y].styleAttr, x = ia[y].classAttr) : (y = g[F] = Ra++, w = g.style.cssText, x = Da(g)), ia[y] = { element: g, styleAttr: w, classAttr: x, anchorTarget: h, keyFrames: i, smoothScrolling: j, edgeStrategy: k, emitEvents: l, lastFrameIndex: -1 }, Ea(g, [o], []) } } } for (Aa(), d = 0, e = a.length; e > d; d++) { var z = ia[a[d][F]]; z !== c && (_(z), ba(z)) } return ha }, d.prototype.relativeToAbsolute = function (a, b, c) { var d = e.clientHeight, f = a.getBoundingClientRect(), g = f.top, h = f.bottom - f.top; return b === E ? g -= d : b === D && (g -= d / 2), c === E ? g += h : c === D && (g += h / 2), g += ha.getScrollTop(), g + .5 | 0 }, d.prototype.animateTo = function (a, b) { b = b || {}; var d = Ha(), e = ha.getScrollTop(), f = b.duration === c ? x : b.duration; return oa = { startTop: e, topDiff: a - e, targetTop: a, duration: f, startTime: d, endTime: d + f, easing: W[b.easing || w], done: b.done }, oa.topDiff || (oa.done && oa.done.call(ha, !1), oa = c), ha }, d.prototype.stopAnimateTo = function () { oa && oa.done && oa.done.call(ha, !0), oa = c }, d.prototype.isAnimatingTo = function () { return !!oa }, d.prototype.isMobile = function () { return Sa }, d.prototype.setScrollTop = function (b, c) { return sa = c === !0, Sa ? Ta = i.min(i.max(b, 0), Ja) : a.scrollTo(0, b), ha }, d.prototype.getScrollTop = function () { return Sa ? Ta : a.pageYOffset || e.scrollTop || f.scrollTop || 0 }, d.prototype.getMaxScrollTop = function () { return Ja }, d.prototype.on = function (a, b) { return ka[a] = b, ha }, d.prototype.off = function (a) { return delete ka[a], ha }, d.prototype.destroy = function () { var a = V(); a(va), ya(), Ea(e, [t], [s, u, v]); for (var b = 0, d = ia.length; d > b; b++) fa(ia[b].element); e.style.overflow = f.style.overflow = \"\", e.style.height = f.style.height = \"\", ja && g.setStyle(ja, \"transform\", \"none\"), ha = c, ja = c, ka = c, la = c, Ja = 0, Ka = 1, ma = c, na = c, La = \"down\", Ma = -1, Oa = 0, Pa = 0, Qa = !1, oa = c, pa = c, qa = c, ra = c, sa = c, Ra = 0, ta = c, Sa = !1, Ta = 0, ua = c }; var X = function () { var d, g, h, j, o, p, q, r, s, t, u, v; wa(e, [k, l, m, n].join(\" \"), function (a) { var e = a.changedTouches[0]; for (j = a.target; 3 === j.nodeType; ) j = j.parentNode; switch (o = e.clientY, p = e.clientX, t = a.timeStamp, G.test(j.tagName) || a.preventDefault(), a.type) { case k: d && d.blur(), ha.stopAnimateTo(), d = j, g = q = o, h = p, s = t; break; case l: G.test(j.tagName) && b.activeElement !== j && a.preventDefault(), r = o - q, v = t - u, ha.setScrollTop(Ta - r, !0), q = o, u = t; break; default: case m: case n: var f = g - o, w = h - p, x = w * w + f * f; if (49 > x) { if (!G.test(d.tagName)) { d.focus(); var y = b.createEvent(\"MouseEvents\"); y.initMouseEvent(\"click\", !0, !0, a.view, 1, e.screenX, e.screenY, e.clientX, e.clientY, a.ctrlKey, a.altKey, a.shiftKey, a.metaKey, 0, null), d.dispatchEvent(y) } return } d = c; var z = r / v; z = i.max(i.min(z, 3), -3); var A = i.abs(z / na), B = z * A + .5 * na * A * A, C = ha.getScrollTop() - B, D = 0; C > Ja ? (D = (Ja - C) / B, C = Ja) : 0 > C && (D = -C / B, C = 0), A *= 1 - D, ha.animateTo(C + .5 | 0, { easing: \"outCubic\", duration: A }) } }), a.scrollTo(0, 0), e.style.overflow = f.style.overflow = \"hidden\" }, Y = function () { var a, b, c, d, f, g, h, j, k, l, m, n = e.clientHeight, o = Ba(); for (j = 0, k = ia.length; k > j; j++) for (a = ia[j], b = a.element, c = a.anchorTarget, d = a.keyFrames, f = 0, g = d.length; g > f; f++) h = d[f], l = h.offset, m = o[h.constant] || 0, h.frame = l, h.isPercentage && (l *= n, h.frame = l), \"relative\" === h.mode && (fa(b), h.frame = ha.relativeToAbsolute(c, h.anchors[0], h.anchors[1]) - l, fa(b, !0)), h.frame += m, la && !h.isEnd && h.frame > Ja && (Ja = h.frame); for (Ja = i.max(Ja, Ca()), j = 0, k = ia.length; k > j; j++) { for (a = ia[j], d = a.keyFrames, f = 0, g = d.length; g > f; f++) h = d[f], m = o[h.constant] || 0, h.isEnd && (h.frame = Ja - h.offset + m); a.keyFrames.sort(Ia) } }, Z = function (a, b) { for (var c = 0, d = ia.length; d > c; c++) { var e, f, i = ia[c], j = i.element, k = i.smoothScrolling ? a : b, l = i.keyFrames, m = l.length, n = l[0], s = l[l.length - 1], t = k < n.frame, u = k > s.frame, v = t ? n : s, w = i.emitEvents, x = i.lastFrameIndex; if (t || u) { if (t && -1 === i.edge || u && 1 === i.edge) continue; switch (t ? (Ea(j, [p], [r, q]), w && x > -1 && (za(j, n.eventType, La), i.lastFrameIndex = -1)) : (Ea(j, [r], [p, q]), w && m > x && (za(j, s.eventType, La), i.lastFrameIndex = m)), i.edge = t ? -1 : 1, i.edgeStrategy) { case \"reset\": fa(j); continue; case \"ease\": k = v.frame; break; default: case \"set\": var y = v.props; for (e in y) h.call(y, e) && (f = ea(y[e].value), 0 === e.indexOf(\"@\") ? j.setAttribute(e.substr(1), f) : g.setStyle(j, e, f)); continue } } else 0 !== i.edge && (Ea(j, [o, q], [p, r]), i.edge = 0); for (var z = 0; m - 1 > z; z++) if (k >= l[z].frame && k <= l[z + 1].frame) { var A = l[z], B = l[z + 1]; for (e in A.props) if (h.call(A.props, e)) { var C = (k - A.frame) / (B.frame - A.frame); C = A.props[e].easing(C), f = da(A.props[e].value, B.props[e].value, C), f = ea(f), 0 === e.indexOf(\"@\") ? j.setAttribute(e.substr(1), f) : g.setStyle(j, e, f) } w && x !== z && (\"down\" === La ? za(j, A.eventType, La) : za(j, B.eventType, La), i.lastFrameIndex = z); break } } }, $ = function () { Qa && (Qa = !1, Aa()); var a, b, d = ha.getScrollTop(), e = Ha(); if (oa) e >= oa.endTime ? (d = oa.targetTop, a = oa.done, oa = c) : (b = oa.easing((e - oa.startTime) / oa.duration), d = oa.startTop + b * oa.topDiff | 0), ha.setScrollTop(d, !0); else if (!sa) { var f = ra.targetTop - d; f && (ra = { startTop: Ma, topDiff: d - Ma, targetTop: d, startTime: Na, endTime: Na + qa }), e <= ra.endTime && (b = W.sqrt((e - ra.startTime) / qa), d = ra.startTop + b * ra.topDiff | 0) } if (sa || Ma !== d) { La = d > Ma ? \"down\" : Ma > d ? \"up\" : La, sa = !1; var h = { curTop: d, lastTop: Ma, maxTop: Ja, direction: La }, i = ka.beforerender && ka.beforerender.call(ha, h); i !== !1 && (Z(d, ha.getScrollTop()), Sa && ja && g.setStyle(ja, \"transform\", \"translate(0, \" + -Ta + \"px) \" + ua), Ma = d, ka.render && ka.render.call(ha, h)), a && a.call(ha, !1) } Na = e }, _ = function (a) { for (var b = 0, c = a.keyFrames.length; c > b; b++) { for (var d, e, f, g, h = a.keyFrames[b], i = {}; null !== (g = J.exec(h.props)); ) f = g[1], e = g[2], d = f.match(K), null !== d ? (f = d[1], d = d[2]) : d = w, e = e.indexOf(\"!\") ? aa(e) : [e.slice(1)], i[f] = { value: e, easing: W[d] }; h.props = i } }, aa = function (a) { var b = []; return P.lastIndex = 0, a = a.replace(P, function (a) { return a.replace(N, function (a) { return a / 255 * 100 + \"%\" }) }), S && (Q.lastIndex = 0, a = a.replace(Q, function (a) { return S + a })), a = a.replace(N, function (a) { return b.push(+a), \"{?}\" }), b.unshift(a), b }, ba = function (a) { var b, c, d = {}; for (b = 0, c = a.keyFrames.length; c > b; b++) ca(a.keyFrames[b], d); for (d = {}, b = a.keyFrames.length - 1; b >= 0; b--) ca(a.keyFrames[b], d) }, ca = function (a, b) { var c; for (c in b) h.call(a.props, c) || (a.props[c] = b[c]); for (c in a.props) b[c] = a.props[c] }, da = function (a, b, c) { var d, e = a.length; if (e !== b.length) throw \"Can't interpolate between \\\"\" + a[0] + '\" and \"' + b[0] + '\"'; var f = [a[0]]; for (d = 1; e > d; d++) f[d] = a[d] + (b[d] - a[d]) * c; return f }, ea = function (a) { var b = 1; return O.lastIndex = 0, a[0].replace(O, function () { return a[b++] }) }, fa = function (a, b) { a = [].concat(a); for (var c, d, e = 0, f = a.length; f > e; e++) d = a[e], c = ia[d[F]], c && (b ? (d.style.cssText = c.dirtyStyleAttr, Ea(d, c.dirtyClassAttr)) : (c.dirtyStyleAttr = d.style.cssText, c.dirtyClassAttr = Da(d), d.style.cssText = c.styleAttr, Ea(d, c.classAttr))) }, ga = function () { ua = \"translateZ(0)\", g.setStyle(ja, \"transform\", ua); var a = j(ja), b = a.getPropertyValue(\"transform\"), c = a.getPropertyValue(S + \"transform\"), d = b && \"none\" !== b || c && \"none\" !== c; d || (ua = \"\") }; g.setStyle = function (a, b, c) { var d = a.style; if (b = b.replace(L, M).replace(\"-\", \"\"), \"zIndex\" === b) isNaN(c) ? d[b] = c : d[b] = \"\" + (0 | c); else if (\"float\" === b) d.styleFloat = d.cssFloat = c; else try { R && (d[R + b.slice(0, 1).toUpperCase() + b.slice(1)] = c), d[b] = c } catch (e) { } }; var ha, ia, ja, ka, la, ma, na, oa, pa, qa, ra, sa, ta, ua, va, wa = g.addEvent = function (b, c, d) { var e = function (b) { return b = b || a.event, b.target || (b.target = b.srcElement), b.preventDefault || (b.preventDefault = function () { b.returnValue = !1, b.defaultPrevented = !0 }), d.call(this, b) }; c = c.split(\" \"); for (var f, g = 0, h = c.length; h > g; g++) f = c[g], b.addEventListener ? b.addEventListener(f, d, !1) : b.attachEvent(\"on\" + f, e), Ua.push({ element: b, name: f, listener: d }) }, xa = g.removeEvent = function (a, b, c) { b = b.split(\" \"); for (var d = 0, e = b.length; e > d; d++) a.removeEventListener ? a.removeEventListener(b[d], c, !1) : a.detachEvent(\"on\" + b[d], c) }, ya = function () { for (var a, b = 0, c = Ua.length; c > b; b++) a = Ua[b], xa(a.element, a.name, a.listener); Ua = [] }, za = function (a, b, c) { ka.keyframe && ka.keyframe.call(ha, a, b, c) }, Aa = function () { var a = ha.getScrollTop(); Ja = 0, la && !Sa && (f.style.height = \"\"), Y(), la && !Sa && (f.style.height = Ja + e.clientHeight + \"px\"), Sa ? ha.setScrollTop(i.min(ha.getScrollTop(), Ja)) : ha.setScrollTop(a, !0), sa = !0 }, Ba = function () { var a, b, c = e.clientHeight, d = {}; for (a in ma) b = ma[a], \"function\" == typeof b ? b = b.call(ha) : /p$/.test(b) && (b = b.slice(0, -1) / 100 * c), d[a] = b; return d }, Ca = function () { var a, b = 0; return ja && (b = i.max(ja.offsetHeight, ja.scrollHeight)), a = i.max(b, f.scrollHeight, f.offsetHeight, e.scrollHeight, e.offsetHeight, e.clientHeight), a - e.clientHeight }, Da = function (b) { var c = \"className\"; return a.SVGElement && b instanceof a.SVGElement && (b = b[c], c = \"baseVal\"), b[c] }, Ea = function (b, d, e) { var f = \"className\"; if (a.SVGElement && b instanceof a.SVGElement && (b = b[f], f = \"baseVal\"), e === c) return void (b[f] = d); for (var g = b[f], h = 0, i = e.length; i > h; h++) g = Ga(g).replace(Ga(e[h]), \" \"); g = Fa(g); for (var j = 0, k = d.length; k > j; j++)-1 === Ga(g).indexOf(Ga(d[j])) && (g += \" \" + d[j]); b[f] = Fa(g) }, Fa = function (a) { return a.replace(H, \"\") }, Ga = function (a) { return \" \" + a + \" \" }, Ha = Date.now || function () { return +new Date }, Ia = function (a, b) { return a.frame - b.frame }, Ja = 0, Ka = 1, La = \"down\", Ma = -1, Na = Ha(), Oa = 0, Pa = 0, Qa = !1, Ra = 0, Sa = !1, Ta = 0, Ua = []; \"function\" == typeof define && define.amd ? define([], function () { return g }) : \"undefined\" != typeof module && module.exports ? module.exports = g : a.skrollr = g } (window, document);\r\nsetTimeout(function () {\r\n skrollr.init({\r\n forceHeight: false,\r\n mobileCheck: function () { return false; },\r\n smoothScrolling: true,\r\n smoothScrollingDuration: 1500\r\n }).refresh();\r\n}, 100);\r\n\r\n/* AOS (Animate on scroll) | Copyright (c) 2015 Michał Sajnóg | The MIT License (MIT) */\r\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.AOS=t()}(this,function(){\"use strict\";var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},t=\"Expected a function\",n=NaN,o=\"[object Symbol]\",i=/^\\s+|\\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,c=/^0o[0-7]+$/i,s=parseInt,u=\"object\"==typeof e&&e&&e.Object===Object&&e,d=\"object\"==typeof self&&self&&self.Object===Object&&self,l=u||d||Function(\"return this\")(),f=Object.prototype.toString,m=Math.max,p=Math.min,b=function(){return l.Date.now()};function v(e,n,o){var i,a,r,c,s,u,d=0,l=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(t);function y(t){var n=i,o=a;return i=a=void 0,d=t,c=e.apply(o,n)}function h(e){var t=e-u;return void 0===u||t>=n||t<0||f&&e-d>=r}function k(){var e=b();if(h(e))return x(e);s=setTimeout(k,function(e){var t=n-(e-u);return f?p(t,r-(e-d)):t}(e))}function x(e){return s=void 0,v&&i?y(e):(i=a=void 0,c)}function O(){var e=b(),t=h(e);if(i=arguments,a=this,u=e,t){if(void 0===s)return function(e){return d=e,s=setTimeout(k,n),l?y(e):c}(u);if(f)return s=setTimeout(k,n),y(u)}return void 0===s&&(s=setTimeout(k,n)),c}return n=w(n)||0,g(o)&&(l=!!o.leading,r=(f=\"maxWait\"in o)?m(w(o.maxWait)||0,n):r,v=\"trailing\"in o?!!o.trailing:v),O.cancel=function(){void 0!==s&&clearTimeout(s),d=0,i=u=a=s=void 0},O.flush=function(){return void 0===s?c:x(b())},O}function g(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function w(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&f.call(e)==o}(e))return n;if(g(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(i,\"\");var u=r.test(e);return u||c.test(e)?s(e.slice(2),u?2:8):a.test(e)?n:+e}var y=function(e,n,o){var i=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(t);return g(o)&&(i=\"leading\"in o?!!o.leading:i,a=\"trailing\"in o?!!o.trailing:a),v(e,n,{leading:i,maxWait:n,trailing:a})},h=\"Expected a function\",k=NaN,x=\"[object Symbol]\",O=/^\\s+|\\s+$/g,j=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,N=/^0o[0-7]+$/i,z=parseInt,C=\"object\"==typeof e&&e&&e.Object===Object&&e,A=\"object\"==typeof self&&self&&self.Object===Object&&self,q=C||A||Function(\"return this\")(),L=Object.prototype.toString,T=Math.max,M=Math.min,S=function(){return q.Date.now()};function D(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function H(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&L.call(e)==x}(e))return k;if(D(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=D(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(O,\"\");var n=E.test(e);return n||N.test(e)?z(e.slice(2),n?2:8):j.test(e)?k:+e}var $=function(e,t,n){var o,i,a,r,c,s,u=0,d=!1,l=!1,f=!0;if(\"function\"!=typeof e)throw new TypeError(h);function m(t){var n=o,a=i;return o=i=void 0,u=t,r=e.apply(a,n)}function p(e){var n=e-s;return void 0===s||n>=t||n<0||l&&e-u>=a}function b(){var e=S();if(p(e))return v(e);c=setTimeout(b,function(e){var n=t-(e-s);return l?M(n,a-(e-u)):n}(e))}function v(e){return c=void 0,f&&o?m(e):(o=i=void 0,r)}function g(){var e=S(),n=p(e);if(o=arguments,i=this,s=e,n){if(void 0===c)return function(e){return u=e,c=setTimeout(b,t),d?m(e):r}(s);if(l)return c=setTimeout(b,t),m(s)}return void 0===c&&(c=setTimeout(b,t)),r}return t=H(t)||0,D(n)&&(d=!!n.leading,a=(l=\"maxWait\"in n)?T(H(n.maxWait)||0,t):a,f=\"trailing\"in n?!!n.trailing:f),g.cancel=function(){void 0!==c&&clearTimeout(c),u=0,o=s=i=c=void 0},g.flush=function(){return void 0===c?r:v(S())},g},W=function(){};function P(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes);if(function e(t){var n=void 0,o=void 0;for(n=0;n=o.out&&!n.once?a():t>=o.in?e.animated||(function(e,t){t&&t.forEach(function(t){return e.classList.add(t)})}(i,n.animatedClassNames),V(\"aos:in\",i),e.options.id&&V(\"aos:in:\"+e.options.id,i),e.animated=!0):e.animated&&!n.once&&a()}(e,window.pageYOffset)})},Z=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}},ee=function(e,t,n){var o=e.getAttribute(\"data-aos-\"+t);if(void 0!==o){if(\"true\"===o)return!0;if(\"false\"===o)return!1}return o||n},te=function(e,t){return e.forEach(function(e,n){var o=ee(e.node,\"mirror\",t.mirror),i=ee(e.node,\"once\",t.once),a=ee(e.node,\"id\"),r=t.useClassNames&&e.node.getAttribute(\"data-aos\"),c=[t.animatedClassName].concat(r?r.split(\" \"):[]).filter(function(e){return\"string\"==typeof e});t.initClassName&&e.node.classList.add(t.initClassName),e.position={in:function(e,t,n){var o=window.innerHeight,i=ee(e,\"anchor\"),a=ee(e,\"anchor-placement\"),r=Number(ee(e,\"offset\",a?0:t)),c=a||n,s=e;i&&document.querySelectorAll(i)&&(s=document.querySelectorAll(i)[0]);var u=Z(s).top-o;switch(c){case\"top-bottom\":break;case\"center-bottom\":u+=s.offsetHeight/2;break;case\"bottom-bottom\":u+=s.offsetHeight;break;case\"top-center\":u+=o/2;break;case\"center-center\":u+=o/2+s.offsetHeight/2;break;case\"bottom-center\":u+=o/2+s.offsetHeight;break;case\"top-top\":u+=o;break;case\"bottom-top\":u+=o+s.offsetHeight;break;case\"center-top\":u+=o+s.offsetHeight/2}return u+r}(e.node,t.offset,t.anchorPlacement),out:o&&function(e,t){window.innerHeight;var n=ee(e,\"anchor\"),o=ee(e,\"offset\",t),i=e;return n&&document.querySelectorAll(n)&&(i=document.querySelectorAll(n)[0]),Z(i).top+i.offsetHeight-o}(e.node,t.offset)},e.options={once:i,mirror:o,animatedClassNames:c,id:a}}),e},ne=function(){var e=document.querySelectorAll(\"[data-aos]\");return Array.prototype.map.call(e,function(e){return{node:e}})},oe=[],ie=!1,ae={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,mirror:!1,anchorPlacement:\"top-bottom\",startEvent:\"DOMContentLoaded\",animatedClassName:\"aos-animate\",initClassName:\"aos-init\",useClassNames:!1,disableMutationObserver:!1,throttleDelay:99,debounceDelay:50},re=function(){return document.all&&!window.atob},ce=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(ie=!0),ie&&(oe=te(oe,ae),X(oe),window.addEventListener(\"scroll\",y(function(){X(oe,ae.once)},ae.throttleDelay)))},se=function(){if(oe=ne(),de(ae.disable)||re())return ue();ce()},ue=function(){oe.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\"),ae.initClassName&&e.node.classList.remove(ae.initClassName),ae.animatedClassName&&e.node.classList.remove(ae.animatedClassName)})},de=function(e){return!0===e||\"mobile\"===e&&U.mobile()||\"phone\"===e&&U.phone()||\"tablet\"===e&&U.tablet()||\"function\"==typeof e&&!0===e()};return{init:function(e){return ae=I(ae,e),oe=ne(),ae.disableMutationObserver||_.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),ae.disableMutationObserver=!0),ae.disableMutationObserver||_.ready(\"[data-aos]\",se),de(ae.disable)||re()?ue():(document.querySelector(\"body\").setAttribute(\"data-aos-easing\",ae.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",ae.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",ae.delay),-1===[\"DOMContentLoaded\",\"load\"].indexOf(ae.startEvent)?document.addEventListener(ae.startEvent,function(){ce(!0)}):window.addEventListener(\"load\",function(){ce(!0)}),\"DOMContentLoaded\"===ae.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1&&ce(!0),window.addEventListener(\"resize\",$(ce,ae.debounceDelay,!0)),window.addEventListener(\"orientationchange\",$(ce,ae.debounceDelay,!0)),oe)},refresh:ce,refreshHard:se}});\r\nAOS.init({\r\n duration: 1200\r\n});\r\n\r\n/* Utils */\r\nfunction loadScript(url, callback) {\r\n\r\n var script = document.createElement(\"script\")\r\n script.type = \"text/javascript\";\r\n\r\n if (script.readyState) { //IE\r\n script.onreadystatechange = function () {\r\n if (script.readyState == \"loaded\" ||\r\n script.readyState == \"complete\") {\r\n script.onreadystatechange = null;\r\n callback();\r\n }\r\n };\r\n } else { //Others\r\n script.onload = function () {\r\n callback();\r\n };\r\n }\r\n\r\n script.src = url;\r\n document.body.appendChild(script);\r\n}\n}.call(window));\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./box.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/*** IMPORTS FROM imports-loader ***/\n\nvar define = false, module = undefined, exports = undefined, ContentBuilder = require('ContentBox-4.1.1/contentbuilder/contentbuilder'), data_basic = require('ContentBox-4.1.1/assets/minimalist-blocks/content');\n\n(function() {\n/*\r\nContentBox.js ver.4.1\r\n*/\r\n\r\n(function (jQuery) {\r\n\r\n var $activeSection;\r\n var $activeBox;\r\n var scriptPath = currentScriptPath();\r\n var _fb;\r\n var bLangFile = false;\r\n if (typeof _txt !== 'undefined') {\r\n bLangFile = true;\r\n }\r\n var bSideSnippets = false;\r\n\r\n jQuery.contentbox = function (element, options) {\r\n\r\n var defaults = {\r\n scriptPath: '',\r\n assetPath: 'assets/',\r\n modulePath: 'assets/modules/',\r\n designPath: 'assets/designs/',\r\n contentStylePath: 'assets/styles/',\r\n snippetData: 'assets/minimalist-blocks/snippetlist.html',\r\n pluginPath: '',\r\n fontAssetPath: 'assets/fonts/',\r\n enableContentStyle: true,\r\n imageselect: '',\r\n fileselect: '',\r\n onRender: function () { },\r\n onChange: function () { },\r\n onCoverImageSelectClick: null,\r\n // onImageBrowseClick: function () { },\r\n // onImageSettingClick: function () { },\r\n // onImageSelectClick: function () { },\r\n // onFileSelectClick: function () { },\r\n onContentClick: function () { },\r\n // onPluginsLoaded: function () { },\r\n coverImageHandler: '',\r\n customval: '',\r\n enableModule: false,\r\n enableAnimation: false,\r\n colors: [\"#ff8f00\", \"#ef6c00\", \"#d84315\", \"#c62828\", \"#58362f\", \"#37474f\", \"#353535\",\r\n \"#f9a825\", \"#9e9d24\", \"#558b2f\", \"#ad1457\", \"#6a1b9a\", \"#4527a0\", \"#616161\",\r\n \"#00b8c9\", \"#009666\", \"#2e7d32\", \"#0277bd\", \"#1565c0\", \"#283593\", \"#9e9e9e\"],\r\n gradientcolors: [\r\n [\"linear-gradient(0deg, rgb(255, 57, 25), rgb(249, 168, 37))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(255, 57, 25), rgb(255, 104, 15))\", \"light\"],\r\n [\"linear-gradient(0deg, #FF5722, #FF9800)\", \"light\"],\r\n [\"linear-gradient(0deg, #613ca2, rgb(110, 123, 217))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(65, 70, 206), rgb(236, 78, 130))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(0, 150, 102), rgb(90, 103, 197))\", \"light\"],\r\n [\"linear-gradient(30deg, rgb(249, 119, 148), rgb(98, 58, 162))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(223, 70, 137), rgb(90, 103, 197))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(40, 53, 147), rgb(90, 103, 197))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(21, 101, 192), rgb(52, 169, 239))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(32, 149, 219), rgb(139, 109, 230))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(90, 103, 197), rgb(0, 184, 201))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(0, 184, 201), rgb(253, 187, 45))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(255, 208, 100), rgb(239, 98, 159))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(0, 214, 223), rgb(130, 162, 253))\", \"light\"],\r\n [\"linear-gradient(0deg, rgb(50, 234, 251), rgb(248, 247, 126))\", \"dark\"],\r\n [\"linear-gradient(0deg, rgb(141, 221, 255), rgb(255, 227, 255))\", \"dark\"],\r\n [\"linear-gradient(0deg, rgb(255, 170, 170), rgb(255, 255, 200))\", \"dark\"],\r\n [\"linear-gradient(0deg, rgb(239, 239, 239), rgb(252, 252, 252))\", \"dark\"]\r\n ],\r\n photoselect: '',\r\n moduleConfig: [],\r\n useSidebar: true,\r\n sidebarData: { \"buttons\": [\r\n\t\t\t { \"name\": \"section\", \"title\": out(\"Sections\") },\r\n\t\t\t { \"name\": \"snippet\", \"title\": out(\"Content Blocks\") },\r\n\t\t\t { \"name\": \"typography\", \"title\": out(\"Typography\") },\r\n /*\r\n To add custom panel, add record with name: \"custom1\" or \"custom2\", and specify title, your custom panel file, and icon:\r\n\r\n { \"name\": \"custom1\", \"title\": \"Custom Panel\", \"src\": \"assets/modules/panel-example.html\", \"html\": \"\" },\r\n { \"name\": \"custom2\", \"title\": \"Custom Panel 2\", \"src\": \"assets/modules/panel-example.html\", \"html\": \"\" }\r\n \r\n Or use custom div (instead of file). In the following example we use div with id=mypanel for our custom panel:\r\n\r\n { \"name\": \"panelname\", \"title\": \"Title here\", \"content\": \"#mypanel\", \"html\": \"\" },\r\n \r\n Then, add a div anywhere in the body:\r\n\r\n
\r\n ...Sidebar content here...\r\n
\r\n */\r\n\t\t\t {\"name\": \"code\", \"title\": \"HTML\" }\r\n\r\n\t\t ]\r\n },\r\n disableStaticSection: false,\r\n largerImageHandler: '',\r\n framework: '',\r\n cellFormat: '',\r\n rowFormat: '',\r\n row: '',\r\n cols: [],\r\n colequal: [],\r\n colsizes: [],\r\n classReplace: [],\r\n columnTool: true,\r\n elementTool: true,\r\n snippetPathReplace: ['', ''],\r\n buttons: ['bold', 'italic', 'underline', 'formatting', 'color', 'align', 'textsettings', 'createLink', 'tags', 'more' , '|', 'undo', 'redo'], \r\n buttonsMore: ['icon', 'image', '|', 'list', 'font', 'formatPara', '|', 'preferences'], \r\n customTags: [],\r\n animateModal: false,\r\n elementAnimate: true,\r\n\r\n elementEditor: true,\r\n // onAdd: function () { },\r\n imageQuality: 0.92, \r\n columnHtmlEditor: true,\r\n rowHtmlEditor: true,\r\n rowMoveButtons: true,\r\n htmlSyntaxHighlighting: true,\r\n scrollableEditingToolbar: true,\r\n toolbar: 'top',\r\n toolbarDisplay: 'auto',\r\n toolbarAddSnippetButton: false,\r\n paste: 'html-without-styles',\r\n builderMode: '',\r\n rowcolOutline: true,\r\n elementSelection: true,\r\n animatedSorting: false,\r\n dragWithoutHandle: false,\r\n addButtonPlacement: '',\r\n snippetCategories: [\r\n [120, \"Basic\"],\r\n [118, \"Article\"],\r\n [101, \"Headline\"],\r\n [119, \"Buttons\"],\r\n [102, \"Photos\"],\r\n [103, \"Profile\"],\r\n [116, \"Contact\"],\r\n [104, \"Products\"],\r\n [105, \"Features\"],\r\n [106, \"Process\"],\r\n [107, \"Pricing\"],\r\n [108, \"Skills\"],\r\n [109, \"Achievements\"],\r\n [110, \"Quotes\"],\r\n [111, \"Partners\"],\r\n [112, \"As Featured On\"],\r\n [113, \"Page Not Found\"],\r\n [114, \"Coming Soon\"],\r\n [115, \"Help, FAQ\"]\r\n ],\r\n defaultSnippetCategory: 120,\r\n outlineMode: '',\r\n elementHighlight: true,\r\n rowTool: 'right',\r\n toolStyle: '',\r\n outlineStyle: '',\r\n snippetAddTool: true,\r\n plugins: [],\r\n mobileSimpleEdit: false,\r\n clearPreferences: false,\r\n imageEmbed: true,\r\n undoRedoStyles: true,\r\n undoContainerOnly: false,\r\n absolutePath: false,\r\n allowFonts: true,\r\n /*\r\n emailMode: false,\r\n sidePanel: 'right',\r\n snippetHandle: true,\r\n snippetOpen: false,\r\n snippetPageSliding: false,\r\n */\r\n\r\n /* Old Version (backward compatible) */\r\n onAddSectionOpen: function () { },\r\n contentHtmlStart: '
',\r\n contentHtmlEnd: '
'\r\n\r\n };\r\n\r\n this.settings = {};\r\n\r\n var $element = jQuery(element),\r\n element = element;\r\n\r\n var customgradcolors = [];\r\n\r\n var colorpicker;\r\n\r\n this.init = function () {\r\n\r\n this.settings = jQuery.extend({}, defaults, options);\r\n\r\n $element.addClass('is-wrapper');\r\n\r\n if (typeof _snippets_path !== 'undefined') {\r\n bSideSnippets = true;\r\n }\r\n\r\n //Extend onRender with built-in plugins\r\n var old = this.settings.onRender;\r\n this.settings.onRender = function () {\r\n old.call(this);\r\n\r\n try {\r\n //Run built-in plugin inside the builder\r\n setTimeout(function () {\r\n skrollr.get().refresh();\r\n }, 100);\r\n\r\n } catch (e) { };\r\n };\r\n\r\n \r\n // if (jQuery('#divCb').length == 0) {\r\n // jQuery('body').append('
');\r\n // }\r\n if (jQuery('#_cbhtml').length == 0) {\r\n jQuery('body').append('
');\r\n }\r\n\r\n if(this.settings.sideButtons) {\r\n var sideButtons = this.settings.sideButtons;\r\n }\r\n\r\n var html_sidebar = '';\r\n if (this.settings.useSidebar) {\r\n\r\n html_sidebar += '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '\t\t\t\t\t\t\t\t' +\r\n '' +\r\n '' +\r\n '';\r\n html_sidebar += '
';\r\n\r\n var enableContentStyle = this.settings.enableContentStyle;\r\n var htmlSyntaxHighlighting = this.settings.htmlSyntaxHighlighting;\r\n var sideIndex = 0;\r\n $.each(this.settings.sidebarData.buttons, function () {\r\n if (this.name == 'section') {\r\n html_sidebar += '
' +\r\n '' +\r\n '
';\r\n }\r\n else if (this.name == 'snippet') {\r\n if (bSideSnippets) {\r\n html_sidebar += '
' +\r\n '' +\r\n '
';\r\n }\r\n }\r\n else if (this.name == 'typography') {\r\n if (enableContentStyle) {\r\n html_sidebar += '
' +\r\n 'a' +\r\n '
';\r\n }\r\n }\r\n else if (this.name == 'code') {\r\n if(htmlSyntaxHighlighting) {\r\n html_sidebar += '
' +\r\n '' +\r\n '
';\r\n } else {\r\n html_sidebar += '
' +\r\n '' +\r\n '
';\r\n }\r\n }\r\n else if (this.name == 'custom1') {\r\n html_sidebar += '
' + this.html + '
';\r\n }\r\n else if (this.name == 'custom2') {\r\n html_sidebar += '
' + this.html + '
';\r\n }\r\n else {\r\n //custom buttons\r\n html_sidebar += '
' + this.html + '
';\r\n }\r\n\r\n if(sideButtons) {\r\n /*\r\n Alternative way to add sidebar button:\r\n\r\n $(\".is-wrapper\").contentbox({\r\n sideButtons:[{ \r\n 'pos': 0, \r\n 'title': 'Writing Set', \r\n 'src': 'assets/modules/panel-example.html', \r\n 'html': '', \r\n 'class': 'sidebar-sections' \r\n }\r\n ]\r\n });\r\n */\r\n \r\n $.each(sideButtons, function () {\r\n var btn = this;\r\n\r\n if(sideIndex==btn.pos){\r\n var panelId = makeid();\r\n html_sidebar += '
' +\r\n btn.html +\r\n '
';\r\n\r\n var panelHtml = \r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
';\r\n jQuery('#_cbhtml').append(panelHtml);\r\n \r\n }\r\n\r\n });\r\n }\r\n\r\n sideIndex++;\r\n });\r\n\r\n /* If you want to add custom button on the sidebar's bottom area:\r\n html_sidebar += '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' + \r\n '
';\r\n */\r\n\r\n html_sidebar += '
';\r\n\r\n html_sidebar += '' +\r\n '
' +\r\n\t '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n\t '' +\r\n '
' +\r\n '
' +\r\n\t '
' +\r\n\t\t\t\t\t '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n\t '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n\t '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n\t '
' +\r\n '' +\r\n '
' +\r\n '
';\r\n\r\n jQuery('#_cbhtml').append(html_sidebar);\r\n\r\n } else {\r\n\r\n var html_normal = '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n jQuery('#_cbhtml').append(html_normal);\r\n }\r\n \r\n _fb = new ContentBuilder({\r\n container: '.is-container',\r\n page: '.is-wrapper',\r\n snippetPath: _snippets_path,\r\n snippetJSON: data_basic,\r\n onChange: this.settings.onChange,\r\n onRender: this.settings.onRender,\r\n moduleConfig: this.settings.moduleConfig,\r\n modulePath: this.settings.modulePath,\r\n onImageSelectClick: this.settings.onImageSelectClick,\r\n onFileSelectClick: this.settings.onFileSelectClick,\r\n onImageBrowseClick: this.settings.onImageBrowseClick,\r\n onImageSettingClick: this.settings.onImageSettingClick,\r\n onContentClick: this.settings.onContentClick,\r\n onPluginsLoaded: this.settings.onPluginsLoaded,\r\n imageselect: this.settings.imageselect,\r\n fileselect: this.settings.fileselect,\r\n imageEmbed: this.settings.imageEmbed,\r\n sourceEditor: this.settings.sourceEditor,\r\n customval: this.settings.customval,\r\n snippetData: this.settings.snippetData,\r\n colors: this.settings.colors,\r\n gradientcolors: this.settings.gradientcolors,\r\n buttons: this.settings.buttons,\r\n buttonsMore: this.settings.buttonsMore,\r\n customTags: this.settings.customTags,\r\n largerImageHandler: this.settings.largerImageHandler,\r\n framework: this.settings.framework,\r\n cellFormat: this.settings.cellFormat,\r\n rowFormat: this.settings.rowFormat,\r\n row: this.settings.row,\r\n cols: this.settings.cols,\r\n colequal: this.settings.colequal,\r\n colsizes: this.settings.colsizes,\r\n classReplace: this.settings.classReplace,\r\n columnTool: this.settings.columnTool,\r\n elementTool: this.settings.elementTool,\r\n snippetPathReplace: this.settings.snippetPathReplace,\r\n animateModal: this.settings.animateModal,\r\n elementAnimate: this.settings.elementAnimate,\r\n snippetList: '#divSidebarSnippets',\r\n\r\n elementEditor: this.settings.elementEditor,\r\n onAdd: this.settings.onAdd,\r\n imageQuality: this.settings.imageQuality,\r\n columnHtmlEditor: this.settings.columnHtmlEditor,\r\n rowHtmlEditor: this.settings.rowHtmlEditor,\r\n rowMoveButtons: this.settings.rowMoveButtons,\r\n htmlSyntaxHighlighting: this.settings.htmlSyntaxHighlighting,\r\n scrollableEditingToolbar: this.settings.scrollableEditingToolbar,\r\n toolbar: this.settings.toolbar,\r\n toolbarDisplay: this.settings.toolbarDisplay,\r\n toolbarAddSnippetButton: this.settings.toolbarAddSnippetButton,\r\n paste: this.settings.paste,\r\n builderMode: this.settings.builderMode,\r\n rowcolOutline: this.settings.rowcolOutline,\r\n elementSelection: this.settings.elementSelection,\r\n animatedSorting: this.settings.animatedSorting,\r\n dragWithoutHandle: this.settings.dragWithoutHandle,\r\n addButtonPlacement: this.settings.addButtonPlacement,\r\n outlineMode: this.settings.outlineMode,\r\n elementHighlight: this.settings.elementHighlight,\r\n rowTool: this.settings.rowTool,\r\n toolStyle: this.settings.toolStyle,\r\n outlineStyle: this.settings.outlineStyle,\r\n snippetAddTool: this.settings.snippetAddTool,\r\n plugins: this.settings.plugins,\r\n mobileSimpleEdit: this.settings.mobileSimpleEdit,\r\n clearPreferences: this.settings.clearPreferences,\r\n\r\n snippetCategories: this.settings.snippetCategories,\r\n defaultSnippetCategory: this.settings.defaultSnippetCategory,\r\n \r\n scriptPath: this.settings.scriptPath,\r\n assetPath: this.settings.assetPath,\r\n pluginPath: this.settings.pluginPath,\r\n fontAssetPath: this.settings.fontAssetPath,\r\n\r\n undoRedoStyles: this.settings.undoRedoStyles,\r\n onUndo: function() {\r\n $element.data(\"contentbox\").setup();\r\n },\r\n onRedo: function() {\r\n $element.data(\"contentbox\").setup();\r\n },\r\n undoContainerOnly: this.settings.undoContainerOnly,\r\n absolutePath: this.settings.absolutePath,\r\n allowFonts: this.settings.allowFonts\r\n });\r\n\r\n var s = '' +\r\n '
' +\r\n '
' +\r\n '

' + out('Are you sure you want to delete this section?') + '

' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' + out('Section Settings') + '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Move Section') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Height') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' + out('Module Settings') + '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' + out('Custom Code (Javascript Allowed)') + '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' + out('Box Settings') + '
' +\r\n '' +\r\n\r\n '
' +\r\n '
' +\r\n '
' + out('Box Size') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Content Size') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Background Color') + ':
' +\r\n '
' +\r\n '' + /*A*/\r\n '' + /*A*/\r\n '' + /*A*/\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '

' + out('This box has no available settings.') + '

' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Text Style') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Transparency') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
Align:
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n (this.settings.enableContentStyle ?\r\n '
' +\r\n '
' + out('Typography') + ':
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' : '') +\r\n '
' +\r\n '
' +\r\n /*\r\n '
' +\r\n '
Content Size:
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n */\r\n '
' +\r\n '
' + out('Position') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Top/Bottom Adjustment') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Left/Right Adjustment') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n\r\n\t\t\t\t\t\t(this.settings.onCoverImageSelectClick != null\r\n\t\t\t\t\t\t?\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
'\r\n\t\t\t\t\t\t:\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
'\r\n\t\t\t\t\t\t) +\r\n\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n\r\n '
' +\r\n '
' + out('Overlay Color') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Overlay Transparency') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Horizontal Position') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' + out('Vertical Position') + ':
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '' + \r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' + out('Photos') + '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '

' + out('This page has one or more sections that have their own typography style.') + '

' +\r\n '
' +\r\n '' +\r\n '

' + out('To apply typography style on a specific section, goto \\'Content Style\\' tab in Box Settings') + '

' +\r\n '' +\r\n '
' +\r\n '
' +\r\n '';\r\n\r\n jQuery('#_cbhtml').append(s);\r\n\r\n if (this.settings.useSidebar) {\r\n\r\n jQuery('body').addClass('sidebar-active');\r\n\r\n jQuery('.is-sidebar > div').on('click', function () {\r\n \r\n if (jQuery(this).hasClass('active')) { // toggle\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n return;\r\n }\r\n\r\n if (jQuery(this).attr('data-content')) {\r\n\r\n jQuery('#_cbhtml').append('
');\r\n\r\n jQuery('.is-sidebar-overlay').off('click');\r\n jQuery('.is-sidebar-overlay').on('click', function (e) {\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n });\r\n\r\n\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n\r\n jQuery(this).addClass('active');\r\n var id = jQuery(this).attr('data-content');\r\n jQuery('#' + id).addClass('active');\r\n }\r\n\r\n if (jQuery(this).attr('data-command')) {\r\n var cmd = jQuery(this).attr('data-command');\r\n if (cmd == 'section') {\r\n jQuery('.is-wrapper').data('contentbox').viewIdeas();\r\n }\r\n if (cmd == 'code') {\r\n if($element.data(\"contentbox\").settings.htmlSyntaxHighlighting) {\r\n jQuery('.is-wrapper').data('contentbox').viewHtml();\r\n } else{\r\n jQuery('.is-wrapper').data('contentbox').viewHtml2();\r\n }\r\n }\r\n if (cmd == 'typography') {\r\n jQuery(this).attr('data-applyto', 'page');\r\n jQuery('.is-wrapper').data('contentbox').viewTypography();\r\n }\r\n }\r\n\r\n if (jQuery(this).attr('data-src')) {\r\n var id = jQuery(this).attr('data-content');\r\n if (id == 'divCustomSidebarArea1') {\r\n if (jQuery('#ifrCustomSidebarArea1').attr('src').indexOf('blank') != -1) {\r\n var src = jQuery(this).attr('data-src');\r\n jQuery('#ifrCustomSidebarArea1').attr('src', src);\r\n }\r\n } else if (id == 'divCustomSidebarArea2') {\r\n if (jQuery('#ifrCustomSidebarArea2').attr('src').indexOf('blank') != -1) {\r\n var src = jQuery(this).attr('data-src');\r\n jQuery('#ifrCustomSidebarArea2').attr('src', src);\r\n }\r\n } else { \r\n var src = jQuery(this).attr('data-src');\r\n \r\n var id = jQuery(this).attr('data-content');\r\n var $iframe = jQuery('#' + id).find('iframe');\r\n \r\n if($iframe.attr('src').indexOf('blank') != -1) {\r\n $iframe.attr('src', src);\r\n }\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (!this.settings.useSidebar) {\r\n jQuery.get(scriptPath + 'contentbox.html', function (data) {\r\n var htmlData = '';\r\n var htmlThumbs = '';\r\n var i = 1;\r\n jQuery('
').html(data).children('div').each(function () {\r\n\r\n var block = jQuery(this).html();\r\n\r\n var sfind = jQuery(this).attr('data-find');\r\n var sreplace = jQuery(this).attr('data-replace');\r\n var sfind2 = jQuery(this).attr('data-find2');\r\n var sreplace2 = jQuery(this).attr('data-replace2');\r\n var sfind3 = jQuery(this).attr('data-find2');\r\n var sreplace3 = jQuery(this).attr('data-replace2');\r\n\r\n var thumb = jQuery(this).attr('data-thumb');\r\n\r\n if (sfind) {\r\n block = block.replace('[%CONTAINER_START%]', $element.data(\"contentbox\").settings.contentHtmlStart.replace(sfind, sreplace));\r\n block = block.replace('[%CONTAINER_END%]', $element.data(\"contentbox\").settings.contentHtmlEnd);\r\n }\r\n if (sfind2) {\r\n block = block.replace('[%CONTAINER_START%]', $element.data(\"contentbox\").settings.contentHtmlStart.replace(sfind2, sreplace2));\r\n block = block.replace('[%CONTAINER_END%]', $element.data(\"contentbox\").settings.contentHtmlEnd);\r\n }\r\n if (sfind3) {\r\n block = block.replace('[%CONTAINER_START%]', $element.data(\"contentbox\").settings.contentHtmlStart.replace(sfind3, sreplace3));\r\n block = block.replace('[%CONTAINER_END%]', $element.data(\"contentbox\").settings.contentHtmlEnd);\r\n }\r\n block = block.replace('[%CONTAINER_START%]', $element.data(\"contentbox\").settings.contentHtmlStart);\r\n block = block.replace('[%CONTAINER_END%]', $element.data(\"contentbox\").settings.contentHtmlEnd);\r\n block = block.replace(/\\[%IMAGE_PATH%\\]/g, scriptPath + 'images/');\r\n\r\n //Enclode each block. Source: http://stackoverflow.com/questions/1219860/html-encoding-in-javascript-jquery\r\n var blockEncoded = jQuery('
').text(block).html(); //Encoded html prevents loading many images \r\n\r\n if (!$element.data(\"contentbox\").settings.enableModule) {\r\n if (jQuery(this).find(\".is-module\").length == 0 && jQuery(this).find(\".is-placeholder\").length == 0) {\r\n htmlData += '
' + blockEncoded + '
';\r\n htmlThumbs += '
';\r\n } else {\r\n\r\n }\r\n } else {\r\n htmlData += '
' + blockEncoded + '
';\r\n htmlThumbs += '
';\r\n }\r\n\r\n i++;\r\n\r\n });\r\n\r\n jQuery('#divSectionList').html(htmlThumbs);\r\n jQuery('#divSections').html(htmlData);\r\n\r\n jQuery('#divSectionList > *').on('click', function (e) {\r\n var newArea = '';\r\n newArea = jQuery('#sect' + jQuery(this).attr('data-sect')).text().replace('<', '<').replace('>', '>');\r\n\r\n //*********** CUSTOMCODE ***********\r\n newArea = newArea.replace(/{id}/g, makeid());\r\n //*********** /CUSTOMCODE ***********\r\n\r\n var $newSection;\r\n\r\n if ($element.children('.is-section').last().hasClass('is-static')) {\r\n\r\n $element.children('.is-section').last().before(newArea);\r\n\r\n $newSection = $element.children('.is-section').last().prev();\r\n\r\n } else {\r\n\r\n if ($element.children('.is-section').length > 0) {\r\n if (!$element.children('.is-section').last().hasClass(\"is-bg-grey\")) {\r\n //$element.append(newArea);\r\n $element.children('.is-section').last().after(newArea);\r\n $element.children('.is-section').last().addClass(\"is-bg-grey\");\r\n } else {\r\n //$element.append(newArea);\r\n $element.children('.is-section').last().after(newArea);\r\n }\r\n } else {\r\n $element.prepend(newArea);\r\n }\r\n $newSection = $element.children('.is-section').last();\r\n\r\n }\r\n\r\n //*********** CUSTOMCODE ***********\r\n $newSection.find(\".is-overlay-content[data-module]\").each(function () {//Mode: code\r\n var html = (decodeURIComponent(jQuery(this).attr(\"data-html\")));\r\n //Fill the block with original code (when adding section)\r\n jQuery(this).html(html);\r\n });\r\n //*********** /CUSTOMCODE ***********\r\n\r\n _fb.applyBehavior();\r\n\r\n $newSection.append('
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n\r\n _fb.setTooltip($element.get(0));\r\n\r\n $newSection.find('.is-section-edit').on('click', function (e) {\r\n $activeSection = jQuery(this).parent().parent();\r\n \r\n $element.data(\"contentbox\").editSection();\r\n });\r\n\r\n $newSection.find('.is-section-remove').on('click', function (e) {\r\n \r\n jQuery('body, html').animate({\r\n scrollTop: $newSection.offset().top\r\n }, 1000);\r\n\r\n //Prepare\r\n\r\n var $modal = jQuery('.is-modal.delsectionconfirm');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n }\r\n });\r\n\r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n $newSection.fadeOut(400, function () {\r\n $newSection.remove();\r\n\r\n //Trigger Render event\r\n $element.data(\"contentbox\").settings.onRender();\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n //Hide box tool\r\n jQuery(\"#divboxtool\").css(\"display\", \"none\");\r\n });\r\n return false;\r\n });\r\n\r\n });\r\n\r\n var $modal = jQuery('.is-modal.addsection');\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n $element.data(\"contentbox\").applyBoxBehavior();\r\n\r\n jQuery('body, html').animate({\r\n scrollTop: $newSection.offset().top\r\n }, 1000);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n //Close sidebar\r\n //jQuery('.is-sidebar > div').removeClass('active');\r\n //jQuery('.is-sidebar-content').removeClass('active');\r\n\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n return false;\r\n });\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n this.setup();\r\n\r\n\r\n if (jQuery(\"#divboxtool\").length == 0) {\r\n var s = '
' +\r\n\t\t\t '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n\t\t\t\t '' +\r\n '' +\r\n\t\t\t '
' +\r\n '
' +\r\n '
' +\r\n\t\t '
';\r\n //jQuery('body').append(s);\r\n jQuery('#_cbhtml').append(s);\r\n }\r\n jQuery('#hidcustomval').val(this.settings.customval);\r\n\r\n /* re-render/refresh */\r\n //var y = jQuery(window).scrollTop();\r\n //jQuery(window).scrollTop(y + 1);\r\n\r\n colorpicker = _fb.colorpicker();\r\n\r\n jQuery('.is-sidebar').on('mouseover', function(){\r\n jQuery(\"#divboxtool\").css(\"display\", \"none\");\r\n jQuery('.is-section-tool').css('display', 'none');\r\n });\r\n\r\n }; \r\n // init()\r\n\r\n this.addButton = function(btn) {\r\n var btnId = makeid();\r\n var panelId = makeid();\r\n var btnHtml;\r\n if(btn.src) {\r\n\r\n btnHtml = '
' +\r\n btn.html +\r\n '
';\r\n \r\n var panelHtml = \r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
';\r\n jQuery('#_cbhtml').append(panelHtml);\r\n \r\n } else {\r\n\r\n btnHtml = '
' +\r\n btn.html +\r\n '
';\r\n\r\n }\r\n jQuery('.is-sidebar > *:eq(' + btn.pos + ')').after(btnHtml);\r\n\r\n jQuery('#' + btnId).on('click', function(e){\r\n \r\n if(btn.src) {\r\n \r\n if(!jQuery(this).hasClass('active')) {\r\n \r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n \r\n jQuery(this).addClass('active');\r\n var id = jQuery(this).attr('data-content');\r\n jQuery('#' + id).addClass('active');\r\n\r\n var $iframe = jQuery('#' + id + ' iframe');\r\n if($iframe.attr('src') == 'about:blank') {\r\n $iframe.attr('src', btn.src);\r\n }\r\n\r\n jQuery('#_cbhtml').append('
');\r\n\r\n jQuery('.is-sidebar-overlay').off('click');\r\n jQuery('.is-sidebar-overlay').on('click', function (e) {\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n });\r\n\r\n } else {\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n return;\r\n }\r\n\r\n } else {\r\n\r\n btn.onClick();\r\n\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n this.undo = function() {\r\n _fb.undo();\r\n };\r\n \r\n this.redo = function() {\r\n _fb.redo();\r\n };\r\n\r\n this.saveImages = function(handler, onComplete) {\r\n _fb.saveImages(handler, onComplete);\r\n };\r\n\r\n this.showModal = function ($modal) {\r\n\r\n $modal.addClass('active');\r\n\r\n };\r\n\r\n this.hideModal = function ($modal) {\r\n $modal.removeClass('active');\r\n };\r\n\r\n this.addIdea = function (newArea) {\r\n\r\n _fb.saveForUndo();\r\n\r\n var designPath = $element.data(\"contentbox\").settings.designPath;\r\n\r\n newArea = newArea.replace(/\\[%IMAGE_PATH%\\]/g, designPath);\r\n newArea = newArea.replace(/%5B%25IMAGE_PATH%25%5D/g, designPath); //If [%IMAGE_PATH%] is encoded (inside data-html)\r\n\r\n var $newSection;\r\n if (newArea.indexOf('is-static') == -1 && $element.children('.is-section').last().hasClass('is-static')) {\r\n\r\n $element.children('.is-section').last().before(newArea);\r\n\r\n $newSection = $element.children('.is-section').last().prev();\r\n\r\n if ($newSection.prev()) {\r\n if (!$newSection.prev().hasClass(\"is-bg-grey\")) {\r\n $newSection.addClass(\"is-bg-grey\");\r\n }\r\n }\r\n\r\n } else {\r\n\r\n if ($element.children('.is-section').length > 0) {\r\n /*\r\n if (!$element.children('.is-section').last().hasClass(\"is-bg-grey\")) {\r\n //$element.append(newArea);\r\n $element.children('.is-section').last().after(newArea);\r\n $element.children('.is-section').last().addClass(\"is-bg-grey\");\r\n } else {\r\n //$element.append(newArea);\r\n $element.children('.is-section').last().after(newArea);\r\n }*/\r\n\r\n $element.children('.is-section').last().after(newArea);\r\n\r\n } else {\r\n $element.prepend(newArea);\r\n }\r\n\r\n $newSection = $element.children('.is-section').last();\r\n\r\n if ($newSection.prev()) {\r\n if (!$newSection.prev().hasClass(\"is-bg-grey\")) {\r\n $newSection.addClass(\"is-bg-grey\");\r\n }\r\n }\r\n\r\n }\r\n\r\n //*********** CUSTOMCODE ***********\r\n $newSection.find(\".is-overlay-content[data-module]\").each(function () {//Mode: code\r\n var html = (decodeURIComponent(jQuery(this).attr(\"data-html\")));\r\n \r\n html = html.replace(/{id}/g, makeid());\r\n\r\n //Fill the block with original code (when adding section)\r\n jQuery(this).html(html);\r\n });\r\n //*********** /CUSTOMCODE ***********\r\n\r\n _fb.applyBehavior();\r\n\r\n $newSection.append('
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n \r\n _fb.setTooltip($element.get(0));\r\n\r\n $newSection.find('.is-section-edit').on('click', function (e) {\r\n $activeSection = jQuery(this).parent().parent();\r\n \r\n $element.data(\"contentbox\").editSection();\r\n });\r\n\r\n $newSection.find('.is-section-remove').on('click', function (e) {\r\n\r\n jQuery('body, html').animate({\r\n scrollTop: $newSection.offset().top\r\n }, 1000);\r\n\r\n //Prepare\r\n\r\n var $modal = jQuery('.is-modal.delsectionconfirm');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n }\r\n });\r\n\r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n $newSection.fadeOut(400, function () {\r\n $newSection.remove();\r\n\r\n //Trigger Render event\r\n $element.data(\"contentbox\").settings.onRender();\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n \r\n //Hide box tool\r\n jQuery(\"#divboxtool\").css(\"display\", \"none\");\r\n });\r\n return false;\r\n });\r\n\r\n });\r\n\r\n $element.data(\"contentbox\").applyBoxBehavior();\r\n\r\n //$('body, html').scrollTop($newSection.offset().top);\r\n jQuery('body, html').animate({\r\n scrollTop: $newSection.offset().top\r\n }, 1000);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n //Close sidebar\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow-y', '');\r\n\r\n };\r\n\r\n this.setup = function () {\r\n\r\n $element.children('.is-section').each(function () {\r\n\r\n var $currentSection = jQuery(this);\r\n\r\n //if ($currentSection.hasClass('is-static')) return;\r\n\r\n if ($currentSection.find('.is-boxes').length == 0 && !$currentSection.hasClass('is-stretch')) {\r\n //$currentSection.html('
' + $currentSection.html() + '
');\r\n //$currentSection.addClass('is-box');\r\n }\r\n\r\n $currentSection.append('
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n\r\n _fb.setTooltip($element.get(0));\r\n\r\n $currentSection.find(\".is-section-edit\").off('click');\r\n $currentSection.find(\".is-section-edit\").on('click', function (e) {\r\n $activeSection = jQuery(this).parent().parent();\r\n\r\n $element.data(\"contentbox\").editSection();\r\n });\r\n\r\n $currentSection.find(\".is-section-remove\").off('click');\r\n $currentSection.find(\".is-section-remove\").on('click', function (e) {\r\n \r\n jQuery('body, html').animate({\r\n scrollTop: $currentSection.offset().top\r\n }, 1000);\r\n\r\n //Prepare\r\n\r\n var $modal = jQuery('.is-modal.delsectionconfirm');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n }\r\n });\r\n\r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n $currentSection.fadeOut(400, function () {\r\n\r\n _fb.saveForUndo();\r\n\r\n $currentSection.remove();\r\n\r\n //Trigger Render event\r\n $element.data(\"contentbox\").settings.onRender();\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n \r\n //Hide box tool\r\n jQuery(\"#divboxtool\").css(\"display\", \"none\");\r\n });\r\n return false;\r\n });\r\n\r\n });\r\n\r\n\r\n });\r\n\r\n this.applyBoxBehavior();\r\n\r\n _fb.applyBehavior();\r\n\r\n };\r\n\r\n this.loadHtml = function (html) {\r\n $element.html(html);\r\n this.setup();\r\n };\r\n\r\n this.addSection = function () {\r\n\r\n //Trigger onAddSectionOpen event\r\n this.settings.onAddSectionOpen();\r\n\r\n var $modal = jQuery('.is-modal.addsection');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n };\r\n\r\n this.editSection = function () {\r\n\r\n jQuery('body, html').animate({\r\n scrollTop: $activeSection.offset().top\r\n }, 1000);\r\n \r\n //Prepare\r\n\r\n var $modal = jQuery('.is-modal.editsection');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n $element.data(\"contentbox\").hideModal($modal);\r\n }\r\n });\r\n\r\n\r\n if ($activeSection.hasClass('is-static')) {\r\n jQuery('.move-section').css('display', 'none');\r\n jQuery('.add-scroll-section').css('display', 'none');\r\n } else {\r\n jQuery('.move-section').css('display', 'table');\r\n jQuery('.add-scroll-section').css('display', 'table');\r\n }\r\n\r\n\r\n jQuery(\".cmd-section-up\").off('click');\r\n jQuery(\".cmd-section-up\").on('click', function (e) {\r\n\r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionUp();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-section-down\").off('click');\r\n jQuery(\".cmd-section-down\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionDown();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-section-top\").unbind(\"click\");\r\n jQuery(\".cmd-section-top\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionTop();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-section-bottom\").unbind(\"click\");\r\n jQuery(\".cmd-section-bottom\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionBottom();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-section-height\").unbind(\"click\");\r\n jQuery(\".cmd-section-height\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionHeight(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-section-scroll\").unbind(\"click\");\r\n jQuery(\".cmd-section-scroll\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionScrollIcon(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n if ($activeSection.find(\".is-arrow-down\").length > 0) {\r\n jQuery(\"#chkScrollIcon\").prop(\"checked\", true);\r\n } else {\r\n jQuery(\"#chkScrollIcon\").prop(\"checked\", false);\r\n }\r\n jQuery(\"#chkScrollIcon\").unbind(\"click\");\r\n jQuery(\"#chkScrollIcon\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").sectionUseScroll();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n });\r\n\r\n };\r\n\r\n this.applyBoxBehavior = function () {\r\n\r\n jQuery(\".is-box\").on('mouseenter mouseleave', function (e) {\r\n switch (e.type) {\r\n case 'mouseenter':\r\n\r\n var $box = jQuery(this);\r\n\r\n var leftadj;\r\n\r\n if ($box.find('.is-overlay-content[data-module]').length > 0) {\r\n jQuery(\"#form-upload-cover\").css(\"display\", \"none\");\r\n jQuery(\"#lnkeditmodule\").css(\"display\", \"inline-block\");\r\n jQuery(\"#divboxtool\").css(\"width\", \"80px\");\r\n leftadj = 55;\r\n } else {\r\n jQuery(\"#form-upload-cover\").css(\"display\", \"block\");\r\n jQuery(\"#lnkeditmodule\").css(\"display\", \"none\");\r\n jQuery(\"#divboxtool\").css(\"width\", \"80px\");\r\n leftadj = 40;\r\n }\r\n\r\n /* always show camera icon (except stretched module section which doesn't have is-boxes\r\n if ($box.find(\".is-boxes\").length > 0) {\r\n jQuery(\"#form-upload-cover\").css(\"display\", \"block\");\r\n leftadj = 30;\r\n jQuery(\"#divboxtool\").css(\"width\", \"60px\");\r\n } else {\r\n jQuery(\"#form-upload-cover\").css(\"display\", \"none\");\r\n leftadj = 15;\r\n jQuery(\"#divboxtool\").css(\"width\", \"30px\");\r\n }\r\n */\r\n\r\n var scrolltop = jQuery(window).scrollTop();\r\n var offsettop = $box.offset().top;\r\n var offsetleft = $box.offset().left;\r\n var top = offsettop + parseInt($box.css('height')) - 40;\r\n var left = offsetleft + parseInt($box.css('width')) / 2;\r\n jQuery(\"#divboxtool\").css(\"top\", top + \"px\");\r\n jQuery(\"#divboxtool\").css(\"left\", (left - leftadj) + \"px\");\r\n //jQuery(\"#divboxtool\").fadeIn(300);\r\n jQuery(\"#divboxtool\").css(\"display\", \"flex\");\r\n\r\n jQuery('.is-section-tool').css('display', 'none');\r\n if(jQuery(this).hasClass('is-section')) {\r\n jQuery(this).find('.is-section-tool').css('display', 'block');\r\n } else {\r\n jQuery(this).parents('.is-section').first().find('.is-section-tool').css('display', 'block');\r\n\r\n }\r\n // Prevent flickr\r\n // jQuery(\"#divboxtool\").on('mouseenter mouseleave', function (e) {\r\n // switch (e.type) {\r\n // case 'mouseenter':\r\n // jQuery(\"#divboxtool\").stop(true, true).css(\"display\", \"flex\");\r\n // break;\r\n // case 'mouseleave':\r\n // jQuery(\"#divboxtool\").stop(true, true).fadeOut(0);\r\n // break;\r\n // }\r\n // });\r\n\r\n jQuery(\"#fileCover\").off('click');\r\n jQuery(\"#fileCover\").on('click', function (e) {\r\n\r\n $activeBox = $box;\r\n $activeSection = $box.parents('is-section');\r\n\r\n });\r\n\r\n jQuery(\"#lnkeditbox\").off('click');\r\n jQuery(\"#lnkeditbox\").on('click', function (e) {\r\n\r\n $activeBox = $box;\r\n $activeSection = $box.parents('is-section');\r\n\r\n $element.data(\"contentbox\").editBox();\r\n\r\n });\r\n\r\n jQuery(\"#lnkeditmodule\").off('click');\r\n jQuery(\"#lnkeditmodule\").on('click', function (e) {\r\n\r\n $activeBox = $box;\r\n $activeSection = $box.parents('is-section');\r\n\r\n $element.data(\"contentbox\").editModule();\r\n });\r\n\r\n\r\n jQuery(\"#fileCover\").off('change');\r\n jQuery(\"#fileCover\").on('change', function (e) {\r\n\r\n if (jQuery(this).val() == '') return;\r\n \r\n _fb.saveForUndo(); \r\n\r\n jQuery(\"#lblWait\").css(\"display\", \"block\");\r\n jQuery(\"#form-upload-cover\").submit();\r\n\r\n jQuery(this).clearInputs();\r\n\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n });\r\n\r\n break;\r\n case 'mouseleave':\r\n // jQuery(\"#divboxtool\").stop(true, true).fadeOut(0); // new\r\n break;\r\n }\r\n });\r\n\r\n /*\r\n Add dummy DIV after the last section (for the ability to adjust last section according bottom bar).\r\n In FF, needed only when adding new section.\r\n In IE, needed on normal.\r\n */\r\n if ($element.children('div.is-dummy').length > 0) {\r\n $element.children('div.is-dummy').remove();\r\n }\r\n $element.append('
'); //always on the last\r\n\r\n if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {\r\n //Safari doesn't need the DIV\r\n jQuery('div.is-dummy').remove();\r\n }\r\n\r\n //Trigger Render event\r\n this.settings.onRender();\r\n };\r\n\r\n this.editModule = function () {\r\n\r\n jQuery('body, html').animate({\r\n scrollTop: $activeBox.offset().top\r\n }, 1000);\r\n\r\n var $activeModule = $activeBox.find(\".is-overlay-content[data-module]\");\r\n\r\n jQuery(\"[data-module-active]\").removeAttr('data-module-active');\r\n $activeModule.attr('data-module-active', '1');\r\n\r\n var moduleName = $activeModule.attr('data-module');\r\n\r\n if (moduleName == 'code') {\r\n\r\n if($element.data(\"contentbox\").settings.htmlSyntaxHighlighting) {\r\n\r\n $activeBox.addClass('box-active');\r\n\r\n var html = decodeURIComponent($activeModule.attr(\"data-html\"));\r\n \r\n jQuery('#txtBoxCustomCode').val(html);\r\n\r\n jQuery('textarea').removeAttr('data-source-active');\r\n jQuery('textarea').removeAttr('data-source-ok');\r\n jQuery('textarea').removeAttr('data-source-cancel');\r\n jQuery('.editcustomcode textarea').attr('data-source-active', '1');\r\n jQuery('.editcustomcode textarea').attr('data-source-ok', '.editcustomcode .input-ok');\r\n jQuery('.editcustomcode textarea').attr('data-source-cancel', '.editcustomcode');\r\n\r\n _fb.viewHtmlNormal();\r\n\r\n var $modal = jQuery('.is-modal.editcustomcode');\r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n \r\n _fb.saveForUndo(); \r\n\r\n jQuery('#hidBoxCustomCode').val(jQuery('#txtBoxCustomCode').val());\r\n\r\n //Save Html (original)\r\n $activeModule.attr('data-html', encodeURIComponent(jQuery('#hidBoxCustomCode').val()));\r\n\r\n //Render (programmatically)\r\n $activeModule.html(jQuery('#hidBoxCustomCode').val());\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n jQuery('.box-active').removeClass('box-active');\r\n\r\n });\r\n\r\n } else {\r\n\r\n $activeBox.addClass('box-active');\r\n\r\n var $modal = jQuery('.is-modal.editcustomcode');\r\n $element.data(\"contentbox\").showModal($modal);\r\n \r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n $element.data(\"contentbox\").hideModal($modal);\r\n jQuery('.box-active').removeClass('box-active');\r\n }\r\n });\r\n \r\n var html = decodeURIComponent($activeModule.attr(\"data-html\"));\r\n jQuery('#txtBoxCustomCode').val(html);\r\n jQuery('#txtBoxCustomCode').trigger('focus');\r\n \r\n jQuery('.editcustomcode .cell-html-larger').off('click');\r\n jQuery('.editcustomcode .cell-html-larger').on('click', function (e) {\r\n \r\n //used by larger editor dialog (html.html)\r\n jQuery('textarea').removeAttr('data-source-active');\r\n jQuery('textarea').removeAttr('data-source-ok');\r\n jQuery('textarea').removeAttr('data-source-cancel');\r\n jQuery('.editcustomcode textarea').attr('data-source-active', '1');\r\n jQuery('.editcustomcode textarea').attr('data-source-ok', '.editcustomcode .input-ok');\r\n jQuery('.editcustomcode textarea').attr('data-source-cancel', '.editcustomcode');\r\n \r\n _fb.viewHtmlLarger();\r\n \r\n });\r\n \r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n \r\n _fb.saveForUndo(); \r\n \r\n jQuery('#hidBoxCustomCode').val(jQuery('#txtBoxCustomCode').val());\r\n \r\n //Save Html (original)\r\n $activeModule.attr('data-html', encodeURIComponent(jQuery('#hidBoxCustomCode').val()));\r\n \r\n //Render (programmatically)\r\n $activeModule.html(jQuery('#hidBoxCustomCode').val());\r\n \r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n \r\n $element.data(\"contentbox\").hideModal($modal);\r\n jQuery('.box-active').removeClass('box-active');\r\n \r\n });\r\n\r\n }\r\n\r\n\r\n } else {\r\n $activeBox.addClass('box-active');\r\n\r\n var $modal = jQuery('.is-modal.editmodule');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n $element.data(\"contentbox\").hideModal($modal);\r\n jQuery('.box-active').removeClass('box-active');\r\n }\r\n });\r\n\r\n $modal.find('iframe').attr('src', $element.data('contentbox').settings.modulePath + moduleName + '.html'); //load module panel on iframe\r\n\r\n var moduleDesc = $activeModule.attr('data-module-desc');\r\n if (moduleDesc) {\r\n $modal.find('.is-modal-bar').html(moduleDesc);\r\n } else {\r\n $modal.find('.is-modal-bar').html('Module Settings');\r\n }\r\n\r\n var w = $activeModule.attr('data-dialog-width');\r\n if (!w || w == '') {\r\n w = '900px';\r\n }\r\n\r\n var h = $activeModule.attr('data-dialog-height');\r\n if (!h || h == '') {\r\n h = '570px';\r\n }\r\n\r\n $modal.children('div').first().css('max-width', w);\r\n $modal.children('div').first().css('height', h);\r\n\r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n \r\n _fb.saveForUndo(); \r\n\r\n if (moduleName == 'code') {\r\n var $codeEditor = jQuery('#txtBoxCustomCode').data('CodeMirrorInstance');\r\n jQuery('#hidBoxCustomCode').val($codeEditor.getValue());\r\n }\r\n\r\n //Save Html (original)\r\n $activeModule.attr('data-html', encodeURIComponent(jQuery('#hidModuleCode').val()));\r\n\r\n //Save Settings (original)\r\n $activeModule.attr('data-settings', encodeURIComponent(jQuery('#hidModuleSettings').val()));\r\n\r\n //Render (programmatically)\r\n $activeModule.html(jQuery('#hidModuleCode').val());\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n jQuery('.box-active').removeClass('box-active');\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n this.editBox = function () {\r\n\r\n jQuery('body, html').animate({\r\n scrollTop: $activeBox.offset().top\r\n }, 1000);\r\n\r\n //Show/Hide Tabs\r\n if ($activeBox.find(\".is-overlay-bg\").length == 0) {\r\n jQuery(\"#tabBoxImage\").css(\"display\", \"none\");\r\n jQuery(\"#divBoxPickPhoto\").css(\"display\", \"none\");\r\n\r\n jQuery(\"#tabBoxModule\").css(\"display\", \"none\"); //hide chkBgModule\r\n\r\n } else {\r\n jQuery(\"#tabBoxImage\").css(\"display\", \"inline-block\");\r\n if ($element.data(\"contentbox\").settings.photoselect == '') {\r\n jQuery(\"#divBoxPickPhoto\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#divBoxPickPhoto\").css(\"display\", \"block\");\r\n }\r\n\r\n if (!$element.data(\"contentbox\").settings.enableModule) {\r\n jQuery(\"#tabBoxModule\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#tabBoxModule\").css(\"display\", \"inline-block\");\r\n }\r\n\r\n if ($activeBox.find(\".is-overlay-bg\").children().not('.is-overlay-color').length > 0) { //There is content within background overlay\r\n jQuery(\"#chkAnimateBg\").parents(\".is-settings\").css(\"display\", \"none\");\r\n jQuery(\"#chkParallaxBg\").parents(\".is-settings\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#chkAnimateBg\").parents(\".is-settings\").css(\"display\", \"inline-block\");\r\n jQuery(\"#chkParallaxBg\").parents(\".is-settings\").css(\"display\", \"inline-block\");\r\n }\r\n\r\n }\r\n\r\n if (!$element.data(\"contentbox\").settings.enableAnimation) {\r\n jQuery(\"#tabBoxAnimate\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#tabBoxAnimate\").css(\"display\", \"inline-block\");\r\n }\r\n\r\n if ($activeBox.find(\".is-container\").length == 0) { //no content\r\n jQuery(\"#tabBoxContentText\").css(\"display\", \"none\");\r\n jQuery(\"#tabBoxContentContainer\").css(\"display\", \"none\");\r\n jQuery(\"#divContentSize\").css(\"display\", \"none\");\r\n } else {\r\n\r\n if ($activeBox.find(\".is-container .is-module\").length > 0) {\r\n jQuery(\"#tabBoxContentText\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#tabBoxContentText\").css(\"display\", \"inline-block\");\r\n }\r\n\r\n if ($activeBox.css(\"display\") == \"table\" || $activeBox.css(\"display\") == \"table-cell\" || $activeBox.css(\"display\") == \"flex\") {\r\n jQuery(\"#tabBoxContentContainer\").css(\"display\", \"inline-block\");\r\n jQuery(\"#divContentSize\").css(\"display\", \"inline-block\");\r\n } else {\r\n jQuery(\"#tabBoxContentContainer\").css(\"display\", \"none\");\r\n jQuery(\"#divContentSize\").css(\"display\", \"none\");\r\n }\r\n }\r\n\r\n if ($activeBox.find(\".is-module\").length > 0) { //If is module \r\n jQuery(\"#chkBgModule\").prop(\"checked\", true);\r\n } else {\r\n jQuery(\"#chkBgModule\").prop(\"checked\", false);\r\n }\r\n\r\n if ($activeBox.find(\".is-overlay-content[data-module]\").length != 0) {\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\", \"none\");\r\n jQuery(\"#tabBoxImage\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\", \"block\");\r\n }\r\n\r\n if (jQuery(\"#divBoxBackgroundColor\").css(\"display\") == \"block\") {\r\n if ($activeBox.find(\".is-overlay-bg\").children().not('.is-overlay-color').length > 0) { //There is content within background overlay\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\", \"none\");\r\n }\r\n }\r\n\r\n if ($activeBox.find(\".is-overlay-bg\").length > 0) {\r\n\r\n if ($activeBox.find(\".is-overlay-bg\").hasClass(\"is-scale-animated\")) {\r\n jQuery(\"#chkAnimateBg\").prop(\"checked\", true);\r\n } else {\r\n jQuery(\"#chkAnimateBg\").prop(\"checked\", false);\r\n }\r\n\r\n if ($activeBox.find(\".is-overlay-bg\").attr(\"style\").indexOf(\"scale(1.05)\") != -1) {\r\n jQuery(\"#chkParallaxBg\").prop(\"checked\", true);\r\n } else {\r\n jQuery(\"#chkParallaxBg\").prop(\"checked\", false);\r\n }\r\n }\r\n\r\n if ($activeBox.hasClass(\"is-section\")) {\r\n jQuery(\"#divBoxSize\").css(\"display\", \"none\");\r\n } else {\r\n jQuery(\"#divBoxSize\").css(\"display\", \"block\");\r\n }\r\n\r\n if (jQuery(\"#divBoxSize\").css(\"display\") == \"none\" &&\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\") == \"none\" &&\r\n jQuery(\"#tabBoxContentText\").css(\"display\") == \"none\" &&\r\n jQuery(\"#tabBoxContentContainer\").css(\"display\") == \"none\" &&\r\n jQuery(\"#tabBoxImage\").css(\"display\") == \"none\" &&\r\n jQuery(\"#tabBoxModule\").css(\"display\") == \"none\" &&\r\n jQuery(\"#tabBoxAnimate\").css(\"display\") == \"none\" &&\r\n jQuery(\"#tabBoxCustomHtml\").css(\"display\") == \"none\") {\r\n\r\n jQuery(\"#divNoBoxSettings\").css(\"display\", \"block\"); //Show info: This box has no available settings\r\n } else {\r\n jQuery(\"#divNoBoxSettings\").css(\"display\", \"none\"); //Hide info\r\n }\r\n\r\n //Prepare\r\n\r\n //$activeBox.prepend('
')\r\n $activeBox.addClass('box-active');\r\n\r\n var $modal = jQuery('.is-modal.editbox');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n $element.data(\"contentbox\").hideModal($modal);\r\n //jQuery('.box-active').remove();\r\n jQuery('.box-active').removeClass('box-active');\r\n }\r\n });\r\n\r\n $modal.find('.is-tabs a').off('click');\r\n $modal.find('.is-tabs a').on('click', function () {\r\n\r\n if (jQuery(this).hasClass('active')) return false;\r\n\r\n $modal.find('.is-tabs > a').removeClass('active');\r\n jQuery(this).addClass('active');\r\n\r\n var id = jQuery(this).attr('data-content');\r\n\r\n $modal.find('.is-tab-content ').css('display', 'none');\r\n jQuery('#' + id).css('display', 'block');\r\n\r\n return false;\r\n });\r\n\r\n $modal.find('#tabBoxGeneral').trigger('click');\r\n\r\n //Settings\r\n \r\n jQuery(\".inp-box-size\").val(parseInt($activeBox.find(\".is-container\").css(\"max-width\")));\r\n\r\n jQuery('#inpBoxBgColor').val($activeBox.get(0).style.backgroundColor);\r\n\r\n jQuery(\".cmd-box-smaller\").unbind(\"click\");\r\n jQuery(\".cmd-box-smaller\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxWidthSmaller(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-box-larger\").unbind(\"click\");\r\n jQuery(\".cmd-box-larger\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxWidthLarger(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n\r\n jQuery(\".cmd-box-bgcolor\").unbind(\"click\");\r\n jQuery(\".cmd-box-bgcolor\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxBgColor(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-box-textcolor\").unbind(\"click\");\r\n jQuery(\".cmd-box-textcolor\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxTextColor(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-box-textalign\").unbind(\"click\");\r\n jQuery(\".cmd-box-textalign\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxTextAlign(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-box-textopacity\").unbind(\"click\");\r\n jQuery(\".cmd-box-textopacity\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxTextOpacity(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n jQuery(\".cmd-box-typography\").unbind(\"click\");\r\n jQuery(\".cmd-box-typography\").on('click', function (e) {\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n //Open divSidebarTypography\r\n jQuery('.is-sidebar > div[data-command=typography]').click();\r\n jQuery('.is-sidebar > div[data-command=typography]').attr('data-applyto', 'box');\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-box-size\").unbind(\"click\");\r\n jQuery(\".cmd-box-size\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n //$element.data(\"contentbox\").boxWidth(jQuery(this).data(\"value\"));\r\n\r\n //backward\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-380\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-500\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-640\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-800\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-970\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-980\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1050\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1100\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1200\");\r\n\r\n var val = jQuery(this).data(\"value\");\r\n if (val == '-') {\r\n var val = parseInt($activeBox.find(\".is-container\").css(\"max-width\")) - 20;\r\n } else if (val == '+') {\r\n var val = parseInt($activeBox.find(\".is-container\").css(\"max-width\")) + 20;\r\n }\r\n if(val<=250) val=250;\r\n $activeBox.find(\".is-container\").css(\"max-width\", val + \"px\");\r\n\r\n jQuery(\".inp-box-size\").val(val);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".inp-box-size\").unbind(\"keyup\");\r\n jQuery(\".inp-box-size\").on(\"keyup\", function (e) {\r\n\r\n //backward\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-380\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-500\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-640\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-800\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-970\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-980\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1050\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1100\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1200\");\r\n \r\n var val = jQuery(\".inp-box-size\").val();\r\n if(!isNaN(val) && val>=250) {\r\n $activeBox.find(\".is-container\").css(\"max-width\", val + \"px\");\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-box-content-pos\").unbind(\"click\");\r\n jQuery(\".cmd-box-content-pos\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $activeBox.find(\".edge-y--5\").removeClass(\"edge-y--5\");\r\n $activeBox.find(\".edge-y--4\").removeClass(\"edge-y--4\");\r\n $activeBox.find(\".edge-y--3\").removeClass(\"edge-y--3\");\r\n $activeBox.find(\".edge-y--2\").removeClass(\"edge-y--2\");\r\n $activeBox.find(\".edge-y--1\").removeClass(\"edge-y--1\");\r\n $activeBox.find(\".edge-y-0\").removeClass(\"edge-y-0\");\r\n $activeBox.find(\".edge-y-1\").removeClass(\"edge-y-1\");\r\n $activeBox.find(\".edge-y-2\").removeClass(\"edge-y-2\");\r\n $activeBox.find(\".edge-y-3\").removeClass(\"edge-y-3\");\r\n $activeBox.find(\".edge-y-4\").removeClass(\"edge-y-4\");\r\n $activeBox.find(\".edge-y-5\").removeClass(\"edge-y-5\");\r\n \r\n $activeBox.find(\".edge-x-0\").removeClass(\"edge-x-0\");\r\n $activeBox.find(\".edge-x-1\").removeClass(\"edge-x-1\");\r\n $activeBox.find(\".edge-x-2\").removeClass(\"edge-x-2\");\r\n $activeBox.find(\".edge-x-3\").removeClass(\"edge-x-3\");\r\n $activeBox.find(\".edge-x-4\").removeClass(\"edge-x-4\");\r\n $activeBox.find(\".edge-x-5\").removeClass(\"edge-x-5\");\r\n\r\n $activeBox.find(\".is-box-centered\").removeClass(\"is-content-top\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"is-content-bottom\");\r\n $activeBox.removeClass(\"is-content-top\"); //simplified\r\n $activeBox.removeClass(\"is-content-bottom\"); //simplified\r\n\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-left\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-right\");\r\n\r\n var s = jQuery(this).data(\"value\");\r\n if (s == \"topleft\") {\r\n $activeBox.find(\".is-box-centered\").addClass(\"is-content-top\");\r\n $activeBox.addClass(\"is-content-top\"); //simplified\r\n\r\n $activeBox.find(\".is-container\").addClass(\"is-content-left\");\r\n }\r\n if (s == \"topcenter\") {\r\n $activeBox.find(\".is-box-centered\").addClass(\"is-content-top\");\r\n $activeBox.addClass(\"is-content-top\"); //simplified\r\n\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-left\");\r\n }\r\n if (s == \"topright\") {\r\n $activeBox.find(\".is-box-centered\").addClass(\"is-content-top\");\r\n $activeBox.addClass(\"is-content-top\"); //simplified\r\n\r\n $activeBox.find(\".is-container\").addClass(\"is-content-right\");\r\n }\r\n if (s == \"middleleft\") {\r\n $activeBox.find(\".is-container\").addClass(\"is-content-left\");\r\n }\r\n if (s == \"middlecenter\") {\r\n\r\n }\r\n if (s == \"middleright\") {\r\n $activeBox.find(\".is-container\").addClass(\"is-content-right\");\r\n }\r\n if (s == \"bottomleft\") {\r\n $activeBox.find(\".is-box-centered\").addClass(\"is-content-bottom\");\r\n $activeBox.addClass(\"is-content-bottom\"); //simplified\r\n\r\n $activeBox.find(\".is-container\").addClass(\"is-content-left\");\r\n }\r\n if (s == \"bottomcenter\") {\r\n $activeBox.find(\".is-box-centered\").addClass(\"is-content-bottom\");\r\n $activeBox.addClass(\"is-content-bottom\"); //simplified\r\n }\r\n if (s == \"bottomright\") {\r\n $activeBox.find(\".is-box-centered\").addClass(\"is-content-bottom\");\r\n $activeBox.addClass(\"is-content-bottom\"); //simplified\r\n\r\n $activeBox.find(\".is-container\").addClass(\"is-content-right\");\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-box-content-edge-x\").unbind(\"click\");\r\n jQuery(\".cmd-box-content-edge-x\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n var s = jQuery(this).data(\"value\");\r\n if (s == \"-\") {\r\n if ($activeBox.find(\".is-container\").hasClass(\"edge-x-0\")) { return false; ; }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-1\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-1\"); $activeBox.find(\".is-container\").addClass(\"edge-x-0\"); }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-2\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-2\"); $activeBox.find(\".is-container\").addClass(\"edge-x-1\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-3\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-3\"); $activeBox.find(\".is-container\").addClass(\"edge-x-2\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-4\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-4\"); $activeBox.find(\".is-container\").addClass(\"edge-x-3\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-5\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-5\"); $activeBox.find(\".is-container\").addClass(\"edge-x-4\") }\r\n else { $activeBox.find(\".is-container\").addClass(\"edge-x-0\"); }\r\n }\r\n if (s == \"+\") {\r\n if ($activeBox.find(\".is-container\").hasClass(\"edge-x-0\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-0\"); $activeBox.find(\".is-container\").addClass(\"edge-x-1\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-1\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-1\"); $activeBox.find(\".is-container\").addClass(\"edge-x-2\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-2\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-2\"); $activeBox.find(\".is-container\").addClass(\"edge-x-3\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-3\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-3\"); $activeBox.find(\".is-container\").addClass(\"edge-x-4\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-4\")) { $activeBox.find(\".is-container\").removeClass(\"edge-x-4\"); $activeBox.find(\".is-container\").addClass(\"edge-x-5\") }\r\n else if ($activeBox.find(\".is-container\").hasClass(\"edge-x-5\")) { return false; }\r\n else { $activeBox.find(\".is-container\").addClass(\"edge-x-0\") }\r\n }\r\n if (s == \"\") {\r\n $activeBox.find(\".is-container\").removeClass(\"edge-x-0\");\r\n $activeBox.find(\".is-container\").removeClass(\"edge-x-1\");\r\n $activeBox.find(\".is-container\").removeClass(\"edge-x-2\");\r\n $activeBox.find(\".is-container\").removeClass(\"edge-x-3\");\r\n $activeBox.find(\".is-container\").removeClass(\"edge-x-4\");\r\n $activeBox.find(\".is-container\").removeClass(\"edge-x-5\");\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n\r\n });\r\n\r\n jQuery(\".cmd-box-content-edge-y\").unbind(\"click\");\r\n jQuery(\".cmd-box-content-edge-y\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n var s = jQuery(this).data(\"value\");\r\n if (s == \"-\") {\r\n if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--5\")) { return false; }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--4\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--4\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--5\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--3\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--3\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--4\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--2\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--2\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--3\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--1\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--1\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--2\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-0\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-0\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--1\"); }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-1\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-1\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-0\"); }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-2\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-2\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-1\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-3\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-3\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-2\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-4\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-4\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-3\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-5\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-5\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-4\") }\r\n else { $activeBox.find(\".is-box-centered\").addClass(\"edge-y-0\"); }\r\n }\r\n if (s == \"+\") {\r\n if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--5\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--5\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--4\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--4\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--4\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--3\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--3\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--3\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--2\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--2\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--2\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y--1\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y--1\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--1\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-0\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-0\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-0\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-1\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-1\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-1\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-2\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-2\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-2\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-3\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-3\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-3\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-4\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-4\")) { $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-4\"); $activeBox.find(\".is-box-centered\").addClass(\"edge-y-5\") }\r\n else if ($activeBox.find(\".is-box-centered\").hasClass(\"edge-y-5\")) { return false; }\r\n else { $activeBox.find(\".is-box-centered\").addClass(\"edge-y-0\") }\r\n }\r\n if (s == \"\") {\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--5\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--4\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--3\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--2\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y--1\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-0\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-1\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-2\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-3\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-4\");\r\n $activeBox.find(\".is-box-centered\").removeClass(\"edge-y-5\");\r\n }\r\n\r\n //simplified\r\n if (s == \"-\") {\r\n if ($activeBox.hasClass(\"edge-y--5\")) { return false; }\r\n else if ($activeBox.hasClass(\"edge-y--4\")) { $activeBox.removeClass(\"edge-y--4\"); $activeBox.addClass(\"edge-y--5\") }\r\n else if ($activeBox.hasClass(\"edge-y--3\")) { $activeBox.removeClass(\"edge-y--3\"); $activeBox.addClass(\"edge-y--4\") }\r\n else if ($activeBox.hasClass(\"edge-y--2\")) { $activeBox.removeClass(\"edge-y--2\"); $activeBox.addClass(\"edge-y--3\") }\r\n else if ($activeBox.hasClass(\"edge-y--1\")) { $activeBox.removeClass(\"edge-y--1\"); $activeBox.addClass(\"edge-y--2\") }\r\n else if ($activeBox.hasClass(\"edge-y-0\")) { $activeBox.removeClass(\"edge-y-0\"); $activeBox.addClass(\"edge-y--1\"); }\r\n else if ($activeBox.hasClass(\"edge-y-1\")) { $activeBox.removeClass(\"edge-y-1\"); $activeBox.addClass(\"edge-y-0\"); }\r\n else if ($activeBox.hasClass(\"edge-y-2\")) { $activeBox.removeClass(\"edge-y-2\"); $activeBox.addClass(\"edge-y-1\") }\r\n else if ($activeBox.hasClass(\"edge-y-3\")) { $activeBox.removeClass(\"edge-y-3\"); $activeBox.addClass(\"edge-y-2\") }\r\n else if ($activeBox.hasClass(\"edge-y-4\")) { $activeBox.removeClass(\"edge-y-4\"); $activeBox.addClass(\"edge-y-3\") }\r\n else if ($activeBox.hasClass(\"edge-y-5\")) { $activeBox.removeClass(\"edge-y-5\"); $activeBox.addClass(\"edge-y-4\") }\r\n else { $activeBox.addClass(\"edge-y-0\"); }\r\n }\r\n if (s == \"+\") {\r\n if ($activeBox.hasClass(\"edge-y--5\")) { $activeBox.removeClass(\"edge-y--5\"); $activeBox.addClass(\"edge-y--4\") }\r\n else if ($activeBox.hasClass(\"edge-y--4\")) { $activeBox.removeClass(\"edge-y--4\"); $activeBox.addClass(\"edge-y--3\") }\r\n else if ($activeBox.hasClass(\"edge-y--3\")) { $activeBox.removeClass(\"edge-y--3\"); $activeBox.addClass(\"edge-y--2\") }\r\n else if ($activeBox.hasClass(\"edge-y--2\")) { $activeBox.removeClass(\"edge-y--2\"); $activeBox.addClass(\"edge-y--1\") }\r\n else if ($activeBox.hasClass(\"edge-y--1\")) { $activeBox.removeClass(\"edge-y--1\"); $activeBox.addClass(\"edge-y-0\") }\r\n else if ($activeBox.hasClass(\"edge-y-0\")) { $activeBox.removeClass(\"edge-y-0\"); $activeBox.addClass(\"edge-y-1\") }\r\n else if ($activeBox.hasClass(\"edge-y-1\")) { $activeBox.removeClass(\"edge-y-1\"); $activeBox.addClass(\"edge-y-2\") }\r\n else if ($activeBox.hasClass(\"edge-y-2\")) { $activeBox.removeClass(\"edge-y-2\"); $activeBox.addClass(\"edge-y-3\") }\r\n else if ($activeBox.hasClass(\"edge-y-3\")) { $activeBox.removeClass(\"edge-y-3\"); $activeBox.addClass(\"edge-y-4\") }\r\n else if ($activeBox.hasClass(\"edge-y-4\")) { $activeBox.removeClass(\"edge-y-4\"); $activeBox.addClass(\"edge-y-5\") }\r\n else if ($activeBox.hasClass(\"edge-y-5\")) { return false; }\r\n else { $activeBox.addClass(\"edge-y-0\") }\r\n }\r\n if (s == \"\") {\r\n $activeBox.removeClass(\"edge-y--5\");\r\n $activeBox.removeClass(\"edge-y--4\");\r\n $activeBox.removeClass(\"edge-y--3\");\r\n $activeBox.removeClass(\"edge-y--2\");\r\n $activeBox.removeClass(\"edge-y--1\");\r\n $activeBox.removeClass(\"edge-y-0\");\r\n $activeBox.removeClass(\"edge-y-1\");\r\n $activeBox.removeClass(\"edge-y-2\");\r\n $activeBox.removeClass(\"edge-y-3\");\r\n $activeBox.removeClass(\"edge-y-4\");\r\n $activeBox.removeClass(\"edge-y-5\");\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n var photoselect = $element.data(\"contentbox\").settings.photoselect;\r\n\r\n jQuery(\".cmd-box-pickphoto\").unbind(\"click\");\r\n jQuery(\".cmd-box-pickphoto\").on('click', function (e) {\r\n\r\n var $modal = jQuery('.is-modal.pickphoto');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n $element.data(\"contentbox\").hideModal($modal);\r\n }\r\n });\r\n\r\n $modal.find('iframe').attr('src', $element.data('contentbox').settings.photoselect); //load module panel on iframe\r\n\r\n return false;\r\n });\r\n\r\n //Background Color\r\n jQuery(\".cmd-box-pickbgcolor\").unbind(\"click\");\r\n jQuery(\".cmd-box-pickbgcolor\").on('click', function (e) {\r\n \r\n _fb.saveForUndo(true); // checkLater = true\r\n \r\n colorpicker.open(function(s){\r\n\r\n $activeBox.css(\"background-image\", \"\");\r\n \r\n jQuery('#inpBoxBgColor').val(s);\r\n \r\n if ($activeBox.find(\".is-overlay\").length > 0) {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if ($overlay.find(\".is-overlay-bg\").length > 0) {\r\n $overlay.data(\"bg-url\", $overlay.find(\".is-overlay-bg\").css(\"background-image\")); //Save bg image so that it can be restored using \"Default\" button.\r\n $overlay.find(\".is-overlay-bg\").remove(); //Remove bg image\r\n $overlay.find(\".is-overlay-color\").remove(); //Remove overlay color\r\n }\r\n }\r\n \r\n $activeBox.removeClass(\"is-bg-light\");\r\n $activeBox.removeClass(\"is-bg-grey\");\r\n $activeBox.removeClass(\"is-bg-dark\");\r\n \r\n $activeBox.css(\"background-color\", s);\r\n \r\n }, jQuery('#inpBoxBgColor').val());\r\n\r\n });\r\n\r\n //Background Gradient\r\n jQuery(\".cmd-box-gradient\").unbind(\"click\");\r\n jQuery(\".cmd-box-gradient\").on('click', function (e) {\r\n \r\n _fb.saveForUndo(true); // checkLater = true\r\n\r\n var gradientPicker = _fb.gradientpicker();\r\n gradientPicker.open($activeBox.get(0), function(gradient, textcolor) {\r\n\r\n if(gradient!='') {\r\n\r\n if ($activeBox.find(\".is-overlay\").length > 0) {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if ($overlay.find(\".is-overlay-bg\").length > 0) {\r\n $overlay.data(\"bg-url\", $overlay.find(\".is-overlay-bg\").css(\"background-image\")); //Save bg image so that it can be restored using \"Default\" button.\r\n $overlay.find(\".is-overlay-bg\").remove(); //Remove bg image\r\n $overlay.find(\".is-overlay-color\").remove(); //Remove overlay color\r\n }\r\n }\r\n \r\n $activeBox.css(\"background-color\", '');\r\n\r\n if (textcolor) $element.data(\"contentbox\").boxTextColor(textcolor);\r\n\r\n } else {\r\n\r\n //return to bg image (if any)\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if ($activeBox.find(\".is-overlay-content .is-module\").length == 0) {//If not is module\r\n if ($overlay.data(\"bg-url\")) {\r\n $overlay.find(\".is-overlay-bg\").remove(); //cleanup from old version (there can be is-overlay-bg with display:none)\r\n $overlay.find(\".is-overlay-color\").remove(); //cleanup from old version (there can be is-overlay-color with display:none)\r\n //$overlay.prepend('
');\r\n //$overlay.prepend('
');\r\n $overlay.prepend('
');\r\n $overlay.find(\".is-overlay-bg\").prepend('
');\r\n $overlay.find(\".is-overlay-bg\").css(\"background-image\", $overlay.data(\"bg-url\"));\r\n //$overlay.removeAttr(\"data-bg-url\");\r\n $overlay.removeData(\"bg-url\");\r\n }\r\n }\r\n\r\n $activeBox.css(\"background-image\", \"\");\r\n\r\n $element.data(\"contentbox\").boxTextColor('');\r\n\r\n }\r\n\r\n }, function(isChanged){\r\n \r\n });\r\n\r\n });\r\n //End Background Gradient\r\n\r\n jQuery(\".cmd-box-pickoverlaycolor\").unbind(\"click\");\r\n jQuery(\".cmd-box-pickoverlaycolor\").on('click', function (e) {\r\n \r\n _fb.saveForUndo(true); // checkLater = true\r\n \r\n colorpicker.open(function(s){\r\n\r\n $element.data(\"contentbox\").boxOverlayColor(s);\r\n \r\n }, '');\r\n\r\n });\r\n\r\n jQuery(\"#chkBgModule\").unbind(\"click\");\r\n jQuery(\"#chkBgModule\").on('click', function (e) {\r\n $element.data(\"contentbox\").boxModule();\r\n });\r\n\r\n jQuery(\".cmd-box-textcolor\").unbind(\"click\");\r\n jQuery(\".cmd-box-textcolor\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxTextColor(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-bg-img-x\").unbind(\"click\");\r\n jQuery(\".cmd-bg-img-x\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n var s = jQuery(this).data(\"value\");\r\n var bgpos = $activeBox.find(\".is-overlay-bg\").css(\"background-position\").split(\" \");\r\n if (s == \"-\") {\r\n var bgposx = bgpos[0].replace(\"%\", \"\") * 1;\r\n if (bgposx > 0) {\r\n bgposx = bgposx - 10;\r\n }\r\n }\r\n if (s == \"+\") {\r\n var bgposx = bgpos[0].replace(\"%\", \"\") * 1;\r\n if (bgposx < 100) {\r\n bgposx = bgposx + 10;\r\n }\r\n }\r\n if (s == \"\") {\r\n var bgposx = 50;\r\n }\r\n var bgposy = bgpos[1].replace(\"%\", \"\") * 1;\r\n\r\n $activeBox.find(\".is-overlay-bg\").css(\"background-position\", bgposx + \"%\" + \" \" + bgposy + \"%\");\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-bg-img-y\").unbind(\"click\");\r\n jQuery(\".cmd-bg-img-y\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n var s = jQuery(this).data(\"value\");\r\n var bgpos = $activeBox.find(\".is-overlay-bg\").css(\"background-position\").split(\" \");\r\n if (s == \"-\") {\r\n var bgposy = bgpos[1].replace(\"%\", \"\") * 1;\r\n if (bgposy > 0) {\r\n bgposy = bgposy - 10;\r\n }\r\n }\r\n if (s == \"+\") {\r\n var bgposy = bgpos[1].replace(\"%\", \"\") * 1;\r\n if (bgposy < 100) {\r\n bgposy = bgposy + 10;\r\n }\r\n }\r\n if (s == \"\") {\r\n var bgposy = 60;\r\n }\r\n var bgposx = bgpos[0].replace(\"%\", \"\") * 1;\r\n\r\n $activeBox.find(\".is-overlay-bg\").css(\"background-position\", bgposx + \"%\" + \" \" + bgposy + \"%\");\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n\r\n jQuery(\"#chkAnimateBg\").unbind(\"click\");\r\n jQuery(\"#chkAnimateBg\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxAnimateBg();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n });\r\n\r\n jQuery(\"#chkParallaxBg\").unbind(\"click\");\r\n jQuery(\"#chkParallaxBg\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxParallaxBg();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n });\r\n\r\n jQuery(\".cmd-box-overlaycolor\").unbind(\"click\");\r\n jQuery(\".cmd-box-overlaycolor\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxOverlayColor(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n jQuery(\".cmd-box-overlayopacity\").unbind(\"click\");\r\n jQuery(\".cmd-box-overlayopacity\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $element.data(\"contentbox\").boxOverlayOpacity(jQuery(this).data(\"value\"));\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n //added by jack\r\n jQuery(\".cmd-box-selectasset\").unbind(\"click\");\r\n jQuery(\".cmd-box-selectasset\").on('click', function (e) {\r\n $element.data(\"contentbox\").boxSelectAsset();\r\n return false;\r\n });\r\n //end of added by jack\r\n\r\n /* Animate Box */\r\n jQuery('.cmd-box-animate').val('');\r\n if ($activeBox.hasClass('is-pulse')) jQuery('.cmd-box-animate').val('is-pulse');\r\n if ($activeBox.hasClass('is-bounceIn')) jQuery('.cmd-box-animate').val('is-bounceIn');\r\n if ($activeBox.hasClass('is-fadeIn')) jQuery('.cmd-box-animate').val('is-fadeIn');\r\n if ($activeBox.hasClass('is-fadeInDown')) jQuery('.cmd-box-animate').val('is-fadeInDown');\r\n if ($activeBox.hasClass('is-fadeInLeft')) jQuery('.cmd-box-animate').val('is-fadeInLeft');\r\n if ($activeBox.hasClass('is-fadeInRight')) jQuery('.cmd-box-animate').val('is-fadeInRight');\r\n if ($activeBox.hasClass('is-fadeInUp')) jQuery('.cmd-box-animate').val('is-fadeInUp');\r\n if ($activeBox.hasClass('is-flipInX')) jQuery('.cmd-box-animate').val('is-flipInX');\r\n if ($activeBox.hasClass('is-flipInY')) jQuery('.cmd-box-animate').val('is-flipInY');\r\n if ($activeBox.hasClass('is-slideInUp')) jQuery('.cmd-box-animate').val('is-slideInUp');\r\n if ($activeBox.hasClass('is-slideInDown')) jQuery('.cmd-box-animate').val('is-slideInDown');\r\n if ($activeBox.hasClass('is-slideInLeft')) jQuery('.cmd-box-animate').val('is-slideInLeft');\r\n if ($activeBox.hasClass('is-slideInRight')) jQuery('.cmd-box-animate').val('is-slideInRight');\r\n if ($activeBox.hasClass('is-zoomIn')) jQuery('.cmd-box-animate').val('is-zoomIn');\r\n\r\n jQuery('.cmd-box-animate').unbind('change');\r\n jQuery('.cmd-box-animate').change(function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $activeBox.removeClass('is-animated');\r\n $activeBox.removeClass('is-pulse');\r\n $activeBox.removeClass('is-bounceIn');\r\n $activeBox.removeClass('is-fadeIn');\r\n $activeBox.removeClass('is-fadeInDown');\r\n $activeBox.removeClass('is-fadeInLeft');\r\n $activeBox.removeClass('is-fadeInRight');\r\n $activeBox.removeClass('is-fadeInUp');\r\n $activeBox.removeClass('is-flipInX');\r\n $activeBox.removeClass('is-flipInY');\r\n $activeBox.removeClass('is-slideInUp');\r\n $activeBox.removeClass('is-slideInDown');\r\n $activeBox.removeClass('is-slideInLeft');\r\n $activeBox.removeClass('is-slideInRight');\r\n $activeBox.removeClass('is-zoomIn');\r\n\r\n $activeBox.removeClass('animated');\r\n $activeBox.removeClass('pulse');\r\n $activeBox.removeClass('bounceIn');\r\n $activeBox.removeClass('fadeIn');\r\n $activeBox.removeClass('fadeInDown');\r\n $activeBox.removeClass('fadeInLeft');\r\n $activeBox.removeClass('fadeInRight');\r\n $activeBox.removeClass('fadeInUp');\r\n $activeBox.removeClass('flipInX');\r\n $activeBox.removeClass('flipInY');\r\n $activeBox.removeClass('slideInUp');\r\n $activeBox.removeClass('slideInDown');\r\n $activeBox.removeClass('slideInLeft');\r\n $activeBox.removeClass('slideInRight');\r\n $activeBox.removeClass('zoomIn');\r\n\r\n if (jQuery(this).val() != '') {\r\n $activeBox.addClass('is-animated');\r\n $activeBox.addClass(jQuery(this).val());\r\n\r\n $activeBox.addClass('animated');\r\n $activeBox.addClass(jQuery(this).val().substr(3));\r\n\r\n $activeBox.removeClass('box-active'); //need this to make animation work\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n });\r\n\r\n jQuery('.cmd-box-animate-test').off('click');\r\n jQuery('.cmd-box-animate-test').on('click', function (e) {\r\n\r\n $activeBox.removeClass('animated');\r\n $activeBox.removeClass('pulse');\r\n $activeBox.removeClass('bounceIn');\r\n $activeBox.removeClass('fadeIn');\r\n $activeBox.removeClass('fadeInDown');\r\n $activeBox.removeClass('fadeInLeft');\r\n $activeBox.removeClass('fadeInRight');\r\n $activeBox.removeClass('fadeInUp');\r\n $activeBox.removeClass('flipInX');\r\n $activeBox.removeClass('flipInY');\r\n $activeBox.removeClass('slideInUp');\r\n $activeBox.removeClass('slideInDown');\r\n $activeBox.removeClass('slideInLeft');\r\n $activeBox.removeClass('slideInRight');\r\n $activeBox.removeClass('zoomIn');\r\n\r\n setTimeout(function () {\r\n $activeBox.addClass('animated');\r\n $activeBox.addClass(jQuery('.cmd-box-animate').val().substr(3));\r\n\r\n $activeBox.removeClass('box-active'); //need this to make animation work\r\n }, 50);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n });\r\n\r\n if ($activeBox.hasClass('once')) {\r\n jQuery('#chkAnimOnce').prop(\"checked\", true);\r\n } else {\r\n jQuery('#chkAnimOnce').prop(\"checked\", false);\r\n }\r\n jQuery('#chkAnimOnce').off('click');\r\n jQuery('#chkAnimOnce').on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $activeBox.data('animated', '');\r\n if (jQuery(\"#chkAnimOnce\").prop(\"checked\")) {\r\n $activeBox.addClass('once');\r\n } else {\r\n $activeBox.removeClass('once');\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n });\r\n\r\n if ($activeBox.hasClass('delay-0ms')) jQuery('.cmd-box-animatedelay').val('delay-0ms');\r\n if ($activeBox.hasClass('delay-100ms')) jQuery('.cmd-box-animatedelay').val('delay-100ms');\r\n if ($activeBox.hasClass('delay-200ms')) jQuery('.cmd-box-animatedelay').val('delay-20ms');\r\n if ($activeBox.hasClass('delay-300ms')) jQuery('.cmd-box-animatedelay').val('delay-300ms');\r\n if ($activeBox.hasClass('delay-400ms')) jQuery('.cmd-box-animatedelay').val('delay-400ms');\r\n if ($activeBox.hasClass('delay-500ms')) jQuery('.cmd-box-animatedelay').val('delay-500ms');\r\n if ($activeBox.hasClass('delay-600ms')) jQuery('.cmd-box-animatedelay').val('delay-600ms');\r\n if ($activeBox.hasClass('delay-700ms')) jQuery('.cmd-box-animatedelay').val('delay-700ms');\r\n if ($activeBox.hasClass('delay-800ms')) jQuery('.cmd-box-animatedelay').val('delay-800ms');\r\n if ($activeBox.hasClass('delay-900ms')) jQuery('.cmd-box-animatedelay').val('delay-900ms');\r\n if ($activeBox.hasClass('delay-1000ms')) jQuery('.cmd-box-animatedelay').val('delay-1000ms');\r\n if ($activeBox.hasClass('delay-1100ms')) jQuery('.cmd-box-animatedelay').val('delay-1100ms');\r\n if ($activeBox.hasClass('delay-1200ms')) jQuery('.cmd-box-animatedelay').val('delay-1200ms');\r\n if ($activeBox.hasClass('delay-1300ms')) jQuery('.cmd-box-animatedelay').val('delay-1300ms');\r\n if ($activeBox.hasClass('delay-1400ms')) jQuery('.cmd-box-animatedelay').val('delay-1400ms');\r\n if ($activeBox.hasClass('delay-1500ms')) jQuery('.cmd-box-animatedelay').val('delay-1500ms');\r\n if ($activeBox.hasClass('delay-1600ms')) jQuery('.cmd-box-animatedelay').val('delay-1600ms');\r\n if ($activeBox.hasClass('delay-1700ms')) jQuery('.cmd-box-animatedelay').val('delay-1700ms');\r\n if ($activeBox.hasClass('delay-1800ms')) jQuery('.cmd-box-animatedelay').val('delay-1800ms');\r\n if ($activeBox.hasClass('delay-1900ms')) jQuery('.cmd-box-animatedelay').val('delay-1900ms');\r\n if ($activeBox.hasClass('delay-2000ms')) jQuery('.cmd-box-animatedelay').val('delay-2000ms');\r\n if ($activeBox.hasClass('delay-2100ms')) jQuery('.cmd-box-animatedelay').val('delay-2100ms');\r\n if ($activeBox.hasClass('delay-2200ms')) jQuery('.cmd-box-animatedelay').val('delay-2200ms');\r\n if ($activeBox.hasClass('delay-2300ms')) jQuery('.cmd-box-animatedelay').val('delay-2300ms');\r\n if ($activeBox.hasClass('delay-2400ms')) jQuery('.cmd-box-animatedelay').val('delay-2400ms');\r\n if ($activeBox.hasClass('delay-2500ms')) jQuery('.cmd-box-animatedelay').val('delay-2500ms');\r\n if ($activeBox.hasClass('delay-2600ms')) jQuery('.cmd-box-animatedelay').val('delay-2600ms');\r\n if ($activeBox.hasClass('delay-2700ms')) jQuery('.cmd-box-animatedelay').val('delay-2700ms');\r\n if ($activeBox.hasClass('delay-2800ms')) jQuery('.cmd-box-animatedelay').val('delay-2800ms');\r\n if ($activeBox.hasClass('delay-2900ms')) jQuery('.cmd-box-animatedelay').val('delay-2900ms');\r\n if ($activeBox.hasClass('delay-3000ms')) jQuery('.cmd-box-animatedelay').val('delay-3000ms');\r\n \r\n jQuery('.cmd-box-animatedelay').unbind('change');\r\n jQuery('.cmd-box-animatedelay').change(function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $activeBox.removeClass('delay-0ms');\r\n $activeBox.removeClass('delay-100ms');\r\n $activeBox.removeClass('delay-200ms');\r\n $activeBox.removeClass('delay-300ms');\r\n $activeBox.removeClass('delay-400ms');\r\n $activeBox.removeClass('delay-500ms');\r\n $activeBox.removeClass('delay-600ms');\r\n $activeBox.removeClass('delay-700ms');\r\n $activeBox.removeClass('delay-800ms');\r\n $activeBox.removeClass('delay-900ms');\r\n $activeBox.removeClass('delay-1000ms');\r\n $activeBox.removeClass('delay-1100ms');\r\n $activeBox.removeClass('delay-1200ms');\r\n $activeBox.removeClass('delay-1300ms');\r\n $activeBox.removeClass('delay-1400ms');\r\n $activeBox.removeClass('delay-1500ms');\r\n $activeBox.removeClass('delay-1600ms');\r\n $activeBox.removeClass('delay-1700ms');\r\n $activeBox.removeClass('delay-1800ms');\r\n $activeBox.removeClass('delay-1900ms');\r\n $activeBox.removeClass('delay-2000ms');\r\n $activeBox.removeClass('delay-2100ms');\r\n $activeBox.removeClass('delay-2200ms');\r\n $activeBox.removeClass('delay-2300ms');\r\n $activeBox.removeClass('delay-2400ms');\r\n $activeBox.removeClass('delay-2500ms');\r\n $activeBox.removeClass('delay-2600ms');\r\n $activeBox.removeClass('delay-2700ms');\r\n $activeBox.removeClass('delay-2800ms');\r\n $activeBox.removeClass('delay-2900ms');\r\n $activeBox.removeClass('delay-3000ms');\r\n\r\n if (jQuery(this).val() != '') {\r\n $activeBox.addClass(jQuery(this).val());\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n });\r\n\r\n /* /Animate Box */\r\n\r\n\r\n jQuery(\"#inpBoxHtml\").val(jQuery.trim($activeBox.html()));\r\n jQuery(\".cmd-box-html\").unbind(\"click\");\r\n jQuery(\".cmd-box-html\").on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n $activeBox.html(jQuery(\"#inpBoxHtml\").val());\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n };\r\n\r\n this.boxWidth = function (n) {\r\n $activeBox.find(\".is-container\").css(\"max-width\", \"\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-380\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-500\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-640\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-800\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-970\"); //backward\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-980\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1050\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1100\");\r\n $activeBox.find(\".is-container\").removeClass(\"is-content-1200\");\r\n\r\n if (n != 0) {\r\n $activeBox.find(\".is-container\").addClass(\"is-content-\" + n);\r\n }\r\n return false;\r\n };\r\n\r\n this.boxBgColor = function (s) {\r\n\r\n $activeBox.css(\"background-color\", \"\");\r\n $activeBox.css(\"background-image\", \"\");\r\n\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n\r\n if (s == \"\") {\r\n //Default button (no color, show bg image)\r\n\r\n if ($activeBox.find(\".is-overlay-content .is-module\").length == 0) {//If not is module\r\n if ($overlay.data(\"bg-url\")) {\r\n $overlay.find(\".is-overlay-bg\").remove(); //cleanup from old version (there can be is-overlay-bg with display:none)\r\n $overlay.find(\".is-overlay-color\").remove(); //cleanup from old version (there can be is-overlay-color with display:none)\r\n //$overlay.prepend('
');\r\n //$overlay.prepend('
');\r\n $overlay.prepend('
');\r\n $overlay.find(\".is-overlay-bg\").prepend('
');\r\n $overlay.find(\".is-overlay-bg\").css(\"background-image\", $overlay.data(\"bg-url\"));\r\n //$overlay.removeAttr(\"data-bg-url\");\r\n $overlay.removeData(\"bg-url\");\r\n }\r\n }\r\n\r\n $activeBox.removeClass(\"is-bg-light\");\r\n $activeBox.removeClass(\"is-bg-grey\");\r\n $activeBox.removeClass(\"is-bg-dark\");\r\n\r\n $element.data(\"contentbox\").boxTextColor(\"\");\r\n } else {\r\n //Apply bg color \r\n\r\n $overlay.data(\"bg-url\", $overlay.find(\".is-overlay-bg\").css(\"background-image\")); //Save bg image so that it can be restored using \"Default\" button.\r\n $overlay.find(\".is-overlay-bg\").remove(); //Remove bg image\r\n $overlay.find(\".is-overlay-color\").remove(); //Remove overlay color\r\n\r\n if (s == \"grey\") {\r\n $activeBox.removeClass(\"is-bg-dark\");\r\n $activeBox.removeClass(\"is-bg-light\");\r\n $activeBox.addClass(\"is-bg-grey\");\r\n\r\n $element.data(\"contentbox\").boxTextColor(\"dark\");\r\n }\r\n if (s == \"dark\") {\r\n $activeBox.removeClass(\"is-bg-grey\");\r\n $activeBox.removeClass(\"is-bg-light\");\r\n $activeBox.addClass(\"is-bg-dark\");\r\n\r\n $element.data(\"contentbox\").boxTextColor(\"light\");\r\n }\r\n if (s == \"light\") {\r\n $activeBox.removeClass(\"is-bg-grey\");\r\n $activeBox.removeClass(\"is-bg-dark\");\r\n $activeBox.addClass(\"is-bg-light\");\r\n\r\n $element.data(\"contentbox\").boxTextColor(\"dark\");\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.boxModule = function (s) {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n\r\n if ($activeBox.find(\".is-overlay\").length == 0) {\r\n $activeBox.prepend('
');\r\n }\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if ($overlay.find(\".is-overlay-content\").length == 0) {\r\n $overlay.append('
');\r\n }\r\n\r\n if (jQuery(\"#chkBgModule\").prop(\"checked\")) {\r\n $overlay.find(\".is-overlay-content\").html(\"
\"); //[%BREAK%]\r\n\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\", \"block\"); //show Background settings\r\n\r\n $overlay.find(\".is-overlay-bg\").remove();\r\n $overlay.find(\".is-overlay-color\").remove();\r\n $overlay.data(\"bg-url\", $overlay.find(\".is-overlay-bg\").css(\"background-image\"));\r\n } else {\r\n $overlay.find(\".is-overlay-content\").remove();\r\n\r\n if ($activeBox.find(\".is-container\").length > 0) {\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\", \"block\"); //show Background settings\r\n } else {\r\n jQuery(\"#divBoxBackgroundColor\").css(\"display\", \"none\");\r\n }\r\n\r\n //$overlay.find(\".is-overlay-bg\").css(\"display\", \"block\");\r\n }\r\n };\r\n\r\n this.boxTextColor = function (s) {\r\n if (s == \"light\") {\r\n $activeBox.removeClass(\"is-dark-text\");\r\n $activeBox.addClass(\"is-light-text\");\r\n }\r\n if (s == \"dark\") {\r\n $activeBox.removeClass(\"is-light-text\");\r\n $activeBox.addClass(\"is-dark-text\");\r\n }\r\n if (s == \"\") {\r\n $activeBox.removeClass(\"is-dark-text\");\r\n $activeBox.removeClass(\"is-light-text\");\r\n }\r\n return false;\r\n };\r\n\r\n this.boxTextAlign = function (s) {\r\n $activeBox.find(\".center\").removeClass(\"center\");\r\n $activeBox.find(\".is-builder > div > div > *\").css(\"text-align\", \"\");\r\n if (s == \"right\") {\r\n $activeBox.removeClass(\"is-align-left\");\r\n $activeBox.removeClass(\"is-align-center\");\r\n $activeBox.removeClass(\"is-align-justify\");\r\n $activeBox.addClass(\"is-align-right\");\r\n }\r\n if (s == \"center\") {\r\n $activeBox.removeClass(\"is-align-left\");\r\n $activeBox.removeClass(\"is-align-right\");\r\n $activeBox.removeClass(\"is-align-justify\");\r\n $activeBox.addClass(\"is-align-center\");\r\n }\r\n if (s == \"left\") {\r\n $activeBox.removeClass(\"is-align-right\");\r\n $activeBox.removeClass(\"is-align-center\");\r\n $activeBox.removeClass(\"is-align-justify\");\r\n $activeBox.addClass(\"is-align-left\");\r\n }\r\n if (s == \"justify\") {\r\n $activeBox.removeClass(\"is-align-left\");\r\n $activeBox.removeClass(\"is-align-right\");\r\n $activeBox.removeClass(\"is-align-center\");\r\n $activeBox.addClass(\"is-align-justify\");\r\n }\r\n return false;\r\n };\r\n\r\n this.boxTextOpacity = function (s) {\r\n var $cb = $activeBox.find(\".is-box-centered\");\r\n\r\n if (s == \"+\") {\r\n if ($cb.hasClass(\"is-opacity-20\")) { $cb.removeClass(\"is-opacity-20\"); $cb.addClass(\"is-opacity-25\") }\r\n else if ($cb.hasClass(\"is-opacity-25\")) { $cb.removeClass(\"is-opacity-25\"); $cb.addClass(\"is-opacity-30\") }\r\n else if ($cb.hasClass(\"is-opacity-30\")) { $cb.removeClass(\"is-opacity-30\"); $cb.addClass(\"is-opacity-35\") }\r\n else if ($cb.hasClass(\"is-opacity-35\")) { $cb.removeClass(\"is-opacity-35\"); $cb.addClass(\"is-opacity-40\") }\r\n else if ($cb.hasClass(\"is-opacity-40\")) { $cb.removeClass(\"is-opacity-40\"); $cb.addClass(\"is-opacity-45\") }\r\n else if ($cb.hasClass(\"is-opacity-45\")) { $cb.removeClass(\"is-opacity-45\"); $cb.addClass(\"is-opacity-50\") }\r\n else if ($cb.hasClass(\"is-opacity-50\")) { $cb.removeClass(\"is-opacity-50\"); $cb.addClass(\"is-opacity-55\") }\r\n else if ($cb.hasClass(\"is-opacity-55\")) { $cb.removeClass(\"is-opacity-55\"); $cb.addClass(\"is-opacity-60\") }\r\n else if ($cb.hasClass(\"is-opacity-60\")) { $cb.removeClass(\"is-opacity-60\"); $cb.addClass(\"is-opacity-65\") }\r\n else if ($cb.hasClass(\"is-opacity-65\")) { $cb.removeClass(\"is-opacity-65\"); $cb.addClass(\"is-opacity-70\") }\r\n else if ($cb.hasClass(\"is-opacity-70\")) { $cb.removeClass(\"is-opacity-70\"); $cb.addClass(\"is-opacity-75\") }\r\n else if ($cb.hasClass(\"is-opacity-75\")) { $cb.removeClass(\"is-opacity-75\"); $cb.addClass(\"is-opacity-80\") }\r\n else if ($cb.hasClass(\"is-opacity-80\")) { $cb.removeClass(\"is-opacity-80\"); $cb.addClass(\"is-opacity-85\") }\r\n else if ($cb.hasClass(\"is-opacity-85\")) { $cb.removeClass(\"is-opacity-85\"); $cb.addClass(\"is-opacity-90\") }\r\n else if ($cb.hasClass(\"is-opacity-90\")) { $cb.removeClass(\"is-opacity-90\"); $cb.addClass(\"is-opacity-95\") }\r\n else if ($cb.hasClass(\"is-opacity-95\")) { $cb.removeClass(\"is-opacity-95\"); }\r\n return false;\r\n }\r\n if (s == \"-\") {\r\n if ($cb.hasClass(\"is-opacity-20\")) { return false; }\r\n else if ($cb.hasClass(\"is-opacity-25\")) { $cb.removeClass(\"is-opacity-25\"); $cb.addClass(\"is-opacity-20\") }\r\n else if ($cb.hasClass(\"is-opacity-30\")) { $cb.removeClass(\"is-opacity-30\"); $cb.addClass(\"is-opacity-25\") }\r\n else if ($cb.hasClass(\"is-opacity-35\")) { $cb.removeClass(\"is-opacity-35\"); $cb.addClass(\"is-opacity-30\") }\r\n else if ($cb.hasClass(\"is-opacity-40\")) { $cb.removeClass(\"is-opacity-40\"); $cb.addClass(\"is-opacity-35\") }\r\n else if ($cb.hasClass(\"is-opacity-45\")) { $cb.removeClass(\"is-opacity-45\"); $cb.addClass(\"is-opacity-40\") }\r\n else if ($cb.hasClass(\"is-opacity-50\")) { $cb.removeClass(\"is-opacity-50\"); $cb.addClass(\"is-opacity-45\") }\r\n else if ($cb.hasClass(\"is-opacity-55\")) { $cb.removeClass(\"is-opacity-55\"); $cb.addClass(\"is-opacity-50\") }\r\n else if ($cb.hasClass(\"is-opacity-60\")) { $cb.removeClass(\"is-opacity-60\"); $cb.addClass(\"is-opacity-55\") }\r\n else if ($cb.hasClass(\"is-opacity-65\")) { $cb.removeClass(\"is-opacity-65\"); $cb.addClass(\"is-opacity-60\") }\r\n else if ($cb.hasClass(\"is-opacity-70\")) { $cb.removeClass(\"is-opacity-70\"); $cb.addClass(\"is-opacity-65\") }\r\n else if ($cb.hasClass(\"is-opacity-75\")) { $cb.removeClass(\"is-opacity-75\"); $cb.addClass(\"is-opacity-70\") }\r\n else if ($cb.hasClass(\"is-opacity-80\")) { $cb.removeClass(\"is-opacity-80\"); $cb.addClass(\"is-opacity-75\") }\r\n else if ($cb.hasClass(\"is-opacity-85\")) { $cb.removeClass(\"is-opacity-85\"); $cb.addClass(\"is-opacity-80\") }\r\n else if ($cb.hasClass(\"is-opacity-90\")) { $cb.removeClass(\"is-opacity-90\"); $cb.addClass(\"is-opacity-85\") }\r\n else if ($cb.hasClass(\"is-opacity-95\")) { $cb.removeClass(\"is-opacity-95\"); $cb.addClass(\"is-opacity-90\") }\r\n else { $cb.addClass(\"is-opacity-95\") }\r\n return false;\r\n }\r\n\r\n $cb.removeClass(\"is-opacity-20\");\r\n $cb.removeClass(\"is-opacity-25\");\r\n $cb.removeClass(\"is-opacity-30\");\r\n $cb.removeClass(\"is-opacity-35\");\r\n $cb.removeClass(\"is-opacity-40\");\r\n $cb.removeClass(\"is-opacity-45\");\r\n $cb.removeClass(\"is-opacity-50\");\r\n $cb.removeClass(\"is-opacity-55\");\r\n $cb.removeClass(\"is-opacity-60\");\r\n $cb.removeClass(\"is-opacity-65\");\r\n $cb.removeClass(\"is-opacity-70\");\r\n $cb.removeClass(\"is-opacity-75\");\r\n $cb.removeClass(\"is-opacity-80\");\r\n $cb.removeClass(\"is-opacity-85\");\r\n $cb.removeClass(\"is-opacity-90\");\r\n $cb.removeClass(\"is-opacity-95\");\r\n\r\n if (s == \"0.7\") {\r\n $cb.addClass(\"is-opacity-70\");\r\n }\r\n if (s == \"0.75\") {\r\n $cb.addClass(\"is-opacity-75\");\r\n }\r\n if (s == \"0.8\") {\r\n $cb.addClass(\"is-opacity-80\");\r\n }\r\n if (s == \"0.85\") {\r\n $cb.addClass(\"is-opacity-85\");\r\n }\r\n if (s == \"0.90\") {\r\n $cb.addClass(\"is-opacity-90\");\r\n }\r\n if (s == \"0.95\") {\r\n $cb.addClass(\"is-opacity-95\");\r\n }\r\n return false;\r\n };\r\n\r\n this.boxWidthSmaller = function () {\r\n var $currentBox;\r\n var $nextBox;\r\n\r\n var ok = false;\r\n for (i = 1; i <= 12; i++) {\r\n if ($activeBox.hasClass(\"is-box-\" + i)) {\r\n ok = true;\r\n }\r\n }\r\n if (ok) {\r\n $currentBox = $activeBox;\r\n } else {\r\n $currentBox = $activeBox.parent();\r\n }\r\n\r\n if ($currentBox.next().length > 0) {\r\n $nextBox = $currentBox.next();\r\n this.boxMinus($currentBox);\r\n this.boxPlus($nextBox);\r\n return false;\r\n } else if ($currentBox.prev().length > 0) {\r\n $nextBox = $currentBox.prev();\r\n this.boxMinus($currentBox);\r\n this.boxPlus($nextBox);\r\n return false;\r\n }\r\n };\r\n\r\n this.boxWidthLarger = function () {\r\n var $currentBox;\r\n var $nextBox;\r\n\r\n var ok = false;\r\n for (i = 1; i <= 12; i++) {\r\n if ($activeBox.hasClass(\"is-box-\" + i)) {\r\n ok = true;\r\n }\r\n }\r\n if (ok) {\r\n $currentBox = $activeBox;\r\n } else {\r\n $currentBox = $activeBox.parent();\r\n }\r\n\r\n\r\n if ($currentBox.next().length > 0) {\r\n $nextBox = $currentBox.next();\r\n this.boxPlus($currentBox);\r\n this.boxMinus($nextBox);\r\n return false;\r\n } else if ($currentBox.prev().length > 0) {\r\n $nextBox = $currentBox.prev();\r\n this.boxPlus($currentBox);\r\n this.boxMinus($nextBox);\r\n return false;\r\n }\r\n };\r\n\r\n this.boxPlus = function ($box) {\r\n for (i = 1; i < 12; i++) {\r\n if ($box.hasClass(\"is-box-\" + i)) {\r\n $box.removeClass(\"is-box-\" + i);\r\n $box.addClass(\"is-box-\" + (i + 1));\r\n return;\r\n }\r\n }\r\n };\r\n\r\n this.boxMinus = function ($box) {\r\n for (i = 12; i > 1; i--) {\r\n if ($box.hasClass(\"is-box-\" + i)) {\r\n $box.removeClass(\"is-box-\" + i);\r\n $box.addClass(\"is-box-\" + (i - 1));\r\n return;\r\n }\r\n }\r\n };\r\n\r\n this.boxAnimateBg = function () {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if (jQuery(\"#chkAnimateBg\").prop(\"checked\")) {\r\n $overlay.find(\".is-overlay-bg\").addClass(\"is-scale-animated\");\r\n $overlay.find(\".is-overlay-bg\").addClass(\"is-appeared\");\r\n } else {\r\n $overlay.find(\".is-overlay-bg\").removeClass(\"is-scale-animated\");\r\n $overlay.find(\".is-overlay-bg\").removeClass(\"is-appeared\");\r\n }\r\n };\r\n\r\n this.boxParallaxBg = function () {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if (jQuery(\"#chkParallaxBg\").prop(\"checked\")) {\r\n $overlay.find(\".is-overlay-bg\").attr(\"data-bottom-top\", \"transform:translateY(-120px) scale(1.05)\");\r\n $overlay.find(\".is-overlay-bg\").attr(\"data-top-bottom\", \"transform:translateY(120px) scale(1.05)\");\r\n\r\n $element.data(\"contentbox\").settings.onRender();\r\n } else {\r\n $overlay.find(\".is-overlay-bg\").removeClass(\"skrollable\");\r\n $overlay.find(\".is-overlay-bg\").removeClass(\"skrollable-between\");\r\n $overlay.find(\".is-overlay-bg\").removeAttr(\"data-bottom-top\");\r\n $overlay.find(\".is-overlay-bg\").removeAttr(\"data-top-bottom\");\r\n $overlay.find(\".is-overlay-bg\").css(\"transform\", \"translateY(0) scale(1)\");\r\n $overlay.find(\".is-overlay-bg\").css(\"transform\", \"\");\r\n var s = $overlay.find(\".is-overlay-bg\").get(0).outerHTML;\r\n $overlay.find(\".is-overlay-bg\").remove();\r\n $overlay.append(s);\r\n }\r\n };\r\n\r\n this.boxOverlayOpacity = function (s) {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n var $overlaycolor = $overlay.find(\".is-overlay-color\");\r\n if ($overlaycolor.length == 0) {\r\n //jQuery('
').insertAfter($overlay.find('.is-overlay-bg'));\r\n $overlay.find(\".is-overlay-bg\").prepend('
');\r\n $overlaycolor = $overlay.find(\".is-overlay-color\");\r\n }\r\n\r\n if (s == \"+\") {\r\n $overlaycolor.css(\"display\", \"block\");\r\n if ($overlaycolor.css(\"opacity\") == 0.01) $overlaycolor.css(\"opacity\", 0.025);\r\n else if ($overlaycolor.css(\"opacity\") == 0.025) $overlaycolor.css(\"opacity\", 0.04);\r\n else if ($overlaycolor.css(\"opacity\") == 0.04) $overlaycolor.css(\"opacity\", 0.055);\r\n else if ($overlaycolor.css(\"opacity\") == 0.055) $overlaycolor.css(\"opacity\", 0.07);\r\n else if ($overlaycolor.css(\"opacity\") == 0.07) $overlaycolor.css(\"opacity\", 0.085);\r\n else if ($overlaycolor.css(\"opacity\") == 0.085) $overlaycolor.css(\"opacity\", 0.1);\r\n else if ($overlaycolor.css(\"opacity\") == 0.1) $overlaycolor.css(\"opacity\", 0.125);\r\n else if ($overlaycolor.css(\"opacity\") == 0.125) $overlaycolor.css(\"opacity\", 0.15);\r\n else if ($overlaycolor.css(\"opacity\") == 0.15) $overlaycolor.css(\"opacity\", 0.2);\r\n else if ($overlaycolor.css(\"opacity\") == 0.2) $overlaycolor.css(\"opacity\", 0.25);\r\n else if ($overlaycolor.css(\"opacity\") == 0.25) $overlaycolor.css(\"opacity\", 0.3);\r\n else if ($overlaycolor.css(\"opacity\") == 0.3) $overlaycolor.css(\"opacity\", 0.35);\r\n else if ($overlaycolor.css(\"opacity\") == 0.35) $overlaycolor.css(\"opacity\", 0.4);\r\n else if ($overlaycolor.css(\"opacity\") == 0.4) $overlaycolor.css(\"opacity\", 0.45);\r\n else if ($overlaycolor.css(\"opacity\") == 0.45) $overlaycolor.css(\"opacity\", 0.5);\r\n else if ($overlaycolor.css(\"opacity\") == 0.5) $overlaycolor.css(\"opacity\", 0.55);\r\n else if ($overlaycolor.css(\"opacity\") == 0.55) $overlaycolor.css(\"opacity\", 0.6);\r\n else if ($overlaycolor.css(\"opacity\") == 0.6) $overlaycolor.css(\"opacity\", 0.6);\r\n else $overlaycolor.css(\"opacity\", 0.15);\r\n }\r\n if (s == \"-\") {\r\n $overlaycolor.css(\"display\", \"block\");\r\n if ($overlaycolor.css(\"opacity\") == 0.01) { $overlaycolor.css(\"opacity\", 0.01) }\r\n else if ($overlaycolor.css(\"opacity\") == 0.025) $overlaycolor.css(\"opacity\", 0.01);\r\n else if ($overlaycolor.css(\"opacity\") == 0.04) $overlaycolor.css(\"opacity\", 0.025);\r\n else if ($overlaycolor.css(\"opacity\") == 0.055) $overlaycolor.css(\"opacity\", 0.04);\r\n else if ($overlaycolor.css(\"opacity\") == 0.07) $overlaycolor.css(\"opacity\", 0.055);\r\n else if ($overlaycolor.css(\"opacity\") == 0.085) $overlaycolor.css(\"opacity\", 0.07);\r\n else if ($overlaycolor.css(\"opacity\") == 0.1) $overlaycolor.css(\"opacity\", 0.085);\r\n else if ($overlaycolor.css(\"opacity\") == 0.125) $overlaycolor.css(\"opacity\", 0.1);\r\n else if ($overlaycolor.css(\"opacity\") == 0.15) $overlaycolor.css(\"opacity\", 0.125);\r\n else if ($overlaycolor.css(\"opacity\") == 0.2) $overlaycolor.css(\"opacity\", 0.15);\r\n else if ($overlaycolor.css(\"opacity\") == 0.25) $overlaycolor.css(\"opacity\", 0.2);\r\n else if ($overlaycolor.css(\"opacity\") == 0.3) $overlaycolor.css(\"opacity\", 0.25);\r\n else if ($overlaycolor.css(\"opacity\") == 0.35) $overlaycolor.css(\"opacity\", 0.3);\r\n else if ($overlaycolor.css(\"opacity\") == 0.4) $overlaycolor.css(\"opacity\", 0.35);\r\n else if ($overlaycolor.css(\"opacity\") == 0.45) $overlaycolor.css(\"opacity\", 0.4);\r\n else if ($overlaycolor.css(\"opacity\") == 0.5) $overlaycolor.css(\"opacity\", 0.45);\r\n else if ($overlaycolor.css(\"opacity\") == 0.55) $overlaycolor.css(\"opacity\", 0.5);\r\n else if ($overlaycolor.css(\"opacity\") == 0.6) $overlaycolor.css(\"opacity\", 0.55);\r\n else { $overlaycolor.css(\"opacity\", 0.15) }\r\n }\r\n if (s == \"0\") {\r\n $overlaycolor.remove();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.boxOverlayColor = function (s) {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n var $overlaycolor = $overlay.find(\".is-overlay-color\");\r\n if ($overlaycolor.length == 0) {\r\n //jQuery('
').insertAfter($overlay.find('.is-overlay-bg'));\r\n $overlay.find(\".is-overlay-bg\").prepend('
');\r\n $overlaycolor = $overlay.find(\".is-overlay-color\");\r\n }\r\n\r\n if ($overlaycolor.css(\"display\") == \"none\" || $overlaycolor.css(\"opacity\") == 0) {//backward compatible\r\n $overlaycolor.css(\"display\", \"block\");\r\n $overlaycolor.css(\"opacity\", 0.1);\r\n }\r\n\r\n if (s == '') {\r\n $overlaycolor.remove();\r\n } else {\r\n $overlaycolor.css(\"background-color\", s);\r\n }\r\n return false;\r\n };\r\n\r\n //added by jack\r\n this.boxSelectAsset = function () {\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n var $overlaybg = $overlay.find(\".is-overlay-bg\");\r\n if (this.settings.onCoverImageSelectClick) {\r\n this.settings.onCoverImageSelectClick($overlaybg.get(0));\r\n }\r\n return false;\r\n };\r\n //end of added by jack\t\r\n\r\n this.sectionUseScroll = function () {\r\n if (jQuery(\"#chkScrollIcon\").prop(\"checked\")) {\r\n\r\n var $refSection = $activeSection.find(\".is-section-tool\");\r\n jQuery('
').insertBefore($refSection); /* ↓ */\r\n\r\n jQuery('.is-arrow-down a').on('click', function (e) {\r\n if (jQuery(this).parents(\".is-section\").next().html()) {\r\n jQuery('html,body').animate({\r\n scrollTop: jQuery(this).parents(\".is-section\").next().offset().top\r\n }, 800);\r\n }\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n return false;\r\n });\r\n\r\n } else {\r\n $activeSection.find(\".is-arrow-down\").remove();\r\n }\r\n return false;\r\n };\r\n\r\n this.sectionScrollIcon = function (s) {\r\n if (s == \"light\") {\r\n $activeSection.find(\".is-arrow-down\").addClass('light');\r\n } else {\r\n $activeSection.find(\".is-arrow-down\").removeClass('light');\r\n }\r\n return false;\r\n };\r\n\r\n this.sectionUp = function () {\r\n if ($activeSection.prev('.is-section').length > 0 && !$activeSection.prev('.is-section').hasClass('is-static')) {\r\n var $refSection = $activeSection.prev();\r\n $activeSection.insertBefore($refSection);\r\n\r\n //Trigger Render event\r\n this.settings.onRender();\r\n\r\n jQuery('html,body').animate({\r\n scrollTop: $activeSection.offset().top\r\n }, 600);\r\n }\r\n return false;\r\n };\r\n\r\n this.sectionDown = function () {\r\n if ($activeSection.next('.is-section').length > 0 && !$activeSection.next('.is-section').hasClass('is-static')) {\r\n var $refSection = $activeSection.next();\r\n $activeSection.insertAfter($refSection);\r\n\r\n //Trigger Render event\r\n this.settings.onRender();\r\n\r\n jQuery('html,body').animate({\r\n scrollTop: $activeSection.offset().top\r\n }, 600);\r\n }\r\n return false;\r\n };\r\n\r\n this.sectionTop = function () {\r\n var $refSection = $element.children('.is-section').not('.is-static').first();\r\n $activeSection.insertBefore($refSection);\r\n\r\n //Trigger Render event\r\n this.settings.onRender();\r\n\r\n jQuery('html,body').animate({\r\n scrollTop: $activeSection.offset().top\r\n }, 600);\r\n return false;\r\n };\r\n\r\n this.sectionBottom = function () {\r\n var $refSection = $element.children('.is-section').not('.is-static').last();\r\n $activeSection.insertAfter($refSection);\r\n\r\n //Trigger Render event\r\n this.settings.onRender();\r\n\r\n jQuery('html,body').animate({\r\n scrollTop: $activeSection.offset().top\r\n }, 600);\r\n\r\n return false;\r\n };\r\n\r\n this.sectionHeight = function (n) {\r\n $activeSection.css(\"height\", \"\");\r\n $activeSection.removeClass(\"is-section-auto\");\r\n $activeSection.removeClass(\"is-section-20\");\r\n $activeSection.removeClass(\"is-section-30\");\r\n $activeSection.removeClass(\"is-section-40\");\r\n $activeSection.removeClass(\"is-section-50\");\r\n $activeSection.removeClass(\"is-section-60\");\r\n $activeSection.removeClass(\"is-section-75\");\r\n $activeSection.removeClass(\"is-section-100\");\r\n\r\n if (n == 0) {\r\n $activeSection.addClass(\"is-section-auto\");\r\n } else {\r\n $activeSection.addClass(\"is-section-\" + n);\r\n }\r\n\r\n //Trigger Render event\r\n this.settings.onRender();\r\n\r\n jQuery('html,body').animate({\r\n scrollTop: $activeSection.offset().top\r\n }, 600);\r\n return false;\r\n };\r\n\r\n this.mainCss = function () {\r\n var css = '';\r\n\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n var src = links[i].href.toLowerCase();\r\n if (src.indexOf('basetype-') != -1) {\r\n css += links[i].outerHTML;\r\n }\r\n }\r\n\r\n return css;\r\n };\r\n\r\n this.sectionCss = function () {\r\n var css = '';\r\n\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n var src = links[i].href.toLowerCase();\r\n if (src.indexOf('basetype-') != -1) {\r\n //noop\r\n } else if (src.indexOf('type-') != -1) {\r\n css += links[i].outerHTML;\r\n }\r\n }\r\n\r\n return css;\r\n };\r\n\r\n var hash = {};\r\n var hashAttr = {};\r\n var hashSettings = {};\r\n\r\n this.html = function (bForView) {\r\n\r\n cleanupUnused();\r\n\r\n var html = _fb.readHtml($element.get(0), bForView, true);\r\n\r\n return html;\r\n\r\n };\r\n\r\n this.viewHtml = function (s) {\r\n\r\n var html = this.html(true); //For View\r\n\r\n jQuery('#inpViewHtml').val(html);\r\n \r\n //used textarea from #divSidebarSource\r\n jQuery('textarea').removeAttr('data-source-active');\r\n jQuery('textarea').removeAttr('data-source-ok');\r\n jQuery('textarea').removeAttr('data-source-cancel');\r\n jQuery('#divSidebarSource textarea').attr('data-source-active', '1');\r\n jQuery('#divSidebarSource textarea').attr('data-source-ok', '#btnViewHtmlOk');\r\n jQuery('#divSidebarSource textarea').attr('data-source-cancel', '#btnViewHtmlCancel');\r\n\r\n //_fb.viewHtml(); //OR:\r\n _fb.viewHtmlNormal();\r\n\r\n jQuery('#btnViewHtmlOk').off('click');\r\n jQuery('#btnViewHtmlOk').on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n var html = jQuery('#inpViewHtml').val();\r\n\r\n html = _fb.fromViewToActual(html);\r\n\r\n jQuery('.is-wrapper').html(html);\r\n\r\n $element.data(\"contentbox\").setup();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n });\r\n\r\n jQuery('#btnViewHtmlCancel').off('click');\r\n jQuery('#btnViewHtmlCancel').bind('click', function (e) {\r\n \r\n // None, because there is no sidebar panel to close\r\n\r\n });\r\n\r\n };\r\n\r\n this.viewHtml2 = function (s) {\r\n jQuery('body').css('overflow', 'hidden');\r\n\r\n var html = this.html(true); //For View\r\n\r\n jQuery('#inpViewHtml').val(html);\r\n\r\n jQuery('#btnViewHtmlOk').off('click');\r\n jQuery('#btnViewHtmlOk').on('click', function (e) {\r\n \r\n _fb.saveForUndo();\r\n\r\n /*\r\n var $htmlEditor = jQuery('#inpViewHtml').data('CodeMirrorInstance');\r\n jQuery('#inpViewHtml').val($htmlEditor.getValue());\r\n */\r\n\r\n var html = jQuery('#inpViewHtml').val();\r\n\r\n html = _fb.fromViewToActual(html);\r\n\r\n jQuery('.is-wrapper').html(html);\r\n\r\n $element.data(\"contentbox\").setup();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n //Close sidebar\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow', '');\r\n\r\n });\r\n\r\n jQuery('#btnViewHtmlCancel').off('click');\r\n jQuery('#btnViewHtmlCancel').bind('click', function (e) {\r\n\r\n //Close sidebar\r\n jQuery('.is-sidebar-overlay').remove();\r\n jQuery('.is-sidebar > div').removeClass('active');\r\n jQuery('.is-sidebar-content').removeClass('active');\r\n jQuery('body').css('overflow', '');\r\n\r\n });\r\n\r\n //Open Larger Editor\r\n\r\n jQuery('#divSidebarSource .edit-html-larger').off('click');\r\n jQuery('#divSidebarSource .edit-html-larger').on('click', function (e) {\r\n\r\n //used by larger editor dialog (html.html)\r\n jQuery('textarea').removeAttr('data-source-active');\r\n jQuery('textarea').removeAttr('data-source-ok');\r\n jQuery('textarea').removeAttr('data-source-cancel');\r\n jQuery('#divSidebarSource textarea').attr('data-source-active', '1');\r\n jQuery('#divSidebarSource textarea').attr('data-source-ok', '#btnViewHtmlOk');\r\n jQuery('#divSidebarSource textarea').attr('data-source-cancel', '#btnViewHtmlCancel');\r\n\r\n _fb.viewHtmlLarger();\r\n\r\n });\r\n\r\n return false;\r\n };\r\n\r\n this.viewTypography = function (s) {\r\n\r\n var contentStylePath = $element.data(\"contentbox\").settings.contentStylePath;\r\n if (jQuery('#ifrTypographyPanel').attr('src').indexOf('blank') != -1) {\r\n jQuery('#ifrTypographyPanel').attr('src', contentStylePath + 'browse.html');\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.viewIdeas = function (s) {\r\n jQuery('body').css('overflow', 'hidden');\r\n\r\n var designPath = $element.data(\"contentbox\").settings.designPath;\r\n if (jQuery('#ifrIdeasPanel').attr('src').indexOf('blank') != -1) {\r\n jQuery('#ifrIdeasPanel').attr('src', designPath + 'ideas.html');\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.boxTypography = function (className, contentCss, pageCss) {\r\n \r\n _fb.saveForUndo();\r\n\r\n var contentStylePath = $element.data(\"contentbox\").settings.contentStylePath;\r\n\r\n //Check apply to what\r\n var applyto = jQuery('.is-sidebar > div[data-command=typography]').attr('data-applyto');\r\n\r\n if (applyto == 'box') {\r\n\r\n if ($activeBox) {\r\n var classList = $activeBox.attr('class').split(/\\s+/);\r\n $.each(classList, function (index, item) {\r\n if (item.indexOf('type-') != -1) {//Remove previous class that has prefix 'type-'\r\n $activeBox.removeClass(item);\r\n }\r\n });\r\n //Add new class\r\n if (className != '') {\r\n $activeBox.addClass(className);\r\n\r\n //Add css\r\n var exist = false;\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n var src = links[i].href.toLowerCase();\r\n if (src.indexOf(contentCss.toLowerCase()) != -1) exist = true;\r\n }\r\n if (!exist) jQuery('head').append('');\r\n }\r\n\r\n //Cleanup unused\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n if (jQuery(links[i]).attr('data-name') == 'contentstyle') {\r\n\r\n var classname = jQuery(links[i]).attr('data-class');\r\n\r\n //check if classname used in content\r\n if (jQuery(\".is-wrapper\").find('.' + classname).length == 0) {\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n\r\n }\r\n }\r\n jQuery('[data-rel=\"_del\"]').remove();\r\n\r\n }\r\n\r\n } else {\r\n\r\n var bSectionStyleExists = false;\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n if (jQuery(links[i]).attr('data-name') == 'contentstyle') {\r\n bSectionStyleExists = true;\r\n }\r\n }\r\n\r\n if (!bSectionStyleExists) {\r\n\r\n //Cleanup (remove previous css that has prefix 'basetype-')\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n var src = links[i].href.toLowerCase();\r\n if (src.indexOf('basetype-') != -1) {\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n }\r\n jQuery('[data-rel=\"_del\"]').remove();\r\n\r\n //Add new page css\r\n if (pageCss != '') {\r\n jQuery('head').append('');\r\n }\r\n\r\n } else {\r\n\r\n var $modal = jQuery('.is-modal.applytypography');\r\n $element.data(\"contentbox\").showModal($modal);\r\n\r\n $modal.not('.is-modal *').off('click');\r\n $modal.not('.is-modal *').on('click', function (e) {\r\n if (jQuery(e.target).hasClass('is-modal')) {\r\n $element.data(\"contentbox\").hideModal($modal);\r\n }\r\n });\r\n\r\n $('input:radio[name=rdoApplyTypoStyle]')[1].checked = true;\r\n\r\n $modal.find('.input-ok').off('click');\r\n $modal.find('.input-ok').on('click', function (e) {\r\n\r\n var val = $('input[name=rdoApplyTypoStyle]:checked').val();\r\n if (val == 1) {\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n if (jQuery(links[i]).attr('data-name') == 'contentstyle') {\r\n\r\n var classname = jQuery(links[i]).attr('data-class');\r\n\r\n //check if classname used in content\r\n if (jQuery(\".is-wrapper\").find('.' + classname).length > 0) {\r\n jQuery(\".is-wrapper\").find('.' + classname).removeClass(classname);\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n\r\n }\r\n }\r\n jQuery('[data-rel=\"_del\"]').remove();\r\n }\r\n\r\n //Cleanup (remove previous css that has prefix 'basetype-')\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n var src = links[i].href.toLowerCase();\r\n if (src.indexOf('basetype-') != -1) {\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n }\r\n jQuery('[data-rel=\"_del\"]').remove();\r\n\r\n //Add new page css\r\n if (pageCss != '') {\r\n jQuery('head').append('');\r\n }\r\n\r\n $element.data(\"contentbox\").hideModal($modal);\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n return false;\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n };\r\n\r\n this.boxImage = function (s) {\r\n \r\n _fb.saveForUndo();\r\n\r\n jQuery(\"#lblWait\").css(\"display\", \"none\");\r\n\r\n /* Used if camera icon always shown\r\n if ($activeBox.find(\".is-overlay\").length == 0) {\r\n if ($activeBox.find(\".is-boxes\").length > 0) {\r\n var $isboxes = $activeBox.find(\".is-boxes\");\r\n var html = '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n $isboxes.prepend(html);\r\n }\r\n }\r\n */\r\n\r\n if ($activeBox.find(\".is-overlay\").length == 0) {\r\n $activeBox.prepend('
');\r\n }\r\n var $overlay = $activeBox.find(\".is-overlay\");\r\n if ($overlay.find(\".is-overlay-bg\").length == 0) {\r\n //$overlay.prepend('
');\r\n $overlay.prepend('
');\r\n $overlay.find(\".is-overlay-bg\").prepend('
');\r\n }\r\n $overlay.find(\".is-overlay-bg\").css(\"background-image\", \"url(\" + s + \")\");\r\n\r\n //$element.data(\"contentbox\").boxBgColor(\"\");\r\n $activeBox.css(\"background-color\", \"\");\r\n /*if ($activeBox.find(\".is-overlay-content .is-module\").length == 0) {//If not is module\r\n $overlay.find(\".is-overlay-bg\").css(\"display\", \"block\");\r\n }*/\r\n $activeBox.removeClass(\"is-bg-light\");\r\n $activeBox.removeClass(\"is-bg-grey\");\r\n $activeBox.removeClass(\"is-bg-dark\");\r\n\r\n //Trigger Render event\r\n $element.data(\"contentbox\").settings.onRender();\r\n\r\n //Trigger Change event\r\n $element.data(\"contentbox\").settings.onChange();\r\n\r\n };\r\n\r\n this.destroy = function () {\r\n\r\n var html = this.html();\r\n\r\n $element.removeData('contentbox');\r\n $element.unbind();\r\n\r\n jQuery('#_cbhtml').remove();\r\n jQuery('body').removeClass('sidebar-active');\r\n\r\n jQuery('.is-wrapper').html(html);\r\n\r\n _fb.destroy();\r\n\r\n };\r\n\r\n this.init();\r\n\r\n };\r\n\r\n // source: https: //stackoverflow.com/questions/2255689/how-to-get-the-file-path-of-the-currently-executing-javascript-code\r\n function currentScriptPath() {\r\n var scripts = document.querySelectorAll('script[src]');\r\n var currentScript = scripts[scripts.length - 1].src;\r\n var currentScriptChunks = currentScript.split('/');\r\n var currentScriptFile = currentScriptChunks[currentScriptChunks.length - 1];\r\n return currentScript.replace(currentScriptFile, '');\r\n };\r\n\r\n function out(s) {\r\n if (bLangFile) {\r\n var result = _txt[s];\r\n if (result) return result;\r\n else return s;\r\n } else {\r\n return s;\r\n }\r\n };\r\n\r\n jQuery.fn.contentbox = function (options) {\r\n return this.each(function () {\r\n\r\n if (undefined == jQuery(this).data('contentbox')) {\r\n var plugin = new jQuery.contentbox(this, options);\r\n jQuery(this).data('contentbox', plugin);\r\n }\r\n });\r\n };\r\n})(jQuery);\r\n \r\n// source: http://stackoverflow.com/questions/1349404/generate-a-string-of-5-random-characters-in-javascript\r\nfunction makeid() {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\r\n for (var i = 0; i < 2; i++)\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n\r\n var text2 = \"\";\r\n var possible2 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n for (var i = 0; i < 5; i++)\r\n text2 += possible2.charAt(Math.floor(Math.random() * possible2.length));\r\n\r\n return text + text2;\r\n};\r\n\r\nfunction applyBoxImage(s) {\r\n jQuery(\".is-wrapper\").data(\"contentbox\").boxImage(s);\r\n}\r\nfunction applyTypography(className, contentCss, pageCss) {\r\n jQuery(\".is-wrapper\").data(\"contentbox\").boxTypography(className, contentCss, pageCss);\r\n}\r\n\r\nfunction cleanupUnused() { \r\n \r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n\r\n //Remove unused google font links\r\n var src = jQuery(links[i]).attr('href');\r\n if (src.indexOf('googleapis') != -1) {\r\n //get fontname\r\n src = src.replace(/\\+/g, ' ').replace(/%20/g, ' ');\r\n var fontname = src.substr(src.indexOf('family=') + 7);\r\n if (fontname.indexOf(':') != -1) {\r\n fontname = fontname.split(':')[0];\r\n }\r\n fontname = fontname.toLowerCase();\r\n //check if fontname used in content\r\n\r\n var exist = false;\r\n var tmp = jQuery(\".is-wrapper\").html().toLowerCase();\r\n var count = tmp.split(fontname).length;\r\n if (count >= 3) exist = true;\r\n\r\n if (!exist) {\r\n //jQuery(links[i]).attr('data-rel', '_del'); \r\n var attr = jQuery(links[i]).attr('data-protect');\r\n if (typeof attr !== typeof undefined && attr !== false) {\r\n //do not delete\r\n } else {\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n //Cleanup unused contentstyles\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n if (jQuery(links[i]).attr('data-name') == 'contentstyle') {\r\n\r\n var classname = jQuery(links[i]).attr('data-class');\r\n\r\n //check if classname used in content\r\n if (classname == '') {//prevent problem if classname is empty (incorrect json data)\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n if (classname != '') {\r\n if (jQuery(\".is-wrapper\").find('.' + classname).length == 0) {\r\n jQuery(links[i]).attr('data-rel', '_del');\r\n }\r\n }\r\n }\r\n }\r\n jQuery('[data-rel=\"_del\"]').remove();\r\n\r\n /*Cleanup duplicate contentstyles.\r\n Possible duplicates can happen when adding new section with embedded contentstyles.\r\n If .sectionCss() is used (which in app/example will be added in ) then there will be duplicates (because it reads all contentstyles (type-*.css) and returned in .sectionCss().\r\n If .sectionCss() is NOT used, then there will be no duplicates.\r\n\r\n This cleanup is applicable when there is actual duplication found. All duplicates within .is-wrapper will be removed to make the .html() clean.\r\n If .sectionCss() is NOT used, all contentstyles embedded in .is-wrapper will stay. \r\n So there will be no problem whether .sectionCss() is used or not and no change needed on section templates(can still use embedded contentstyles)!\r\n\r\n How about basetype-*.css? basetype-*.css always included once (by cleanup previous basetype-*.css include). It only used if enableContentStyle is set true. And for this (enableContentStyle=true), .mainCss() method MUST BE USED.\r\n */\r\n jQuery(\"head\").children('link').each(function () {\r\n\r\n var src = jQuery(this).attr('href');\r\n\r\n jQuery(\".is-wrapper\").children('link').each(function () {\r\n if (src == jQuery(this).attr('href')) {\r\n jQuery(this).attr('data-rel', '_del');\r\n }\r\n });\r\n\r\n });\r\n\r\n jQuery('[data-rel=\"_del\"]').remove();\r\n\r\n}\r\n\r\n\r\n/* \r\nsource:\r\nhttp://stackoverflow.com/questions/1043957/clearing-input-type-file-using-jquery\r\nhttps://github.com/malsup/form/blob/master/jquery.form.js\r\n*/\r\njQuery.fn.clearFields = jQuery.fn.clearInputs = function (includeHidden) {\r\n var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list\r\n return this.each(function () {\r\n var t = this.type, tag = this.tagName.toLowerCase();\r\n if (re.test(t) || tag == 'textarea') {\r\n this.value = '';\r\n }\r\n else if (t == 'checkbox' || t == 'radio') {\r\n this.checked = false;\r\n }\r\n else if (tag == 'select') {\r\n this.selectedIndex = -1;\r\n }\r\n else if (t == \"file\") {\r\n if (/MSIE/.test(navigator.userAgent)) {\r\n jQuery(this).replaceWith(jQuery(this).clone(true));\r\n } else {\r\n jQuery(this).val('');\r\n }\r\n }\r\n else if (includeHidden) {\r\n // includeHidden can be the value true, or it can be a selector string\r\n // indicating a special test; for example:\r\n // jQuery('#myForm').clearForm('.special:hidden')\r\n // the above would clean hidden inputs that have the class of 'special'\r\n if ((includeHidden === true && /hidden/.test(t)) ||\r\n (typeof includeHidden == 'string' && jQuery(this).is(includeHidden)))\r\n this.value = '';\r\n }\r\n });\r\n};\r\n\r\n/*! \r\npace 1.0.0 \r\nCopyright (c) 2013 HubSpot, Inc.\r\nMIT License\r\n*/\r\n(function () { var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X = [].slice, Y = {}.hasOwnProperty, Z = function (a, b) { function c() { this.constructor = a } for (var d in b) Y.call(b, d) && (a[d] = b[d]); return c.prototype = b.prototype, a.prototype = new c, a.__super__ = b.prototype, a }, $ = [].indexOf || function (a) { for (var b = 0, c = this.length; c > b; b++) if (b in this && this[b] === a) return b; return -1 }; for (u = { catchupTime: 100, initialRate: .03, minTime: 250, ghostTime: 100, maxProgressPerFrame: 20, easeFactor: 1.25, startOnPageLoad: !0, restartOnPushState: !0, restartOnRequestAfter: 500, target: \"body\", elements: { checkInterval: 100, selectors: [\"body\"] }, eventLag: { minSamples: 10, sampleCount: 3, lagThreshold: 3 }, ajax: { trackMethods: [\"GET\"], trackWebSockets: !0, ignoreURLs: []} }, C = function () { var a; return null != (a = \"undefined\" != typeof performance && null !== performance && \"function\" == typeof performance.now ? performance.now() : void 0) ? a : +new Date }, E = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, t = window.cancelAnimationFrame || window.mozCancelAnimationFrame, null == E && (E = function (a) { return setTimeout(a, 50) }, t = function (a) { return clearTimeout(a) }), G = function (a) { var b, c; return b = C(), (c = function () { var d; return d = C() - b, d >= 33 ? (b = C(), a(d, function () { return E(c) })) : setTimeout(c, 33 - d) })() }, F = function () { var a, b, c; return c = arguments[0], b = arguments[1], a = 3 <= arguments.length ? X.call(arguments, 2) : [], \"function\" == typeof c[b] ? c[b].apply(c, a) : c[b] }, v = function () { var a, b, c, d, e, f, g; for (b = arguments[0], d = 2 <= arguments.length ? X.call(arguments, 1) : [], f = 0, g = d.length; g > f; f++) if (c = d[f]) for (a in c) Y.call(c, a) && (e = c[a], null != b[a] && \"object\" == typeof b[a] && null != e && \"object\" == typeof e ? v(b[a], e) : b[a] = e); return b }, q = function (a) { var b, c, d, e, f; for (c = b = 0, e = 0, f = a.length; f > e; e++) d = a[e], c += Math.abs(d), b++; return c / b }, x = function (a, b) { var c, d, e; if (null == a && (a = \"options\"), null == b && (b = !0), e = document.querySelector(\"[data-pace-\" + a + \"]\")) { if (c = e.getAttribute(\"data-pace-\" + a), !b) return c; try { return JSON.parse(c) } catch (f) { return d = f, \"undefined\" != typeof console && null !== console ? console.error(\"Error parsing inline pace options\", d) : void 0 } } }, g = function () { function a() { } return a.prototype.on = function (a, b, c, d) { var e; return null == d && (d = !1), null == this.bindings && (this.bindings = {}), null == (e = this.bindings)[a] && (e[a] = []), this.bindings[a].push({ handler: b, ctx: c, once: d }) }, a.prototype.once = function (a, b, c) { return this.on(a, b, c, !0) }, a.prototype.off = function (a, b) { var c, d, e; if (null != (null != (d = this.bindings) ? d[a] : void 0)) { if (null == b) return delete this.bindings[a]; for (c = 0, e = []; c < this.bindings[a].length; ) e.push(this.bindings[a][c].handler === b ? this.bindings[a].splice(c, 1) : c++); return e } }, a.prototype.trigger = function () { var a, b, c, d, e, f, g, h, i; if (c = arguments[0], a = 2 <= arguments.length ? X.call(arguments, 1) : [], null != (g = this.bindings) ? g[c] : void 0) { for (e = 0, i = []; e < this.bindings[c].length; ) h = this.bindings[c][e], d = h.handler, b = h.ctx, f = h.once, d.apply(null != b ? b : this, a), i.push(f ? this.bindings[c].splice(e, 1) : e++); return i } }, a } (), j = window.Pace || {}, window.Pace = j, v(j, g.prototype), D = j.options = v({}, u, window.paceOptions, x()), U = [\"ajax\", \"document\", \"eventLag\", \"elements\"], Q = 0, S = U.length; S > Q; Q++) K = U[Q], D[K] === !0 && (D[K] = u[K]); i = function (a) { function b() { return V = b.__super__.constructor.apply(this, arguments) } return Z(b, a), b } (Error), b = function () { function a() { this.progress = 0 } return a.prototype.getElement = function () { var a; if (null == this.el) { if (a = document.querySelector(D.target), !a) throw new i; this.el = document.createElement(\"div\"), this.el.className = \"pace pace-active\", document.body.className = document.body.className.replace(/pace-done/g, \"\"), document.body.className += \" pace-running\", this.el.innerHTML = '
\\n
\\n
\\n
', null != a.firstChild ? a.insertBefore(this.el, a.firstChild) : a.appendChild(this.el) } return this.el }, a.prototype.finish = function () { var a; return a = this.getElement(), a.className = a.className.replace(\"pace-active\", \"\"), a.className += \" pace-inactive\", document.body.className = document.body.className.replace(\"pace-running\", \"\"), document.body.className += \" pace-done\" }, a.prototype.update = function (a) { return this.progress = a, this.render() }, a.prototype.destroy = function () { try { this.getElement().parentNode.removeChild(this.getElement()) } catch (a) { i = a } return this.el = void 0 }, a.prototype.render = function () { var a, b, c, d, e, f, g; if (null == document.querySelector(D.target)) return !1; for (a = this.getElement(), d = \"translate3d(\" + this.progress + \"%, 0, 0)\", g = [\"webkitTransform\", \"msTransform\", \"transform\"], e = 0, f = g.length; f > e; e++) b = g[e], a.children[0].style[b] = d; return (!this.lastRenderedProgress || this.lastRenderedProgress | 0 !== this.progress | 0) && (a.children[0].setAttribute(\"data-progress-text\", \"\" + (0 | this.progress) + \"%\"), this.progress >= 100 ? c = \"99\" : (c = this.progress < 10 ? \"0\" : \"\", c += 0 | this.progress), a.children[0].setAttribute(\"data-progress\", \"\" + c)), this.lastRenderedProgress = this.progress }, a.prototype.done = function () { return this.progress >= 100 }, a } (), h = function () { function a() { this.bindings = {} } return a.prototype.trigger = function (a, b) { var c, d, e, f, g; if (null != this.bindings[a]) { for (f = this.bindings[a], g = [], d = 0, e = f.length; e > d; d++) c = f[d], g.push(c.call(this, b)); return g } }, a.prototype.on = function (a, b) { var c; return null == (c = this.bindings)[a] && (c[a] = []), this.bindings[a].push(b) }, a } (), P = window.XMLHttpRequest, O = window.XDomainRequest, N = window.WebSocket, w = function (a, b) { var c, d, e, f; f = []; for (d in b.prototype) try { e = b.prototype[d], f.push(null == a[d] && \"function\" != typeof e ? a[d] = e : void 0) } catch (g) { c = g } return f }, A = [], j.ignore = function () { var a, b, c; return b = arguments[0], a = 2 <= arguments.length ? X.call(arguments, 1) : [], A.unshift(\"ignore\"), c = b.apply(null, a), A.shift(), c }, j.track = function () { var a, b, c; return b = arguments[0], a = 2 <= arguments.length ? X.call(arguments, 1) : [], A.unshift(\"track\"), c = b.apply(null, a), A.shift(), c }, J = function (a) { var b; if (null == a && (a = \"GET\"), \"track\" === A[0]) return \"force\"; if (!A.length && D.ajax) { if (\"socket\" === a && D.ajax.trackWebSockets) return !0; if (b = a.toUpperCase(), $.call(D.ajax.trackMethods, b) >= 0) return !0 } return !1 }, k = function (a) { function b() { var a, c = this; b.__super__.constructor.apply(this, arguments), a = function (a) { var b; return b = a.open, a.open = function (d, e) { return J(d) && c.trigger(\"request\", { type: d, url: e, request: a }), b.apply(a, arguments) } }, window.XMLHttpRequest = function (b) { var c; return c = new P(b), a(c), c }; try { w(window.XMLHttpRequest, P) } catch (d) { } if (null != O) { window.XDomainRequest = function () { var b; return b = new O, a(b), b }; try { w(window.XDomainRequest, O) } catch (d) { } } if (null != N && D.ajax.trackWebSockets) { window.WebSocket = function (a, b) { var d; return d = null != b ? new N(a, b) : new N(a), J(\"socket\") && c.trigger(\"request\", { type: \"socket\", url: a, protocols: b, request: d }), d }; try { w(window.WebSocket, N) } catch (d) { } } } return Z(b, a), b } (h), R = null, y = function () { return null == R && (R = new k), R }, I = function (a) { var b, c, d, e; for (e = D.ajax.ignoreURLs, c = 0, d = e.length; d > c; c++) if (b = e[c], \"string\" == typeof b) { if (-1 !== a.indexOf(b)) return !0 } else if (b.test(a)) return !0; return !1 }, y().on(\"request\", function (b) { var c, d, e, f, g; return f = b.type, e = b.request, g = b.url, I(g) ? void 0 : j.running || D.restartOnRequestAfter === !1 && \"force\" !== J(f) ? void 0 : (d = arguments, c = D.restartOnRequestAfter || 0, \"boolean\" == typeof c && (c = 0), setTimeout(function () { var b, c, g, h, i, k; if (b = \"socket\" === f ? e.readyState < 2 : 0 < (h = e.readyState) && 4 > h) { for (j.restart(), i = j.sources, k = [], c = 0, g = i.length; g > c; c++) { if (K = i[c], K instanceof a) { K.watch.apply(K, d); break } k.push(void 0) } return k } }, c)) }), a = function () { function a() { var a = this; this.elements = [], y().on(\"request\", function () { return a.watch.apply(a, arguments) }) } return a.prototype.watch = function (a) { var b, c, d, e; return d = a.type, b = a.request, e = a.url, I(e) ? void 0 : (c = \"socket\" === d ? new n(b) : new o(b), this.elements.push(c)) }, a } (), o = function () { function a(a) { var b, c, d, e, f, g, h = this; if (this.progress = 0, null != window.ProgressEvent) for (c = null, a.addEventListener(\"progress\", function (a) { return h.progress = a.lengthComputable ? 100 * a.loaded / a.total : h.progress + (100 - h.progress) / 2 }, !1), g = [\"load\", \"abort\", \"timeout\", \"error\"], d = 0, e = g.length; e > d; d++) b = g[d], a.addEventListener(b, function () { return h.progress = 100 }, !1); else f = a.onreadystatechange, a.onreadystatechange = function () { var b; return 0 === (b = a.readyState) || 4 === b ? h.progress = 100 : 3 === a.readyState && (h.progress = 50), \"function\" == typeof f ? f.apply(null, arguments) : void 0 } } return a } (), n = function () { function a(a) { var b, c, d, e, f = this; for (this.progress = 0, e = [\"error\", \"open\"], c = 0, d = e.length; d > c; c++) b = e[c], a.addEventListener(b, function () { return f.progress = 100 }, !1) } return a } (), d = function () { function a(a) { var b, c, d, f; for (null == a && (a = {}), this.elements = [], null == a.selectors && (a.selectors = []), f = a.selectors, c = 0, d = f.length; d > c; c++) b = f[c], this.elements.push(new e(b)) } return a } (), e = function () { function a(a) { this.selector = a, this.progress = 0, this.check() } return a.prototype.check = function () { var a = this; return document.querySelector(this.selector) ? this.done() : setTimeout(function () { return a.check() }, D.elements.checkInterval) }, a.prototype.done = function () { return this.progress = 100 }, a } (), c = function () { function a() { var a, b, c = this; this.progress = null != (b = this.states[document.readyState]) ? b : 100, a = document.onreadystatechange, document.onreadystatechange = function () { return null != c.states[document.readyState] && (c.progress = c.states[document.readyState]), \"function\" == typeof a ? a.apply(null, arguments) : void 0 } } return a.prototype.states = { loading: 0, interactive: 50, complete: 100 }, a } (), f = function () { function a() { var a, b, c, d, e, f = this; this.progress = 0, a = 0, e = [], d = 0, c = C(), b = setInterval(function () { var g; return g = C() - c - 50, c = C(), e.push(g), e.length > D.eventLag.sampleCount && e.shift(), a = q(e), ++d >= D.eventLag.minSamples && a < D.eventLag.lagThreshold ? (f.progress = 100, clearInterval(b)) : f.progress = 100 * (3 / (a + 3)) }, 50) } return a } (), m = function () { function a(a) { this.source = a, this.last = this.sinceLastUpdate = 0, this.rate = D.initialRate, this.catchup = 0, this.progress = this.lastProgress = 0, null != this.source && (this.progress = F(this.source, \"progress\")) } return a.prototype.tick = function (a, b) { var c; return null == b && (b = F(this.source, \"progress\")), b >= 100 && (this.done = !0), b === this.last ? this.sinceLastUpdate += a : (this.sinceLastUpdate && (this.rate = (b - this.last) / this.sinceLastUpdate), this.catchup = (b - this.progress) / D.catchupTime, this.sinceLastUpdate = 0, this.last = b), b > this.progress && (this.progress += this.catchup * a), c = 1 - Math.pow(this.progress / 100, D.easeFactor), this.progress += c * this.rate * a, this.progress = Math.min(this.lastProgress + D.maxProgressPerFrame, this.progress), this.progress = Math.max(0, this.progress), this.progress = Math.min(100, this.progress), this.lastProgress = this.progress, this.progress }, a } (), L = null, H = null, r = null, M = null, p = null, s = null, j.running = !1, z = function () { return D.restartOnPushState ? j.restart() : void 0 }, null != window.history.pushState && (T = window.history.pushState, window.history.pushState = function () { return z(), T.apply(window.history, arguments) }), null != window.history.replaceState && (W = window.history.replaceState, window.history.replaceState = function () { return z(), W.apply(window.history, arguments) }), l = { ajax: a, elements: d, document: c, eventLag: f }, (B = function () { var a, c, d, e, f, g, h, i; for (j.sources = L = [], g = [\"ajax\", \"elements\", \"document\", \"eventLag\"], c = 0, e = g.length; e > c; c++) a = g[c], D[a] !== !1 && L.push(new l[a](D[a])); for (i = null != (h = D.extraSources) ? h : [], d = 0, f = i.length; f > d; d++) K = i[d], L.push(new K(D)); return j.bar = r = new b, H = [], M = new m })(), j.stop = function () { return j.trigger(\"stop\"), j.running = !1, r.destroy(), s = !0, null != p && (\"function\" == typeof t && t(p), p = null), B() }, j.restart = function () { return j.trigger(\"restart\"), j.stop(), j.start() }, j.go = function () { var a; return j.running = !0, r.render(), a = C(), s = !1, p = G(function (b, c) { var d, e, f, g, h, i, k, l, n, o, p, q, t, u, v, w; for (l = 100 - r.progress, e = p = 0, f = !0, i = q = 0, u = L.length; u > q; i = ++q) for (K = L[i], o = null != H[i] ? H[i] : H[i] = [], h = null != (w = K.elements) ? w : [K], k = t = 0, v = h.length; v > t; k = ++t) g = h[k], n = null != o[k] ? o[k] : o[k] = new m(g), f &= n.done, n.done || (e++, p += n.tick(b)); return d = p / e, r.update(M.tick(b, d)), r.done() || f || s ? (r.update(100), j.trigger(\"done\"), setTimeout(function () { return r.finish(), j.running = !1, j.trigger(\"hide\") }, Math.max(D.ghostTime, Math.max(D.minTime - (C() - a), 0)))) : c() }) }, j.start = function (a) { v(D, a), j.running = !0; try { r.render() } catch (b) { i = b } return document.querySelector(\".pace\") ? (j.trigger(\"start\"), j.go()) : setTimeout(j.start, 50) }, \"function\" == typeof define && define.amd ? define(function () { return j }) : \"object\" == typeof exports ? module.exports = j : D.startOnPageLoad && j.start() }).call(this);\r\nPace.on(\"hide\", function () {\r\n $('.pace-inactive').remove();\r\n \r\n $(\".is-wrapper\").css('opacity',1);\r\n $(\".is-wrapper\").fadeIn();\r\n});\r\n\r\n\n}.call(window));\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./contentbox.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var ContentBuilder = (function () {\r\n 'use strict';\r\n\r\n function _typeof$2(obj) {\r\n \"@babel/helpers - typeof\";\r\n\r\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\r\n _typeof$2 = function (obj) {\r\n return typeof obj;\r\n };\r\n } else {\r\n _typeof$2 = function (obj) {\r\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n };\r\n }\r\n\r\n return _typeof$2(obj);\r\n }\r\n\r\n function _classCallCheck$1(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n }\r\n\r\n function _defineProperties$1(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n function _createClass$1(Constructor, protoProps, staticProps) {\r\n if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);\r\n if (staticProps) _defineProperties$1(Constructor, staticProps);\r\n return Constructor;\r\n }\r\n\r\n var Util = /*#__PURE__*/function () {\r\n function Util(builder) {\r\n _classCallCheck$1(this, Util);\r\n\r\n this.builder = builder;\r\n }\r\n\r\n _createClass$1(Util, [{\r\n key: \"cellSelected\",\r\n value: function cellSelected() {\r\n return document.querySelector('.cell-active');\r\n }\r\n }, {\r\n key: \"builderStuff\",\r\n value: function builderStuff() {\r\n return document.querySelector('#_cbhtml');\r\n }\r\n }, {\r\n key: \"cellNext\",\r\n value: function cellNext(cell) {\r\n var dom = new Dom();\r\n var c = cell.nextElementSibling;\r\n\r\n if (c) {\r\n if (!dom.hasClass(c, 'is-row-tool') && !dom.hasClass(c, 'is-rowadd-tool')) {\r\n return c;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n }, {\r\n key: \"out\",\r\n value: function out(s) {\r\n if (this.builder) {\r\n var val = this.builder.opts.lang[s];\r\n if (val) return val;else {\r\n if (this.builder.checkLang) console.log(s);\r\n return s;\r\n }\r\n } else {\r\n return s;\r\n }\r\n }\r\n }, {\r\n key: \"confirm\",\r\n value: function confirm(message, callback) {\r\n var _this = this;\r\n\r\n var dom = new Dom();\r\n var html = \"
\\n
\\n

\".concat(message, \"

\\n \\n
\\n
\");\r\n var builderStuff = this.builderStuff();\r\n var confirmmodal = builderStuff.querySelector('.is-confirm');\r\n\r\n if (!confirmmodal) {\r\n dom.appendHtml(builderStuff, html);\r\n confirmmodal = builderStuff.querySelector('.is-confirm');\r\n }\r\n\r\n this.showModal(confirmmodal, false, function () {\r\n //this function runs when overlay is clicked. Remove modal.\r\n confirmmodal.parentNode.removeChild(confirmmodal); //do task\r\n\r\n callback(false);\r\n }, true);\r\n var buttonok = confirmmodal.querySelector('.is-confirm .input-ok');\r\n dom.addEventListener(buttonok, 'click', function () {\r\n _this.hideModal(confirmmodal);\r\n\r\n confirmmodal.parentNode.removeChild(confirmmodal); //remove modal\r\n //do task\r\n\r\n callback(true);\r\n });\r\n }\r\n /*\r\n Note:\r\n - if overlayStay = false, cancelCallback will be called if overlay is clicked.\r\n - hideModal will remove the modal element, so calling show modal multiple times won't attach multiple events (safe).\r\n */\r\n\r\n }, {\r\n key: \"showModal\",\r\n value: function showModal(modal, overlayStay, cancelCallback, animated) {\r\n var _this2 = this;\r\n\r\n var dom = new Dom();\r\n dom.addClass(modal, 'active');\r\n var animate = false;\r\n\r\n if (this.builder) {\r\n if (this.builder.opts.animateModal) {\r\n animate = true;\r\n\r\n if (!animated) {\r\n // if not set or false\r\n animate = false; // overide \r\n }\r\n }\r\n } else {\r\n if (animated) {\r\n // if set true\r\n animate = true; // overide\r\n }\r\n }\r\n\r\n if (animate) {\r\n if (this.builder) {\r\n var buildercontainers = document.querySelectorAll(this.builder.opts.container);\r\n Array.prototype.forEach.call(buildercontainers, function (buildercontainer) {\r\n buildercontainer.style.transform = 'scale(0.98)';\r\n buildercontainer.style.WebkitTransform = 'scale(0.98)';\r\n buildercontainer.style.MozTransform = 'scale(0.98)';\r\n });\r\n }\r\n }\r\n\r\n if (!modal.querySelector('.is-modal-overlay')) {\r\n var html;\r\n\r\n if (overlayStay) {\r\n html = '
';\r\n } else {\r\n html = '
';\r\n }\r\n\r\n modal.insertAdjacentHTML('afterbegin', html);\r\n\r\n if (!overlayStay) {\r\n var overlay = modal.querySelector('.is-modal-overlay');\r\n dom.addEventListener(overlay, 'click', function () {\r\n //cancelCallback\r\n if (cancelCallback) cancelCallback();\r\n\r\n _this2.hideModal(modal);\r\n });\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"hideModal\",\r\n value: function hideModal(modal) {\r\n if (this.builder) {\r\n var buildercontainers = document.querySelectorAll(this.builder.opts.container);\r\n Array.prototype.forEach.call(buildercontainers, function (buildercontainer) {\r\n buildercontainer.style.transform = '';\r\n buildercontainer.style.WebkitTransform = '';\r\n buildercontainer.style.MozTransform = '';\r\n });\r\n }\r\n\r\n var dom = new Dom();\r\n dom.removeClass(modal, 'active');\r\n }\r\n }, {\r\n key: \"fixLayout\",\r\n value: function fixLayout(row) {\r\n var dom = new Dom();\r\n var cellCount = row.childElementCount - 2; //minus is-row-tool & is-rowadd-tool\r\n\r\n var rowClass = this.builder.opts.row;\r\n var colClass = this.builder.opts.cols;\r\n var colEqual = this.builder.opts.colequal;\r\n\r\n if (colEqual.length > 0) {\r\n var cols = dom.elementChildren(row);\r\n cols.forEach(function (col) {\r\n if (dom.hasClass(col, 'is-row-tool') || dom.hasClass(col, 'is-rowadd-tool')) return;\r\n\r\n for (var i = 0; i <= colClass.length - 1; i++) {\r\n dom.removeClass(col, colClass[i]);\r\n }\r\n\r\n for (var _i = 0; _i <= colEqual.length - 1; _i++) {\r\n if (colEqual[_i].length === cellCount) {\r\n dom.addClass(col, colEqual[_i][0]);\r\n break;\r\n }\r\n }\r\n\r\n if (cellCount === 1) {\r\n dom.addClass(col, colClass[colClass.length - 1]);\r\n }\r\n });\r\n return;\r\n } //others (12 columns grid)\r\n\r\n\r\n if (rowClass !== '' && colClass.length > 0) {\r\n var n = 0;\r\n\r\n var _cols = dom.elementChildren(row);\r\n\r\n _cols.forEach(function (col) {\r\n if (dom.hasClass(col, 'is-row-tool') || dom.hasClass(col, 'is-rowadd-tool')) return;\r\n n++;\r\n\r\n for (var i = 0; i <= colClass.length - 1; i++) {\r\n dom.removeClass(col, colClass[i]);\r\n }\r\n\r\n if (cellCount === 1) dom.addClass(col, colClass[11]);\r\n if (cellCount === 2) dom.addClass(col, colClass[5]);\r\n if (cellCount === 3) dom.addClass(col, colClass[3]);\r\n if (cellCount === 4) dom.addClass(col, colClass[2]);\r\n\r\n if (cellCount === 5) {\r\n // 2, 2, 2, 2, 4\r\n if (n === 5) dom.addClass(col, colClass[3]);else dom.addClass(col, colClass[1]);\r\n }\r\n\r\n if (cellCount === 6) dom.addClass(col, colClass[1]); // 2, 2, 2, 2, 2, 2\r\n\r\n if (cellCount === 7) {\r\n // 2, 2, 2, 2, 2, 1, 1\r\n if (n >= 6) dom.addClass(col, colClass[0]);else dom.addClass(col, colClass[1]);\r\n }\r\n\r\n if (cellCount === 8) {\r\n // 2, 2, 2, 2, 1, 1, 1, 1\r\n if (n >= 5) dom.addClass(col, colClass[0]);else dom.addClass(col, colClass[1]);\r\n }\r\n\r\n if (cellCount === 9) {\r\n // 2, 2, 2, 1, 1, 1, 1, 1, 1\r\n if (n >= 4) dom.addClass(col, colClass[0]);else dom.addClass(col, colClass[1]);\r\n }\r\n\r\n if (cellCount === 10) {\r\n // 2, 2, 1, 1, 1, 1, 1, 1, 1, 1\r\n if (n >= 3) dom.addClass(col, colClass[0]);else dom.addClass(col, colClass[1]);\r\n }\r\n\r\n if (cellCount === 11) {\r\n // 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1\r\n if (n >= 2) dom.addClass(col, colClass[0]);else dom.addClass(col, colClass[1]);\r\n }\r\n\r\n if (cellCount === 12) dom.addClass(col, colClass[0]); // 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1\r\n });\r\n }\r\n }\r\n }, {\r\n key: \"addContent\",\r\n value: function addContent(html, mode, attr) {\r\n var dom = new Dom();\r\n\r\n if (this.builder.opts.onAdd) {\r\n html = this.builder.opts.onAdd(html);\r\n }\r\n\r\n var cell = this.cellSelected();\r\n var row;\r\n\r\n if (!cell) {\r\n // If no active cell, check if it is from .row-add-initial (empty info)\r\n row = document.querySelector('.row-active');\r\n if (!row) return;else {\r\n // Empty content will always use 'row' mode to insert block.\r\n mode = 'row';\r\n }\r\n } else {\r\n row = cell.parentNode;\r\n }\r\n\r\n if (mode === 'cell' || mode === 'cell-left' || mode === 'cell-right') {\r\n var maxCols = 4;\r\n\r\n if (this.builder.maxColumns) {\r\n maxCols = this.builder.maxColumns;\r\n } //Limit up to 4 cells in a row\r\n\r\n\r\n if (row.childElementCount >= maxCols + 2) {\r\n //+2 => includes is-row-tool & is-rowadd-tool\r\n alert(this.out('You have reached the maximum number of columns'));\r\n return false;\r\n }\r\n\r\n this.builder.uo.saveForUndo();\r\n var cellElement;\r\n\r\n if (this.builder.opts.row === '') {\r\n // TODO: Test using in old Insite\r\n var s = this.builder.opts.cellFormat;\r\n var pos = s.indexOf(' 0) {\r\n targetrow = targetrow[0];\r\n\r\n if (dom.elementChildren(targetrow).length > 0) {\r\n targetrow = dom.elementChildren(targetrow);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n targetrow.innerHTML = html;\r\n _cellElement = targetrow.firstChild;\r\n\r\n if (attr) {\r\n _cellElement.setAttribute(attr, '');\r\n }\r\n } else {\r\n _cellElement = dom.createElement('div');\r\n dom.addClass(_cellElement, this.builder.opts.cols[this.builder.opts.cols.length - 1]);\r\n _cellElement.innerHTML = html;\r\n\r\n if (attr) {\r\n _cellElement.setAttribute(attr, '');\r\n }\r\n\r\n rowElement = dom.createElement('div');\r\n dom.addClass(rowElement, this.builder.opts.row);\r\n dom.appendChild(rowElement, _cellElement);\r\n }\r\n\r\n row.parentNode.insertBefore(rowElement, row);\r\n dom.moveAfter(rowElement, row);\r\n this.builder.applyBehavior();\r\n\r\n _cellElement.click(); //change active block to the newly created\r\n\r\n }\r\n\r\n if (mode === 'elm') {\r\n var elm = this.builder.activeElement; // See elementtool.js line 195-196. // document.querySelector('.elm-active');\r\n\r\n if (!elm) return;\r\n this.builder.uo.saveForUndo();\r\n var element = elm; // while(!dom.hasClass(element.parentNode, 'cell-active')) {\r\n // element = element.parentNode;\r\n // }\r\n\r\n element.insertAdjacentHTML('afterend', html);\r\n this.builder.applyBehavior();\r\n var newelement = element.nextElementSibling;\r\n\r\n if (newelement.tagName.toLowerCase() === 'img') {\r\n var timeoutId;\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(function () {\r\n if (newelement.complete) {\r\n newelement.click(); //console.log(2);\r\n }\r\n }, 200);\r\n } else {\r\n newelement.click();\r\n } // LATER: auto scroll\r\n // LATER: If image, then it needs time to load (resulting incorrect position), so hide element tool. \r\n\r\n } // Call onChange\r\n\r\n\r\n this.builder.opts.onChange();\r\n } // https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro\r\n\r\n }, {\r\n key: \"htmlToElement\",\r\n value: function htmlToElement(html) {\r\n var template = document.createElement('template');\r\n html = html.trim(); // Never return a text node of whitespace as the result\r\n\r\n template.innerHTML = html;\r\n return template.content.firstChild;\r\n }\r\n }, {\r\n key: \"addSnippet\",\r\n value: function addSnippet(html, bSnippet, noedit) {\r\n var _this3 = this;\r\n\r\n this.builder.uo.saveForUndo();\r\n var dom = new Dom();\r\n var rowElement;\r\n var bAddLast = false;\r\n var cell;\r\n var cellElement;\r\n var columnTool;\r\n var builderStuff = this.builderStuff();\r\n var quickadd = builderStuff.querySelector('.quickadd');\r\n var mode = quickadd.getAttribute('data-mode');\r\n\r\n if (bSnippet && (mode === 'cell' || mode === 'cell-left' || mode === 'cell-right')) {\r\n if (noedit) {\r\n this.addContent(html, mode, 'data-noedit');\r\n } else {\r\n this.addContent(html, mode);\r\n }\r\n\r\n return;\r\n } else if (bSnippet && mode === 'row') {\r\n /*\r\n Buttons, line, social, video, map (Grid layout not included).\r\n Can be inserted after current row, cell, element, or last row.\r\n */\r\n // NEW: See contentbuilder.js line 328\r\n // OLD: See contentbuilder-jquery.js addSnippet() line 16529\r\n // Just snippet (without row/column grid), ex. buttons, line, social, video, map.\r\n // Can be inserted after current row, column (cell), element, or last row.\r\n // html = `
${html}
`;\r\n // OR like addContent() in util.js line 245)\r\n cellElement = document.createElement('div');\r\n cellElement.className = this.builder.opts.cols[this.builder.opts.cols.length - 1];\r\n cellElement.innerHTML = html;\r\n\r\n if (noedit) {\r\n cellElement.setAttribute('data-noedit', '');\r\n }\r\n\r\n rowElement = document.createElement('div');\r\n rowElement.className = this.builder.opts.row;\r\n rowElement.appendChild(cellElement); // Add after selected row\r\n\r\n cell = this.builder.cellSelected();\r\n var row;\r\n\r\n if (cell) {\r\n row = cell.parentNode;\r\n } else {\r\n // If no active cell, check if it is from .row-add-initial (empty info)\r\n row = document.querySelector('.row-active');\r\n\r\n if (!row) {\r\n bAddLast = true;\r\n }\r\n } // Add after last row\r\n\r\n\r\n if (bAddLast) {\r\n var nodes = document.querySelectorAll('.is-builder');\r\n var last = nodes[nodes.length - 1];\r\n var rows = dom.elementChildren(last);\r\n var lastrow = rows[rows.length - 1];\r\n row = lastrow;\r\n }\r\n\r\n row.parentNode.insertBefore(rowElement, row);\r\n dom.moveAfter(rowElement, row);\r\n this.builder.applyBehavior();\r\n cellElement.click(); //change active block to the newly created\r\n // Change to row selection\r\n\r\n rowElement.className = rowElement.className.replace('row-outline', ''); // columnTool = parent.document.querySelector('.is-column-tool');\r\n\r\n columnTool = document.querySelector('.is-column-tool');\r\n columnTool.className = columnTool.className.replace('active', '');\r\n } else {\r\n /*\r\n Complete with grid layout. Also may containes custom script(data-html)\r\n Can be inserted after current row or last row.\r\n */\r\n // NEW: See contentbuilder.js line 341 AND contentbuilder-jquery.js (addContentMore) line 11526\r\n // OLD: See contentbuilder-jquery.js (addContentMore) line 11526\r\n // Snippet is wrapped in row/colum (may contain custom code or has [data-html] attribute)\r\n // Can only be inserted after current row or last row (not on column or element).\r\n var snippet = document.createElement('div');\r\n snippet.innerHTML = html;\r\n var blocks = snippet.querySelectorAll('[data-html]');\r\n Array.prototype.forEach.call(blocks, function (block) {\r\n // Render custom code block\r\n html = decodeURIComponent(block.getAttribute('data-html'));\r\n html = html.replace(/{id}/g, _this3.makeId());\r\n\r\n for (var i = 1; i <= 20; i++) {\r\n html = html.replace('[%HTML' + i + '%]', block.getAttribute('data-html-' + i) === undefined ? '' : decodeURIComponent(block.getAttribute('data-html-' + i))); //render editable area\r\n }\r\n\r\n block.innerHTML = html;\r\n }); //html = snippet.innerHTML; \r\n // Add after selected row\r\n\r\n cell = this.builder.activeCol;\r\n\r\n var _row;\r\n\r\n if (cell) {\r\n _row = cell.parentNode; // in email mode, cell active is also under row active (incorrect, but cell active is not needed in email mode. So this line works!)\r\n } else {\r\n // If no active cell, check if it is from .row-add-initial (empty info)\r\n _row = document.querySelector('.row-active');\r\n\r\n if (!_row) {\r\n bAddLast = true;\r\n }\r\n } // Add after last row\r\n\r\n\r\n if (bAddLast) {\r\n var _nodes = document.querySelectorAll('.is-builder');\r\n\r\n var _last = _nodes[_nodes.length - 1];\r\n\r\n var _rows = dom.elementChildren(_last);\r\n\r\n var _lastrow = _rows[_rows.length - 1];\r\n _row = _lastrow;\r\n } // Use createContextualFragment() to make embedded script executable\r\n // https://ghinda.net/article/script-tags/\r\n\r\n\r\n var range = document.createRange();\r\n\r\n _row.parentNode.insertBefore(range.createContextualFragment(snippet.innerHTML), _row.nextSibling);\r\n\r\n rowElement = snippet.childNodes[0]; // Auto scroll\r\n\r\n var y = _row.getBoundingClientRect().top + _row.offsetHeight + window.pageYOffset - 120;\r\n window.scroll({\r\n top: y,\r\n behavior: 'smooth'\r\n }); // window.scrollTo(0, y);\r\n\r\n rowElement = _row.nextElementSibling; // a must. Must be before applyBehavior() to prevent element delete during fixLayout\r\n\r\n this.builder.applyBehavior(); // checkEmpty & onRender called here\r\n\r\n cellElement = rowElement.childNodes[0];\r\n cellElement.click(); //change active block to the newly created\r\n // Change to row selection\r\n\r\n rowElement.className = rowElement.className.replace('row-outline', ''); // columnTool = parent.document.querySelector('.is-column-tool');\r\n\r\n columnTool = document.querySelector('.is-column-tool');\r\n columnTool.className = columnTool.className.replace('active', '');\r\n } // Call onChange\r\n\r\n\r\n this.builder.opts.onChange();\r\n }\r\n }, {\r\n key: \"clearActiveCell\",\r\n value: function clearActiveCell() {\r\n // this.builder.lastActiveCol = this.cellSelected(); // get active cell before cleared (will be used by snippets dialog)\r\n var dom = new Dom();\r\n var divs = document.getElementsByClassName('cell-active');\r\n\r\n while (divs.length) {\r\n divs[0].classList.remove('cell-active');\r\n }\r\n\r\n divs = document.getElementsByClassName('row-outline');\r\n\r\n while (divs.length) {\r\n divs[0].classList.remove('row-outline');\r\n }\r\n\r\n divs = document.getElementsByClassName('row-active');\r\n\r\n while (divs.length) {\r\n divs[0].classList.remove('row-active');\r\n }\r\n\r\n divs = document.getElementsByClassName('builder-active');\r\n\r\n while (divs.length) {\r\n divs[0].classList.remove('builder-active');\r\n }\r\n\r\n var builderStuff = this.builderStuff();\r\n\r\n if (builderStuff) {\r\n var columnTool = builderStuff.querySelector('.is-column-tool');\r\n dom.removeClass(columnTool, 'active');\r\n var elmTool = builderStuff.querySelector('.is-element-tool');\r\n elmTool.style.display = '';\r\n }\r\n\r\n this.builder.activeCol = null;\r\n }\r\n }, {\r\n key: \"clearAfterUndoRedo\",\r\n value: function clearAfterUndoRedo() {\r\n var dom = new Dom();\r\n var builderStuff = this.builderStuff();\r\n var tools = builderStuff.querySelectorAll('.is-tool');\r\n Array.prototype.forEach.call(tools, function (tool) {\r\n tool.style.display = '';\r\n });\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n this.builder.activeSpacer = null;\r\n this.builder.activeCodeBlock = null;\r\n this.builder.activeLink = null;\r\n this.builder.activeIframe = null;\r\n this.builder.activeTd = null;\r\n this.builder.activeTable = null;\r\n this.builder.activeModule = null;\r\n var icons = document.querySelectorAll('.icon-active');\r\n Array.prototype.forEach.call(icons, function (icon) {\r\n dom.removeClass(icon, 'icon-active');\r\n });\r\n this.builder.activeIcon = null; // RTE\r\n\r\n var rteTool = builderStuff.querySelector('.is-rte-tool'); // rteTool.style.display = 'none';\r\n\r\n var rteButtons = rteTool.querySelectorAll('button');\r\n Array.prototype.forEach.call(rteButtons, function (rteButton) {\r\n dom.removeClass(rteButton, 'on');\r\n });\r\n var elementRteTool = builderStuff.querySelector('.is-elementrte-tool'); // rteTool.style.display = 'none';\r\n\r\n rteButtons = elementRteTool.querySelectorAll('button');\r\n Array.prototype.forEach.call(rteButtons, function (rteButton) {\r\n dom.removeClass(rteButton, 'on');\r\n });\r\n var pops = builderStuff.querySelectorAll('.is-pop');\r\n Array.prototype.forEach.call(pops, function (pop) {\r\n pop.style.display = '';\r\n });\r\n }\r\n }, {\r\n key: \"hideControls\",\r\n value: function hideControls() {\r\n var builderStuff = this.builderStuff();\r\n var tools = builderStuff.querySelectorAll('.is-tool');\r\n Array.prototype.forEach.call(tools, function (tool) {\r\n tool.style.display = '';\r\n });\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n }\r\n }, {\r\n key: \"clearControls\",\r\n value: function clearControls() {\r\n var dom = new Dom();\r\n var builderStuff = this.builderStuff();\r\n if (!builderStuff) return; // in case the builder is destroyed\r\n\r\n var tools = builderStuff.querySelectorAll('.is-tool');\r\n Array.prototype.forEach.call(tools, function (tool) {\r\n tool.style.display = '';\r\n });\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n this.builder.activeSpacer = null;\r\n this.builder.activeCodeBlock = null;\r\n this.builder.activeLink = null;\r\n this.builder.activeIframe = null;\r\n this.builder.activeTd = null;\r\n this.builder.activeTable = null;\r\n this.builder.activeModule = null;\r\n this.builder.activeImage = null;\r\n var icons = document.querySelectorAll('.icon-active');\r\n Array.prototype.forEach.call(icons, function (icon) {\r\n dom.removeClass(icon, 'icon-active');\r\n });\r\n this.builder.activeIcon = null; // show iframe overlay to make it clickable\r\n\r\n var ovls = document.querySelectorAll('.ovl');\r\n Array.prototype.forEach.call(ovls, function (ovl) {\r\n ovl.style.display = 'block';\r\n }); // Element Panel & Snippets sidebar\r\n\r\n var panels = builderStuff.querySelectorAll('.is-side.elementstyles');\r\n Array.prototype.forEach.call(panels, function (panel) {\r\n dom.removeClass(panel, 'active');\r\n }); // Element Panel things\r\n\r\n var elms = document.querySelectorAll('[data-saveforundo]');\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n elm.removeAttribute('data-saveforundo');\r\n });\r\n elms = document.querySelectorAll('.elm-inspected');\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n dom.removeClass(elm, 'elm-inspected');\r\n }); // RTE\r\n\r\n var rtetool = builderStuff.querySelector('.is-rte-tool');\r\n if (rtetool) rtetool.style.display = 'none';\r\n var elementRtetool = builderStuff.querySelector('.is-elementrte-tool');\r\n if (elementRtetool) elementRtetool.style.display = 'none'; // Element\r\n\r\n elms = document.querySelectorAll('.elm-active');\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n dom.removeClass(elm, 'elm-active');\r\n }); // let rtepops = builderStuff.querySelectorAll('.is-rte-pop');\r\n // Array.prototype.forEach.call(rtepops, (rtepop) => {\r\n // rtepop.style.display = '';\r\n // dom.removeClass(rtepop,'active');\r\n // dom.addClass(rtepop, 'deactive');\r\n // });\r\n // let pops = builderStuff.querySelectorAll('.is-pop');\r\n // Array.prototype.forEach.call(pops, (pop) => {\r\n // pop.style.display = '';\r\n // });\r\n } // source: http://stackoverflow.com/questions/1349404/generate-a-string-of-5-random-characters-in-javascript\r\n\r\n }, {\r\n key: \"makeId\",\r\n value: function makeId() {\r\n var text = '';\r\n var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\r\n\r\n for (var i = 0; i < 2; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n var text2 = '';\r\n var possible2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n for (var _i2 = 0; _i2 < 5; _i2++) {\r\n text2 += possible2.charAt(Math.floor(Math.random() * possible2.length));\r\n }\r\n\r\n return text + text2;\r\n } // source: http://stackoverflow.com/questions/5605401/insert-link-in-contenteditable-element \r\n\r\n }, {\r\n key: \"saveSelection\",\r\n value: function saveSelection() {\r\n if (window.getSelection) {\r\n var sel = window.getSelection();\r\n\r\n if (sel.getRangeAt && sel.rangeCount) {\r\n var ranges = [];\r\n\r\n for (var i = 0, len = sel.rangeCount; i < len; ++i) {\r\n ranges.push(sel.getRangeAt(i));\r\n }\r\n\r\n this.builder.selection = ranges;\r\n return ranges;\r\n }\r\n } else if (document.selection && document.selection.createRange) {\r\n this.builder.selection = document.selection.createRange();\r\n return document.selection.createRange();\r\n }\r\n\r\n this.builder.selection = null;\r\n return null;\r\n }\r\n }, {\r\n key: \"restoreSelection\",\r\n value: function restoreSelection() {\r\n var savedSel = this.builder.selection;\r\n\r\n if (savedSel) {\r\n if (window.getSelection) {\r\n var sel = window.getSelection(); // sel.removeAllRanges();\r\n\r\n if (document.body.createTextRange) {\r\n // All IE but Edge\r\n var range = document.body.createTextRange();\r\n range.collapse();\r\n range.select();\r\n } else if (window.getSelection) {\r\n if (window.getSelection().empty) {\r\n window.getSelection().empty();\r\n } else if (window.getSelection().removeAllRanges) {\r\n window.getSelection().removeAllRanges();\r\n }\r\n } else if (document.selection) {\r\n document.selection.empty();\r\n }\r\n\r\n for (var i = 0, len = savedSel.length; i < len; ++i) {\r\n sel.addRange(savedSel[i]);\r\n }\r\n } else if (document.selection && savedSel.select) {\r\n savedSel.select();\r\n }\r\n }\r\n } // Clean Word. Source: \r\n // http://patisserie.keensoftware.com/en/pages/remove-word-formatting-from-rich-text-editor-with-javascript\r\n // http://community.sitepoint.com/t/strip-unwanted-formatting-from-pasted-content/16848/3\r\n // http://www.1stclassmedia.co.uk/developers/clean-ms-word-formatting.php\r\n\r\n }, {\r\n key: \"cleanHTML\",\r\n value: function cleanHTML(input, cleanstyle) {\r\n var stringStripper = /(\\n|\\r| class=(\")?Mso[a-zA-Z]+(\")?)/g;\r\n var output = input.replace(stringStripper, ' ');\r\n var commentSripper = new RegExp('', 'g');\r\n output = output.replace(commentSripper, '');\r\n var tagStripper;\r\n\r\n if (cleanstyle) {\r\n tagStripper = new RegExp('<(/)*(meta|link|span|\\\\?xml:|st1:|o:|font)(.*?)>', 'gi');\r\n } else {\r\n tagStripper = new RegExp('<(/)*(meta|link|\\\\?xml:|st1:|o:|font)(.*?)>', 'gi');\r\n }\r\n\r\n output = output.replace(tagStripper, '');\r\n var badTags = ['style', 'script', 'applet', 'embed', 'noframes', 'noscript'];\r\n\r\n for (var i = 0; i < badTags.length; i++) {\r\n tagStripper = new RegExp('<' + badTags[i] + '.*?' + badTags[i] + '(.*?)>', 'gi');\r\n output = output.replace(tagStripper, '');\r\n }\r\n\r\n var badAttributes;\r\n\r\n if (cleanstyle) {\r\n badAttributes = ['style', 'start'];\r\n } else {\r\n badAttributes = ['start'];\r\n }\r\n\r\n for (var _i3 = 0; _i3 < badAttributes.length; _i3++) {\r\n var attributeStripper = new RegExp(' ' + badAttributes[_i3] + '=\"(.*?)\"', 'gi');\r\n output = output.replace(attributeStripper, '');\r\n } // https://gist.github.com/sbrin/6801034\r\n //output = output.replace(//gi, ''); //done (see above)\r\n //output = output.replace(/<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi, '');\r\n\r\n\r\n output = output.replace(/<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s/>]))[^>]*>/gi, '');\r\n output = output.replace(/<(\\/?)s>/gi, '<$1strike>');\r\n output = output.replace(/ /gi, ' '); //output = output.replace(/([\\s\\u00a0]*)<\\/span>/gi, function(str, spaces) {\r\n // return (spaces.length > 0) ? spaces.replace(/./, \" \").slice(Math.floor(spaces.length/2)).split(\"\").join(\"\\u00a0\") : '';\r\n //});\r\n //clean copied elm-active background-color (LATER: improve)\r\n\r\n output = output.replace(/background-color: rgba\\(200, 200, 201, 0.11\\);/gi, '');\r\n output = output.replace(/background-color: rgba\\(200, 200, 201, 0.11\\)/gi, '');\r\n return output;\r\n }\r\n }, {\r\n key: \"checkEmpty\",\r\n value: function checkEmpty() {\r\n var _this4 = this;\r\n\r\n var dom = new Dom(); // Get all builder areas\r\n\r\n var builders = document.querySelectorAll(this.builder.opts.container);\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n var rows = dom.elementChildren(builder);\r\n var empty = true;\r\n rows.forEach(function (row) {\r\n if (dom.hasClass(row, 'row-add-initial')) return;\r\n if (dom.hasClass(row, 'dummy-space')) return;\r\n empty = false;\r\n });\r\n\r\n if (empty) {\r\n var emptyinfo = builder.querySelector('.row-add-initial');\r\n\r\n if (!emptyinfo) {\r\n builder.innerHTML = \"
\");\r\n emptyinfo = builder.querySelector('.row-add-initial');\r\n }\r\n\r\n emptyinfo.addEventListener('click', function () {\r\n _this4.clearActiveCell();\r\n\r\n dom.addClass(emptyinfo, 'row-active'); // Needed for addContent(). Directly apply class in Util is fine.\r\n\r\n var builderStuff = _this4.builderStuff();\r\n\r\n var quickadd = builderStuff.querySelector('.quickadd'); // see quickadd.js. Directly select by class in Util is fine.\r\n\r\n var tabs = quickadd.querySelector('.is-pop-tabs');\r\n tabs.style.display = 'none';\r\n var viewportHeight = window.innerHeight;\r\n var top = emptyinfo.getBoundingClientRect().top;\r\n var left = emptyinfo.getBoundingClientRect().left + emptyinfo.offsetWidth / 2 - 11;\r\n quickadd.style.display = 'flex';\r\n var w = quickadd.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n\r\n var h = quickadd.offsetHeight;\r\n\r\n if (viewportHeight - top > h) {\r\n top = top + emptyinfo.offsetHeight - 19;\r\n quickadd.style.top = top + window.pageYOffset + 27 + 'px';\r\n quickadd.style.left = left - w / 2 + 7 + 'px';\r\n dom.removeClass(quickadd, 'arrow-bottom');\r\n dom.removeClass(quickadd, 'arrow-right');\r\n dom.removeClass(quickadd, 'arrow-left');\r\n dom.removeClass(quickadd, 'center');\r\n dom.addClass(quickadd, 'arrow-top');\r\n dom.addClass(quickadd, 'center');\r\n } else {\r\n quickadd.style.top = top + window.pageYOffset - h - 8 + 'px';\r\n quickadd.style.left = left - w / 2 + 7 + 'px';\r\n dom.removeClass(quickadd, 'arrow-top');\r\n dom.removeClass(quickadd, 'arrow-right');\r\n dom.removeClass(quickadd, 'arrow-left');\r\n dom.removeClass(quickadd, 'center');\r\n dom.addClass(quickadd, 'arrow-bottom');\r\n dom.addClass(quickadd, 'center');\r\n }\r\n\r\n quickadd.setAttribute('data-mode', 'row');\r\n });\r\n } else {\r\n var _emptyinfo = builder.querySelector('.row-add-initial');\r\n\r\n if (_emptyinfo) _emptyinfo.parentNode.removeChild(_emptyinfo);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"clearPreferences\",\r\n value: function clearPreferences() {\r\n localStorage.removeItem('_buildermode'); //builderMode\r\n\r\n localStorage.removeItem('_editingtoolbar'); //toolbar\r\n\r\n localStorage.removeItem('_editingtoolbardisplay'); //toolbarDisplay\r\n\r\n localStorage.removeItem('_hidecelltool'); //columnTool\r\n\r\n localStorage.removeItem('_rowtool'); //rowTool\r\n\r\n localStorage.removeItem('_hideelementtool'); //elementTool\r\n\r\n localStorage.removeItem('_hidesnippetaddtool'); //snippetAddTool\r\n\r\n localStorage.removeItem('_outlinemode'); //outlineMode\r\n\r\n localStorage.removeItem('_hiderowcoloutline'); //rowcolOutline\r\n\r\n localStorage.removeItem('_outlinestyle'); //outlineStyle\r\n\r\n localStorage.removeItem('_hideelementhighlight'); //elementHighlight\r\n\r\n localStorage.removeItem('_opensnippets'); //snippetOpen\r\n\r\n localStorage.removeItem('_toolstyle'); //toolStyle\r\n\r\n localStorage.removeItem('_snippetssidebardisplay'); //snippetsSidebarDisplay\r\n\r\n localStorage.removeItem('_pasteresult'); //DON'T HAVE PROP\r\n //NOT USED\r\n\r\n localStorage.removeItem('_scrollableeditor');\r\n localStorage.removeItem('_animatedsorting');\r\n localStorage.removeItem('_addbuttonplace');\r\n localStorage.removeItem('_hiderowtool');\r\n localStorage.removeItem('_dragwithouthandle');\r\n localStorage.removeItem('_advancedhtmleditor');\r\n localStorage.removeItem('_hidecolhtmleditor');\r\n localStorage.removeItem('_hiderowhtmleditor');\r\n } // source: http://stackoverflow.com/questions/6690752/insert-html-at-caret-in-a-contenteditable-div */\r\n\r\n }, {\r\n key: \"pasteHtmlAtCaret\",\r\n value: function pasteHtmlAtCaret(html, selectPastedContent) {\r\n this.restoreSelection();\r\n var sel, range;\r\n\r\n if (window.getSelection) {\r\n if (!this.builder.activeCol) return;\r\n sel = window.getSelection();\r\n\r\n if (sel.getRangeAt && sel.rangeCount) {\r\n range = sel.getRangeAt(0);\r\n range.deleteContents();\r\n var el = document.createElement('div');\r\n el.innerHTML = html;\r\n var frag = document.createDocumentFragment(),\r\n node,\r\n lastNode;\r\n\r\n while (node = el.firstChild) {\r\n lastNode = frag.appendChild(node);\r\n }\r\n\r\n var firstNode = frag.firstChild;\r\n range.insertNode(frag);\r\n\r\n if (lastNode) {\r\n range = range.cloneRange();\r\n range.setStartAfter(lastNode);\r\n\r\n if (selectPastedContent) {\r\n range.setStartBefore(firstNode);\r\n } else {\r\n range.collapse(true);\r\n }\r\n\r\n sel.removeAllRanges();\r\n if (!this.builder.isTouchSupport) sel.addRange(range);\r\n }\r\n }\r\n } else if ((sel = document.selection) && sel.type !== 'Control') {\r\n if (!this.builder.activeCol) return;\r\n var originalRange = sel.createRange();\r\n originalRange.collapse(true);\r\n sel.createRange().pasteHTML(html);\r\n\r\n if (selectPastedContent) {\r\n range = sel.createRange();\r\n range.setEndPoint('StartToStart', originalRange);\r\n if (!this.builder.isTouchSupport) range.select();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"refreshModule\",\r\n value: function refreshModule() {\r\n var module = this.builder.activeModule;\r\n if (!module) return;\r\n var index = 1;\r\n var subblocks = module.querySelectorAll('[data-subblock]');\r\n Array.prototype.forEach.call(subblocks, function (subblock) {\r\n var builderhtml = subblock.innerHTML;\r\n module.setAttribute('data-html-' + index, encodeURIComponent(builderhtml));\r\n index++;\r\n });\r\n var html = decodeURIComponent(module.getAttribute('data-html'));\r\n html = html.replace(/{id}/g, this.makeId());\r\n module.innerHTML = '';\r\n var range = document.createRange();\r\n range.setStart(module, 0);\r\n module.appendChild(range.createContextualFragment(html));\r\n subblocks = module.querySelectorAll('[data-subblock]');\r\n var i = 1;\r\n Array.prototype.forEach.call(subblocks, function (subblock) {\r\n if (module.getAttribute('data-html-' + i)) {\r\n subblock.innerHTML = decodeURIComponent(module.getAttribute('data-html-' + i));\r\n }\r\n\r\n i++;\r\n });\r\n }\r\n }, {\r\n key: \"isTouchSupport\",\r\n value: function isTouchSupport() {\r\n if ('ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } // source: https://stackoverflow.com/questions/4617638/detect-ipad-users-using-jquery\r\n // isAppleMobile() {\r\n // if (navigator && navigator.userAgent && navigator.userAgent !== null) {\r\n // var strUserAgent = navigator.userAgent.toLowerCase();\r\n // var arrMatches = strUserAgent.match(/(iphone|ipod|ipad)/);\r\n // if (arrMatches !== null) return true;\r\n // }\r\n // return false;\r\n // }\r\n // https://stackoverflow.com/questions/31757852/how-can-i-detect-internet-explorer-ie-and-microsoft-edge-using-javascript\r\n\r\n }, {\r\n key: \"detectIE\",\r\n value: function detectIE() {\r\n var ua = window.navigator.userAgent;\r\n var msie = ua.indexOf('MSIE ');\r\n\r\n if (msie > 0) {\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n\r\n if (trident > 0) {\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n\r\n if (edge > 0) {\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n return false;\r\n } // Source: https://css-tricks.com/snippets/javascript/lighten-darken-color/\r\n\r\n }, {\r\n key: \"LightenDarkenColor\",\r\n value: function LightenDarkenColor(col, amt) {\r\n var usePound = false;\r\n\r\n if (col[0] === '#') {\r\n col = col.slice(1);\r\n usePound = true;\r\n }\r\n\r\n var num = parseInt(col, 16);\r\n var r = (num >> 16) + amt;\r\n if (r > 255) r = 255;else if (r < 0) r = 0;\r\n var b = (num >> 8 & 0x00FF) + amt;\r\n if (b > 255) b = 255;else if (b < 0) b = 0;\r\n var g = (num & 0x0000FF) + amt;\r\n if (g > 255) g = 255;else if (g < 0) g = 0; //return (usePound ? '#' : '') + (g | (b << 8) | (r << 16)).toString(16);\r\n\r\n return (usePound ? '#' : '') + String('000000' + (g | b << 8 | r << 16).toString(16)).slice(-6);\r\n }\r\n }, {\r\n key: \"getFontFamilyHTML\",\r\n value: function getFontFamilyHTML() {\r\n if(this.builder.opts.allowFonts) {\r\n // let path = this.builder.scriptPath + 'fonts/';\r\n var path = this.builder.fontAssetPath;\r\n var html = \"\\n \\n \\n \\n \\n Fonts\\n \\n \\n \\n \\n \\n\\n
\\n
None
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \");\r\n return html;\r\n }\r\n }\r\n }, {\r\n key: \"getFontFamilyEmail\",\r\n value: function getFontFamilyEmail() {\r\n if (this.builder.opts.allowFonts) {\r\n // let path = this.builder.scriptPath + 'fonts/';\r\n var path = this.builder.fontAssetPath;\r\n var html = \"\\n \\n \\n \\n \\n Fonts\\n \\n \\n \\n \\n \\n\\n
\\n
None
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \");\r\n return html;\r\n }\r\n }\r\n }]);\r\n\r\n return Util;\r\n }();\r\n var Dom = /*#__PURE__*/function () {\r\n function Dom() {\r\n _classCallCheck$1(this, Dom);\r\n }\r\n\r\n _createClass$1(Dom, [{\r\n key: \"createElement\",\r\n value: function createElement(tag) {\r\n return document.createElement(tag);\r\n }\r\n }, {\r\n key: \"appendChild\",\r\n value: function appendChild(parent, child) {\r\n parent.appendChild(child);\r\n }\r\n }, {\r\n key: \"appendHtml\",\r\n value: function appendHtml(parent, html) {\r\n parent.insertAdjacentHTML('beforeend', html);\r\n }\r\n }, {\r\n key: \"addEventListener\",\r\n value: function addEventListener(parent, type, listener) {\r\n //LATER: if(parent) \r\n parent.addEventListener(type, listener);\r\n }\r\n }, {\r\n key: \"addClass\",\r\n value: function addClass(element, classname) {\r\n if (!element) return;\r\n if (this.hasClass(element, classname)) return;\r\n if (element.classList.length === 0) element.className = classname;else element.className = element.className + ' ' + classname;\r\n element.className = element.className.replace(/ +/g, ' '); //else element.classList.add(classname); //error if there is -\r\n }\r\n }, {\r\n key: \"removeClass\",\r\n value: function removeClass(element, classname) {\r\n if (!element) return;\r\n\r\n if (element.classList.length > 0) {\r\n // element.className = element.className.replace(new RegExp('\\\\b'+ classname+'\\\\b', 'g'), '');\r\n // element.className = element.className.replace(/ +/g, ' ');\r\n var i, j, imax, jmax;\r\n var classesToDel = classname.split(' ');\r\n\r\n for (i = 0, imax = classesToDel.length; i < imax; ++i) {\r\n if (!classesToDel[i]) continue;\r\n var classtoDel = classesToDel[i]; // https://jsperf.com/removeclass-methods \r\n\r\n var sClassName = '';\r\n var currentClasses = element.className.split(' ');\r\n\r\n for (j = 0, jmax = currentClasses.length; j < jmax; ++j) {\r\n if (!currentClasses[j]) continue;\r\n if (currentClasses[j] !== classtoDel) sClassName += currentClasses[j] + ' ';\r\n }\r\n\r\n element.className = sClassName.trim();\r\n }\r\n\r\n if (element.className === '') element.removeAttribute('class');\r\n }\r\n } // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\r\n // addClass(element, classname) {\r\n // console.log(element.classList)\r\n // if (element.classList) element.classList.add(classname);\r\n // else if (!this.hasClass(element, classname)) element.className += ' ' + classname;\r\n // }\r\n // removeClass(element, classname) {\r\n // if (element.classList) element.classList.remove(classname);\r\n // else element.className = element.className.replace(new RegExp('\\\\b'+ classname+'\\\\b', 'g'), '');\r\n // }\r\n\r\n }, {\r\n key: \"hasClass\",\r\n value: function hasClass(element, classname) {\r\n if (!element) return false;\r\n\r\n try {\r\n var s = element.getAttribute('class');\r\n return new RegExp('\\\\b' + classname + '\\\\b').test(s);\r\n } catch (e) {// Do Nothing\r\n // console.log(element);\r\n } //return element.classList ? element.classList.contains(classname) : new RegExp('\\\\b'+ classname+'\\\\b').test(element.className);\r\n\r\n }\r\n }, {\r\n key: \"moveAfter\",\r\n value: function moveAfter(element, targetElement) {\r\n targetElement.parentNode.insertBefore(element, targetElement);\r\n targetElement.parentNode.insertBefore(targetElement, targetElement.previousElementSibling);\r\n } // https://stackoverflow.com/questions/10381296/best-way-to-get-child-nodes\r\n\r\n }, {\r\n key: \"elementChildren\",\r\n value: function elementChildren(element) {\r\n var childNodes = element.childNodes;\r\n var children = [];\r\n var i = childNodes.length;\r\n\r\n while (i--) {\r\n if (childNodes[i].nodeType === 1\r\n /*&& childNodes[i].tagName === 'DIV'*/\r\n ) {\r\n children.unshift(childNodes[i]);\r\n }\r\n }\r\n\r\n return children;\r\n }\r\n }, {\r\n key: \"parentsHasClass\",\r\n value: function parentsHasClass(element, classname) {\r\n while (element) {\r\n // if(classname==='is-side') console.log(element.nodeName); // NOTE: click on svg can still returns undefined in IE11\r\n if (!element.tagName) return false;\r\n if (element.tagName === 'BODY' || element.tagName === 'HTML') return false; // if(!element.classList) {\r\n // console.log('no classList');\r\n // return false;\r\n // }\r\n\r\n if (this.hasClass(element, classname)) {\r\n return true;\r\n } // TODO: if(element.nodeName.toLowerCase() === 'svg') console.log(element);\r\n\r\n\r\n element = element.parentNode;\r\n }\r\n }\r\n }, {\r\n key: \"parentsHasId\",\r\n value: function parentsHasId(element, id) {\r\n while (element) {\r\n if (!element.tagName) return false;\r\n if (element.tagName === 'BODY' || element.tagName === 'HTML') return false;\r\n\r\n if (element.id === id) {\r\n return true;\r\n }\r\n\r\n element = element.parentNode;\r\n }\r\n }\r\n }, {\r\n key: \"parentsHasTag\",\r\n value: function parentsHasTag(element, tagname) {\r\n while (element) {\r\n if (!element.tagName) return false;\r\n if (element.tagName === 'BODY' || element.tagName === 'HTML') return false;\r\n\r\n if (element.tagName.toLowerCase() === tagname.toLowerCase()) {\r\n return true;\r\n }\r\n\r\n element = element.parentNode;\r\n }\r\n }\r\n }, {\r\n key: \"parentsHasAttribute\",\r\n value: function parentsHasAttribute(element, attrname) {\r\n while (element) {\r\n if (!element.tagName) return false;\r\n if (element.tagName === 'BODY' || element.tagName === 'HTML') return false;\r\n\r\n try {\r\n if (element.hasAttribute(attrname)) {\r\n // error on svg element\r\n return true;\r\n }\r\n } catch (e) {// Do Nothing\r\n // console.log(element);\r\n // return false;\r\n }\r\n\r\n element = element.parentNode;\r\n }\r\n }\r\n }, {\r\n key: \"parentsHasElement\",\r\n value: function parentsHasElement(element, tagname) {\r\n while (element) {\r\n if (!element.tagName) return false;\r\n if (element.tagName === 'BODY' || element.tagName === 'HTML') return false;\r\n element = element.parentNode;\r\n if (!element) return false;\r\n if (!element.tagName) return false;\r\n\r\n if (element.tagName.toLowerCase() === tagname) {\r\n return true;\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"removeClasses\",\r\n value: function removeClasses(elms, classname) {\r\n for (var i = 0; i < elms.length; i++) {\r\n elms[i].classList.remove(classname);\r\n }\r\n }\r\n }, {\r\n key: \"removeAttributes\",\r\n value: function removeAttributes(elms, attrname) {\r\n for (var i = 0; i < elms.length; i++) {\r\n elms[i].removeAttribute(attrname);\r\n }\r\n }\r\n }, {\r\n key: \"removeElements\",\r\n value: function removeElements(elms) {\r\n Array.prototype.forEach.call(elms, function (el) {\r\n el.parentNode.removeChild(el);\r\n });\r\n } // source: https://stackoverflow.com/questions/2871081/jquery-setting-cursor-position-in-contenteditable-div\r\n\r\n }, {\r\n key: \"moveCursorToElement\",\r\n value: function moveCursorToElement(element) {\r\n var sel, range;\r\n\r\n if (window.getSelection && document.createRange) {\r\n range = document.createRange();\r\n range.selectNodeContents(element);\r\n range.collapse(false);\r\n sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n } else if (document.body.createTextRange) {\r\n range = document.body.createTextRange();\r\n range.moveToElementText(element);\r\n range.collapse(false);\r\n range.select();\r\n }\r\n } // source: https://stackoverflow.com/questions/6139107/programmatically-select-text-in-a-contenteditable-html-element\r\n\r\n }, {\r\n key: \"selectElementContents\",\r\n value: function selectElementContents(el) {\r\n var range = document.createRange();\r\n range.selectNodeContents(el);\r\n var sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n } // Get selected text\r\n\r\n }, {\r\n key: \"getSelected\",\r\n value: function getSelected() {\r\n if (window.getSelection) {\r\n return window.getSelection().toString();\r\n } else if (document.getSelection) {\r\n return document.getSelection().toString();\r\n } else {\r\n var selection = document.selection && document.selection.createRange();\r\n\r\n if (selection.text) {\r\n return selection.text;\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n }, {\r\n key: \"checkEditable\",\r\n value: function checkEditable() {\r\n try {\r\n var el;\r\n var curr;\r\n\r\n if (window.getSelection) {\r\n curr = window.getSelection().getRangeAt(0).commonAncestorContainer;\r\n\r\n if (curr.nodeType === 3) {\r\n //ini text node\r\n el = curr.parentNode;\r\n } else {\r\n el = curr;\r\n }\r\n } else if (document.selection) {\r\n curr = document.selection.createRange();\r\n el = document.selection.createRange().parentElement();\r\n }\r\n\r\n if (this.parentsHasAttribute(el, 'contenteditable')) return true;else return false;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n }, {\r\n key: \"textSelection\",\r\n value: function textSelection() {\r\n try {\r\n var elm;\r\n var curr = window.getSelection().getRangeAt(0).commonAncestorContainer; //console.log(curr.nodeType)\r\n\r\n if (curr.nodeType === 3) {\r\n // text node\r\n elm = curr.parentNode;\r\n\r\n if (this.parentsHasClass(elm, 'is-builder')) {\r\n return elm;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n elm = curr;\r\n var nodeName = elm.nodeName.toLowerCase();\r\n\r\n if (nodeName === 'i' && elm.innerHTML === '') {\r\n //icon\r\n if (this.parentsHasClass(elm, 'is-builder')) {\r\n return elm;\r\n }\r\n } // Check if a block (because when placing cursor using arrow keys on empty block, nodeType=1 not 3)\r\n\r\n\r\n if (nodeName === 'p' || nodeName === 'h1' || nodeName === 'h2' || nodeName === 'h3' || nodeName === 'h4' || nodeName === 'h5' || nodeName === 'h6' || nodeName === 'li' || nodeName === 'pre' || nodeName === 'blockquote') {\r\n return elm;\r\n }\r\n\r\n return false;\r\n }\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n }, {\r\n key: \"getStyle\",\r\n value: function getStyle(element, property) {\r\n return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) {\r\n return g[1].toUpperCase();\r\n })];\r\n }\r\n /** added by Jack */\r\n\r\n }, {\r\n key: \"doFunction\",\r\n value: function doFunction(elm, fn, incChilds) {\r\n fn(elm);\r\n\r\n if (incChilds) {\r\n var elmns = Array.prototype.slice.call(elm.getElementsByTagName('*'));\r\n\r\n for (var i = 0; i < elmns.length; i++) {\r\n fn(elmns[i]);\r\n }\r\n }\r\n } // ---\r\n\r\n }]);\r\n\r\n return Dom;\r\n }();\r\n\r\n var dom$C = new Dom();\r\n var hash$1 = {};\r\n var HtmlUtil = /*#__PURE__*/function () {\r\n function HtmlUtil(builder) {\r\n var _this = this;\r\n\r\n _classCallCheck$1(this, HtmlUtil);\r\n\r\n this.builder = builder;\r\n var util = new Util(builder);\r\n var builderstuff = util.builderStuff();\r\n var viewhtml = builderstuff.querySelector('.viewhtml');\r\n\r\n if (!viewhtml) {\r\n /*\r\n Note:\r\n - viewhtml => non syntax-highlighted. Click enlarge will open viewhtmllarger (syntax-highlighted). No enlarge toggle.\r\n - viewhtmlformatted => syntax-highlighted. Click enlarge, just make it full-screen.\r\n - viewhtmlnormal => for general purposes (can be used outside). Syntax-highlighted. Click enlarge, just make it full-screen.\r\n */\r\n var html = \"
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \");\r\n dom$C.appendHtml(builderstuff, html);\r\n viewhtml = builderstuff.querySelector('.viewhtml');\r\n var viewhtmlformatted = builderstuff.querySelector('.viewhtmlformatted');\r\n var viewhtmlnormal = builderstuff.querySelector('.viewhtmlnormal');\r\n var elm = viewhtml.querySelector('.input-html-larger');\r\n dom$C.addEventListener(elm, 'click', function () {\r\n var textarea = viewhtml.querySelector('textarea'); // Used by html dialog (syntaxhighlighting)\r\n // let elms = document.querySelectorAll('[data-source-active]');\r\n // Array.prototype.forEach.call(elms, (elm) => {\r\n // elm.removeAttribute('data-source-active');\r\n // elm.removeAttribute('data-source-ok');\r\n // elm.removeAttribute('data-source-cancel');\r\n // });\r\n\r\n textarea.setAttribute('data-source-active', '1');\r\n textarea.setAttribute('data-source-ok', '.viewhtml .input-ok');\r\n textarea.setAttribute('data-source-cancel', '.viewhtml .input-cancel');\r\n\r\n _this.viewHtmlLarger();\r\n });\r\n elm = viewhtmlformatted.querySelector('.input-html-larger');\r\n dom$C.addEventListener(elm, 'click', function () {\r\n if (dom$C.hasClass(viewhtmlformatted, 'is-modal-full')) {\r\n dom$C.removeClass(viewhtmlformatted, 'is-modal-full');\r\n } else {\r\n dom$C.addClass(viewhtmlformatted, 'is-modal-full');\r\n }\r\n });\r\n elm = viewhtmlnormal.querySelector('.input-html-larger');\r\n dom$C.addEventListener(elm, 'click', function () {\r\n if (dom$C.hasClass(viewhtmlnormal, 'is-modal-full')) {\r\n dom$C.removeClass(viewhtmlnormal, 'is-modal-full');\r\n } else {\r\n dom$C.addClass(viewhtmlnormal, 'is-modal-full');\r\n }\r\n });\r\n }\r\n }\r\n\r\n _createClass$1(HtmlUtil, [{\r\n key: \"viewHtmlNormal\",\r\n value: function viewHtmlNormal() {\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n var viewhtmlnormal = builderstuff.querySelector('.viewhtmlnormal');\r\n var iframe = viewhtmlnormal.querySelector('iframe');\r\n iframe.outerHTML = ''; //clear\r\n\r\n var doc = viewhtmlnormal.querySelector('iframe').contentWindow.document;\r\n doc.open();\r\n doc.write(this.getIframeHtml()); // use the same html as viewhtmllarger\r\n\r\n doc.close();\r\n util.showModal(viewhtmlnormal, true, null, false);\r\n }\r\n }, {\r\n key: \"viewHtmlLarger\",\r\n value: function viewHtmlLarger() {\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n var viewhtmllarger = builderstuff.querySelector('.viewhtmllarger');\r\n var iframe = viewhtmllarger.querySelector('iframe');\r\n iframe.outerHTML = ''; //clear\r\n\r\n var doc = viewhtmllarger.querySelector('iframe').contentWindow.document;\r\n doc.open();\r\n doc.write(this.getIframeHtml());\r\n doc.close();\r\n util.showModal(viewhtmllarger, true, null, false);\r\n }\r\n }, {\r\n key: \"view\",\r\n value: function view(mode, area) {\r\n var _this2 = this;\r\n\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n var viewhtml;\r\n\r\n if (this.builder.opts.htmlSyntaxHighlighting) {\r\n viewhtml = builderstuff.querySelector('.viewhtmlformatted');\r\n } else {\r\n viewhtml = builderstuff.querySelector('.viewhtml');\r\n }\r\n\r\n viewhtml.querySelector('.is-modal-footer').innerHTML = \"\\n \");\r\n util.showModal(viewhtml, true);\r\n\r\n if (mode === 'cell') {\r\n // old: 3550\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var textarea = viewhtml.querySelector('textarea');\r\n textarea.value = this.readHtml(cell, true); // for view=true\r\n }\r\n\r\n if (mode === 'row') {\r\n // old: 15534\r\n var _cell = util.cellSelected();\r\n\r\n if (!_cell) return;\r\n var row = _cell.parentNode;\r\n\r\n var _textarea = viewhtml.querySelector('textarea');\r\n\r\n _textarea.value = this.readHtml(row, true); // for view=true\r\n //Change to row selection\r\n\r\n dom$C.removeClass(row, 'row-outline'); //Hide Column tool\r\n\r\n var columnTool = builderstuff.querySelector('.is-column-tool');\r\n dom$C.removeClass(columnTool, 'active');\r\n }\r\n\r\n if (mode === 'full') {\r\n // \r\n if (area) ; else {\r\n var builders = document.querySelectorAll(this.builder.opts.container);\r\n\r\n if (builders.length > 1) {\r\n var _cell2 = util.cellSelected();\r\n\r\n if (!_cell2) {\r\n // Return first instance\r\n area = builders[0];\r\n } else {\r\n // Return active instance\r\n area = _cell2.parentNode.parentNode;\r\n }\r\n } else {\r\n // Single instance\r\n area = builders[0];\r\n }\r\n\r\n if (this.builder.opts.page !== '') {\r\n var wrapper = document.querySelector(this.builder.opts.page);\r\n\r\n if (wrapper) {\r\n //return wrapper\r\n area = wrapper;\r\n }\r\n }\r\n }\r\n\r\n var _textarea2 = viewhtml.querySelector('textarea');\r\n\r\n _textarea2.value = this.readHtml(area, true); // for view=true\r\n }\r\n\r\n var elm = viewhtml.querySelector('.input-ok');\r\n dom$C.addEventListener(elm, 'click', function () {\r\n _this2.builder.uo.saveForUndo();\r\n\r\n var textarea = viewhtml.querySelector('textarea');\r\n var html = textarea.value;\r\n html = _this2.fromViewToActual(html);\r\n\r\n if (mode === 'cell') {\r\n var _cell3 = util.cellSelected();\r\n\r\n _cell3.innerHTML = html;\r\n\r\n _this2.builder.applyBehavior(); //Trigger Change event\r\n\r\n\r\n _this2.builder.opts.onChange(); //Trigger Render event\r\n\r\n\r\n _this2.builder.opts.onRender();\r\n }\r\n\r\n if (mode === 'row') {\r\n var _cell4 = util.cellSelected();\r\n\r\n var _row = _cell4.parentNode;\r\n _row.innerHTML = html;\r\n\r\n _this2.builder.applyBehavior(); //Trigger Change event\r\n\r\n\r\n _this2.builder.opts.onChange(); //Trigger Render event\r\n\r\n\r\n _this2.builder.opts.onRender();\r\n }\r\n\r\n if (mode === 'full') {\r\n // area.innerHTML = html;\r\n area.innerHTML = ''; // Use createContextualFragment() to make embedded script executable\r\n // https://ghinda.net/article/script-tags/\r\n\r\n var range = document.createRange();\r\n range.setStart(area, 0);\r\n area.appendChild(range.createContextualFragment(html));\r\n\r\n _this2.builder.applyBehavior(); //Trigger Change event\r\n\r\n\r\n _this2.builder.opts.onChange(); //Trigger Render event\r\n\r\n\r\n _this2.builder.opts.onRender();\r\n\r\n util.clearActiveCell();\r\n }\r\n\r\n util.clearControls(); // NEW\r\n\r\n util.hideModal(viewhtml);\r\n });\r\n elm = viewhtml.querySelector('.input-cancel');\r\n dom$C.addEventListener(elm, 'click', function () {\r\n util.hideModal(viewhtml);\r\n });\r\n\r\n if (this.builder.opts.htmlSyntaxHighlighting) {\r\n var _textarea3 = viewhtml.querySelector('textarea'); // Used by html dialog (syntaxhighlighting)\r\n // let elms = document.querySelectorAll('[data-source-active]');\r\n // Array.prototype.forEach.call(elms, (elm) => {\r\n // elm.removeAttribute('data-source-active');\r\n // elm.removeAttribute('data-source-ok');\r\n // elm.removeAttribute('data-source-cancel');\r\n // });\r\n\r\n\r\n _textarea3.setAttribute('data-source-active', '1');\r\n\r\n _textarea3.setAttribute('data-source-ok', '.viewhtmlformatted .input-ok');\r\n\r\n _textarea3.setAttribute('data-source-cancel', '.viewhtmlformatted .input-cancel');\r\n\r\n var iframe = viewhtml.querySelector('iframe');\r\n iframe.outerHTML = ''; //clear\r\n\r\n var doc = viewhtml.querySelector('iframe').contentWindow.document;\r\n doc.open();\r\n doc.write(this.getIframeHtml());\r\n doc.close();\r\n } //Hide popup\r\n\r\n\r\n var columnMore = builderstuff.querySelector('.is-pop.columnmore');\r\n columnMore.style.display = '';\r\n var rowMore = builderstuff.querySelector('.is-pop.rowmore');\r\n rowMore.style.display = '';\r\n }\r\n }, {\r\n key: \"fromViewToActual\",\r\n value: function fromViewToActual(html) {\r\n for (var key in hash$1) {\r\n html = html.replace(key, hash$1[key]);\r\n }\r\n\r\n return html;\r\n }\r\n }, {\r\n key: \"readHtml\",\r\n value: function readHtml(content, view, multiple) {\r\n //view = true (hide internal attributes). view = false (actual html)\r\n //Make absolute\r\n if (this.builder.opts.absolutePath) {\r\n var _links = content.querySelectorAll('a');\r\n\r\n Array.prototype.forEach.call(_links, function (link) {\r\n var href = link.href;\r\n link.setAttribute('href', href);\r\n });\r\n var imgs = content.querySelectorAll('img');\r\n Array.prototype.forEach.call(imgs, function (img) {\r\n var src = img.src;\r\n img.setAttribute('src', src);\r\n });\r\n }\r\n\r\n var util = new Util(this.builder); //Prepare temporary helpers: #tmp_content & #tmp_buildercontent\r\n\r\n var builderstuff = util.builderStuff();\r\n var elm = builderstuff.querySelector('#tmp_content');\r\n if (elm) builderstuff.removeChild(elm);\r\n elm = builderstuff.querySelector('#tmp_buildercontent');\r\n if (elm) builderstuff.removeChild(elm);\r\n var html = \"\\n \";\r\n dom$C.appendHtml(builderstuff, html);\r\n var tmp = builderstuff.querySelector('#tmp_content');\r\n tmp.innerHTML = content.innerHTML; //Find subblocks (previously is-builder) in custom code blocks and save them to data-html-1, data-html-2, and so on.\r\n\r\n var blocks = tmp.querySelectorAll('[data-html]');\r\n Array.prototype.forEach.call(blocks, function (block) {\r\n // NEW\r\n var index = 1;\r\n var subblocks = block.querySelectorAll('[data-subblock]');\r\n Array.prototype.forEach.call(subblocks, function (subblock) {\r\n var html = subblock.innerHTML;\r\n block.setAttribute('data-html-' + index, encodeURIComponent(html));\r\n index++;\r\n });\r\n /* OLD\r\n let index = 1;\r\n //let _builders = block.querySelectorAll('.is-builder');\r\n Array.prototype.forEach.call(_builders, (_builder) => {\r\n // let builderhtml = _builder.innerHTML;\r\n //if(dom.parentsHasClass(_builder, 'slick-cloned')) return; // direct LATER\r\n //Cleaning\r\n _builder.style.transform = '';\r\n _builder.style.WebkitTransform= '';\r\n _builder.style.MozTransform= '';\r\n _builder.removeAttribute('data-sort');\r\n dom.removeClass(_builder, 'builder-active');\r\n _builder.removeAttribute('hidesnippetaddtool');\r\n _builder.removeAttribute('gray');\r\n _builder.removeAttribute('rowoutline');\r\n _builder.removeAttribute('grayoutline');\r\n _builder.removeAttribute('hideoutline');\r\n _builder.removeAttribute('leftrowtool');\r\n _builder.removeAttribute('minimal');\r\n _builder.removeAttribute('clean');\r\n _builder.removeAttribute('grideditor');\r\n _builder.removeAttribute('gridoutline');\r\n _builder.removeAttribute('gridoutline'); // old\r\n _builder.removeAttribute('draggridoutline'); // old\r\n _builder.removeAttribute('between-blocks-left'); // old\r\n _builder.removeAttribute('between-blocks-center'); // old \r\n _builder.removeAttribute('hideelementhighlight'); \r\n let builderhtml = _builder.innerHTML;\r\n let tmpbuilder = builderstuff.querySelector('#tmp_buildercontent');\r\n tmpbuilder.innerHTML = builderhtml;\r\n let elms = tmp.querySelectorAll('.sortable-chosen');\r\n dom.removeClasses(elms, 'sortable-chosen');\r\n elms = tmp.querySelectorAll('.sortable-ghost');\r\n dom.removeClasses(elms, 'sortable-ghost');\r\n elms = tmpbuilder.querySelectorAll('.elm-active');\r\n dom.removeClasses(elms, 'elm-active');\r\n elms = tmpbuilder.querySelectorAll('.elm-inspected');\r\n dom.removeClasses(elms, 'elm-inspected');\r\n elms = tmpbuilder.querySelectorAll('.cell-active');\r\n dom.removeClasses(elms, 'cell-active');\r\n elms = tmpbuilder.querySelectorAll('.row-active');\r\n dom.removeClasses(elms, 'row-active');\r\n elms = tmpbuilder.querySelectorAll('.row-outline');\r\n dom.removeClasses(elms, 'row-outline');\r\n //elms = tmpbuilder.querySelectorAll('.is-builder');\r\n //dom.removeClasses(elms, 'is-builder');\r\n elms = tmpbuilder.querySelectorAll('.row-outline');\r\n dom.removeClasses(elms, 'row-outline');\r\n elms = tmpbuilder.querySelectorAll('[data-click]');\r\n dom.removeAttributes(elms, 'data-click');\r\n elms = tmpbuilder.querySelectorAll('[contenteditable]');\r\n dom.removeAttributes(elms, 'contenteditable');\r\n elms = tmpbuilder.querySelectorAll('[data-module-active]');\r\n dom.removeAttributes(elms, 'data-module-active');\r\n dom.removeElements( tmpbuilder.querySelectorAll('.is-row-tool') );\r\n dom.removeElements( tmpbuilder.querySelectorAll('.is-rowadd-tool') );\r\n dom.removeElements( tmpbuilder.querySelectorAll('.ovl') );\r\n dom.removeElements( tmpbuilder.querySelectorAll('.irow-add-initial') );\r\n // LATER: rewrite in javascript\r\n //$builder.find('*[class=\"\"]').removeAttr('class');\r\n //$builder.find('*[style=\"\"]').removeAttr('style'); \r\n elms = tmpbuilder.querySelectorAll('[data-keep]');\r\n dom.removeAttributes(elms, 'data-keep');\r\n builderhtml = tmpbuilder.innerHTML.trim();\r\n builderhtml = builderhtml.replace(/button\r\n\r\n var links = tmp.querySelectorAll('a');\r\n Array.prototype.forEach.call(links, function (link) {\r\n if (link.style.display === 'inline-block') {\r\n if (link.parentNode.childElementCount === 1 && link.parentNode.tagName.toLowerCase() === 'span') {\r\n link.parentNode.outerHTML = link.parentNode.innerHTML;\r\n }\r\n }\r\n });\r\n html = '';\r\n\r\n if (multiple) {\r\n //ContentBox\r\n // Remove dummy DIV after last section\r\n var _elms = tmp.querySelectorAll('.is-dummy');\r\n\r\n dom$C.removeElements(_elms);\r\n _elms = tmp.querySelectorAll('.is-animated');\r\n Array.prototype.forEach.call(_elms, function (elm) {\r\n dom$C.removeClass(elm, 'animated');\r\n dom$C.removeClass(elm, 'pulse');\r\n dom$C.removeClass(elm, 'bounceIn');\r\n dom$C.removeClass(elm, 'fadeIn');\r\n dom$C.removeClass(elm, 'fadeOut'); //new\r\n\r\n dom$C.removeClass(elm, 'fadeInDown');\r\n dom$C.removeClass(elm, 'fadeInLeft');\r\n dom$C.removeClass(elm, 'fadeInRight');\r\n dom$C.removeClass(elm, 'fadeInUp');\r\n dom$C.removeClass(elm, 'flipInX');\r\n dom$C.removeClass(elm, 'flipInY');\r\n dom$C.removeClass(elm, 'slideInUp');\r\n dom$C.removeClass(elm, 'slideInDown');\r\n dom$C.removeClass(elm, 'slideInLeft');\r\n dom$C.removeClass(elm, 'slideInRight');\r\n dom$C.removeClass(elm, 'zoomIn');\r\n elm.style.animationDelay = '';\r\n }); //Cleanup utils\r\n\r\n _elms = tmp.querySelectorAll('.is-appeared');\r\n Array.prototype.forEach.call(_elms, function (elm) {\r\n dom$C.removeClass(elm, 'is-appeared');\r\n });\r\n _elms = tmp.querySelectorAll('.box-active');\r\n Array.prototype.forEach.call(_elms, function (elm) {\r\n dom$C.removeClass(elm, 'box-active');\r\n });\r\n _elms = tmp.querySelectorAll('.section-active');\r\n Array.prototype.forEach.call(_elms, function (elm) {\r\n dom$C.removeClass(elm, 'section-active');\r\n });\r\n _elms = tmp.querySelectorAll('.is-section-tool');\r\n dom$C.removeElements(_elms);\r\n var html_content = '';\r\n var html_footer = '';\r\n var html_others = ''; // Apply behavior on each row\r\n\r\n var sections = dom$C.elementChildren(tmp);\r\n sections.forEach(function (section) {\r\n var currentSection = section;\r\n\r\n if (dom$C.hasClass(currentSection, 'is-section')) {\r\n var secclass = ''; // var secstyle = '';\r\n\r\n if (currentSection.getAttribute('class')) secclass = ' class=\"' + currentSection.getAttribute('class') + '\"'; // if (currentSection.getAttribute('style')) secstyle = ' style=\"' + currentSection.getAttribute('style') + '\"';\r\n\r\n var copySection = currentSection.cloneNode(true);\r\n var htmlSection = copySection.outerHTML;\r\n html += htmlSection; //content & footer\r\n\r\n if (secclass.indexOf('is-static') === -1) {\r\n html_content += htmlSection + '\\n\\n';\r\n } else {\r\n html_footer += htmlSection + '\\n\\n';\r\n }\r\n } else {\r\n copySection = currentSection.cloneNode(true);\r\n htmlSection = copySection.outerHTML;\r\n html += htmlSection; //others\r\n\r\n html_others += htmlSection;\r\n }\r\n });\r\n if (html_footer !== '') html_footer = '\\n' + html_footer;\r\n if (html_others !== '') html_others = '\\n' + html_others;\r\n var contentbox = document.querySelector('[data-contentbox');\r\n var disableStaticSection = false;\r\n\r\n if (contentbox) {\r\n disableStaticSection = contentbox.settings.disableStaticSection;\r\n }\r\n\r\n if (!disableStaticSection) {\r\n html = html_content + html_footer + html_others;\r\n }\r\n } else {\r\n html = tmp.innerHTML.trim();\r\n html = html.replace(/\\n \\n \\n \\n Fonts\\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \";\r\n }\r\n }]);\r\n\r\n return HtmlUtil;\r\n }();\r\n\r\n var dom$B = new Dom();\r\n\r\n var UndoRedo = /*#__PURE__*/function () {\r\n function UndoRedo(builder) {\r\n _classCallCheck$1(this, UndoRedo);\r\n\r\n this.builder = builder;\r\n this.undoList = [];\r\n }\r\n\r\n _createClass$1(UndoRedo, [{\r\n key: \"readStyles\",\r\n value: function readStyles() {\r\n if (this.builder.opts.undoContainerOnly) return '';\r\n var css = '';\r\n var i, src;\r\n var links = document.getElementsByTagName('link');\r\n\r\n for (i = 0; i < links.length; i++) {\r\n src = links[i].href.toLowerCase();\r\n\r\n if (src.indexOf('basetype-') !== -1) {\r\n css += links[i].outerHTML;\r\n }\r\n }\r\n\r\n links = document.getElementsByTagName('link');\r\n\r\n for (i = 0; i < links.length; i++) {\r\n src = links[i].href.toLowerCase();\r\n\r\n if (src.indexOf('basetype-') !== -1) ; else if (src.indexOf('type-') !== -1) {\r\n css += links[i].outerHTML;\r\n }\r\n }\r\n\r\n return css;\r\n }\r\n }, {\r\n key: \"writeStyles\",\r\n value: function writeStyles(styles) {\r\n if (this.builder.opts.undoContainerOnly) return;\r\n var i, src;\r\n var links = document.getElementsByTagName('link');\r\n\r\n for (i = 0; i < links.length; i++) {\r\n src = links[i].href.toLowerCase();\r\n\r\n if (src.indexOf('basetype-') !== -1) {\r\n links[i].parentNode.removeChild(links[i]);\r\n } else if (src.indexOf('type-') !== -1) {\r\n links[i].parentNode.removeChild(links[i]);\r\n }\r\n }\r\n\r\n var head = document.getElementsByTagName('head')[0];\r\n dom$B.appendHtml(head, styles);\r\n }\r\n }, {\r\n key: \"readHtml\",\r\n value: function readHtml() {\r\n var htmlutil = new HtmlUtil(this.builder);\r\n\r\n if (this.builder.opts.page !== '' && !this.builder.opts.undoContainerOnly) {\r\n var wrapper = document.querySelector(this.builder.opts.page);\r\n return htmlutil.readHtml(wrapper, false);\r\n } else {\r\n var builders = document.querySelectorAll(this.builder.opts.container);\r\n var html = '';\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n // if(html==='') {\r\n // html = htmlutil.readHtml(builder, false);\r\n // } else {\r\n // html+= '####|####' + htmlutil.readHtml(builder, false);\r\n // }\r\n html += htmlutil.readHtml(builder, false) + '####|####'; //new\r\n });\r\n html = html.substr(0, html.length - 9); //new\r\n\r\n return html;\r\n }\r\n }\r\n }, {\r\n key: \"writeHtml\",\r\n value: function writeHtml(html) {\r\n if (this.builder.opts.page !== '' && !this.builder.opts.undoContainerOnly) {\r\n var wrapper = document.querySelector(this.builder.opts.page); // wrapper.innerHTML = html;\r\n // Use createContextualFragment() to make embedded script executable\r\n // https://ghinda.net/article/script-tags/\r\n\r\n var range = document.createRange();\r\n wrapper.innerHTML = '';\r\n wrapper.appendChild(range.createContextualFragment(html));\r\n } else {\r\n var builders = document.querySelectorAll(this.builder.opts.container);\r\n var n = 0;\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n // builder.innerHTML = html.split('####|####')[n];\r\n // Use createContextualFragment() to make embedded script executable\r\n // https://ghinda.net/article/script-tags/\r\n var range = document.createRange();\r\n builder.innerHTML = '';\r\n builder.appendChild(range.createContextualFragment(html.split('####|####')[n]));\r\n n++;\r\n });\r\n }\r\n }\r\n }, {\r\n key: \"saveForUndo\",\r\n value: function saveForUndo(checkLater) {\r\n if (this.builder.undoRedoStyles) {\r\n if (this.undoList[120]) {\r\n var saves = this.undoList[120][0];\r\n var html = saves.split('###$###')[1]; // Styles doesn't need to be checked. saveForUndoCheck is true only after colorpicker or gradient picker opened\r\n // (because after opened, user may not make changes, so checking for content change is needed).\r\n // This relates to html content, not styles. So we always check html content, not styles. \r\n\r\n if (this.builder.saveForUndoCheck) {\r\n if (html === this.readHtml()) {\r\n // no change\r\n // console.log('no change');\r\n if (checkLater === true) this.builder.saveForUndoCheck = true;else this.builder.saveForUndoCheck = false;\r\n return;\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.undoList[120]) {\r\n var _html = this.undoList[120][0];\r\n\r\n if (this.builder.saveForUndoCheck) {\r\n if (_html === this.readHtml()) {\r\n // no change\r\n // console.log('no change');\r\n if (checkLater === true) this.builder.saveForUndoCheck = true;else this.builder.saveForUndoCheck = false;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (checkLater === true) this.builder.saveForUndoCheck = true;else this.builder.saveForUndoCheck = false; // console.log('save');\r\n\r\n this.undoList[140] = this.undoList[139]; // addition\r\n\r\n this.undoList[139] = this.undoList[138];\r\n this.undoList[138] = this.undoList[137];\r\n this.undoList[137] = this.undoList[136];\r\n this.undoList[136] = this.undoList[135];\r\n this.undoList[135] = this.undoList[134];\r\n this.undoList[134] = this.undoList[133];\r\n this.undoList[133] = this.undoList[132];\r\n this.undoList[132] = this.undoList[131];\r\n this.undoList[131] = this.undoList[130];\r\n this.undoList[130] = this.undoList[129];\r\n this.undoList[129] = this.undoList[128];\r\n this.undoList[128] = this.undoList[127];\r\n this.undoList[127] = this.undoList[126];\r\n this.undoList[126] = this.undoList[125];\r\n this.undoList[125] = this.undoList[124];\r\n this.undoList[124] = this.undoList[123];\r\n this.undoList[123] = this.undoList[122];\r\n this.undoList[122] = this.undoList[121];\r\n this.undoList[121] = this.undoList[120];\r\n\r\n if (this.builder.undoRedoStyles) {\r\n var styles = this.readStyles();\r\n\r\n var _html2 = this.readHtml();\r\n\r\n var _saves = ' ' + styles + '###$###' + _html2;\r\n\r\n this.undoList[120] = [_saves, null];\r\n } else {\r\n this.undoList[120] = [this.readHtml(), null];\r\n }\r\n }\r\n }, {\r\n key: \"doUndo\",\r\n value: function doUndo() {\r\n if (!this.undoList[120]) return;\r\n if (this.builder.undoRedoInProcess === true) return; // do not precess if previous operation is still running\r\n // console.log('undo');\r\n\r\n this.builder.undoRedoInProcess = true;\r\n this.undoList[99] = this.undoList[100];\r\n this.undoList[100] = this.undoList[101];\r\n this.undoList[101] = this.undoList[102];\r\n this.undoList[102] = this.undoList[103];\r\n this.undoList[103] = this.undoList[104];\r\n this.undoList[104] = this.undoList[105];\r\n this.undoList[105] = this.undoList[106];\r\n this.undoList[106] = this.undoList[107];\r\n this.undoList[107] = this.undoList[108];\r\n this.undoList[108] = this.undoList[109];\r\n this.undoList[109] = this.undoList[110];\r\n this.undoList[110] = this.undoList[111];\r\n this.undoList[111] = this.undoList[112];\r\n this.undoList[112] = this.undoList[113];\r\n this.undoList[113] = this.undoList[114];\r\n this.undoList[114] = this.undoList[115];\r\n this.undoList[115] = this.undoList[116];\r\n this.undoList[116] = this.undoList[117];\r\n this.undoList[117] = this.undoList[118];\r\n this.undoList[118] = this.undoList[119];\r\n\r\n if (this.builder.undoRedoStyles) {\r\n var styles = this.readStyles();\r\n var html = this.readHtml();\r\n var saves = ' ' + styles + '###$###' + html;\r\n this.undoList[119] = [saves, null]; // -\r\n\r\n saves = this.undoList[120][0];\r\n styles = saves.split('###$###')[0].trim();\r\n html = saves.split('###$###')[1];\r\n this.writeStyles(styles);\r\n this.writeHtml(html);\r\n } else {\r\n this.undoList[119] = [this.readHtml(), null];\r\n var _html3 = this.undoList[120][0];\r\n this.writeHtml(_html3);\r\n }\r\n\r\n this.builder.applyBehavior();\r\n this.builder.opts.onChange();\r\n this.undoList[120] = this.undoList[121];\r\n this.undoList[121] = this.undoList[122];\r\n this.undoList[122] = this.undoList[123];\r\n this.undoList[123] = this.undoList[124];\r\n this.undoList[124] = this.undoList[125];\r\n this.undoList[125] = this.undoList[126];\r\n this.undoList[126] = this.undoList[127];\r\n this.undoList[127] = this.undoList[128];\r\n this.undoList[128] = this.undoList[129];\r\n this.undoList[129] = this.undoList[130];\r\n this.undoList[130] = this.undoList[131];\r\n this.undoList[131] = this.undoList[132];\r\n this.undoList[132] = this.undoList[133];\r\n this.undoList[133] = this.undoList[134];\r\n this.undoList[134] = this.undoList[135];\r\n this.undoList[135] = this.undoList[136];\r\n this.undoList[136] = this.undoList[137];\r\n this.undoList[137] = this.undoList[138];\r\n this.undoList[138] = this.undoList[139];\r\n this.undoList[139] = this.undoList[140];\r\n this.undoList[140] = this.undoList[141];\r\n var util = new Util(this.builder);\r\n util.clearActiveCell();\r\n util.clearAfterUndoRedo();\r\n var elm = document.querySelector('[data-saveforundo]');\r\n\r\n if (elm) {\r\n var panel = document.querySelector('.is-side.elementstyles');\r\n dom$B.addClass(panel, 'active');\r\n setTimeout(function () {\r\n elm.click();\r\n }, 700);\r\n } else {\r\n var _panel = document.querySelector('.is-side.elementstyles');\r\n\r\n dom$B.removeClass(_panel, 'active');\r\n }\r\n\r\n if (this.builder.opts.onUndo) {\r\n this.builder.opts.onUndo();\r\n }\r\n\r\n this.builder.undoRedoInProcess = false;\r\n }\r\n }, {\r\n key: \"doRedo\",\r\n value: function doRedo() {\r\n if (!this.undoList[119]) return;\r\n if (this.builder.undoRedoInProcess === true) return; // do not precess if previous operation is still running\r\n // console.log('redo');\r\n\r\n this.builder.undoRedoInProcess = true;\r\n this.undoList[141] = this.undoList[140];\r\n this.undoList[140] = this.undoList[139];\r\n this.undoList[139] = this.undoList[138];\r\n this.undoList[138] = this.undoList[137];\r\n this.undoList[137] = this.undoList[136];\r\n this.undoList[136] = this.undoList[135];\r\n this.undoList[135] = this.undoList[134];\r\n this.undoList[134] = this.undoList[133];\r\n this.undoList[133] = this.undoList[132];\r\n this.undoList[132] = this.undoList[131];\r\n this.undoList[131] = this.undoList[130];\r\n this.undoList[130] = this.undoList[129];\r\n this.undoList[129] = this.undoList[128];\r\n this.undoList[128] = this.undoList[127];\r\n this.undoList[127] = this.undoList[126];\r\n this.undoList[126] = this.undoList[125];\r\n this.undoList[125] = this.undoList[124];\r\n this.undoList[124] = this.undoList[123];\r\n this.undoList[123] = this.undoList[122];\r\n this.undoList[122] = this.undoList[121];\r\n this.undoList[121] = this.undoList[120];\r\n\r\n if (this.builder.undoRedoStyles) {\r\n var styles = this.readStyles();\r\n var html = this.readHtml();\r\n var saves = ' ' + styles + '###$###' + html;\r\n this.undoList[120] = [saves, null]; // -\r\n\r\n saves = this.undoList[119][0];\r\n styles = saves.split('###$###')[0].trim();\r\n html = saves.split('###$###')[1];\r\n this.writeStyles(styles);\r\n this.writeHtml(html);\r\n } else {\r\n this.undoList[120] = [this.readHtml(), null];\r\n var _html4 = this.undoList[119][0];\r\n this.writeHtml(_html4);\r\n }\r\n\r\n this.builder.applyBehavior();\r\n this.builder.opts.onChange();\r\n this.undoList[119] = this.undoList[118];\r\n this.undoList[118] = this.undoList[117];\r\n this.undoList[117] = this.undoList[116];\r\n this.undoList[116] = this.undoList[115];\r\n this.undoList[115] = this.undoList[114];\r\n this.undoList[114] = this.undoList[113];\r\n this.undoList[113] = this.undoList[112];\r\n this.undoList[112] = this.undoList[111];\r\n this.undoList[111] = this.undoList[110];\r\n this.undoList[110] = this.undoList[109];\r\n this.undoList[109] = this.undoList[108];\r\n this.undoList[108] = this.undoList[107];\r\n this.undoList[107] = this.undoList[106];\r\n this.undoList[106] = this.undoList[105];\r\n this.undoList[105] = this.undoList[104];\r\n this.undoList[104] = this.undoList[103];\r\n this.undoList[103] = this.undoList[102];\r\n this.undoList[102] = this.undoList[101];\r\n this.undoList[101] = this.undoList[100];\r\n this.undoList[100] = this.undoList[99];\r\n this.undoList[99] = null;\r\n var util = new Util(this.builder);\r\n util.clearActiveCell();\r\n util.clearAfterUndoRedo();\r\n var elm = document.querySelector('[data-saveforundo]');\r\n\r\n if (elm) {\r\n var panel = document.querySelector('.is-side.elementstyles');\r\n dom$B.addClass(panel, 'active');\r\n setTimeout(function () {\r\n elm.click();\r\n }, 700);\r\n } else {\r\n var _panel2 = document.querySelector('.is-side.elementstyles');\r\n\r\n dom$B.removeClass(_panel2, 'active');\r\n }\r\n\r\n if (this.builder.opts.onRedo) {\r\n this.builder.opts.onRedo();\r\n }\r\n\r\n this.builder.undoRedoInProcess = false;\r\n }\r\n }]);\r\n\r\n return UndoRedo;\r\n }();\r\n\r\n var util = new Util();\r\n var dom$A = new Dom();\r\n\r\n var prepareSvgIcons = function prepareSvgIcons() {\r\n var html = \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \";\r\n var builderstuff = util.builderStuff();\r\n dom$A.appendHtml(builderstuff, html);\r\n };\r\n\r\n var dom$z = new Dom();\r\n\r\n var renderQuickAdd = function renderQuickAdd(builder) {\r\n var util = new Util(builder);\r\n var builderStuff = util.builderStuff();\r\n var quickadd = builderStuff.querySelector('.quickadd');\r\n\r\n if (!quickadd) {\r\n var html = \"
\\n
\\n
\\n
\".concat(util.out('Add to Left'), \"
\\n
\").concat(util.out('Add to Right'), \"
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \").concat(builder.opts.emailMode ? '' : \"\"), \"\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \");\r\n dom$z.appendHtml(builderStuff, html);\r\n quickadd = builderStuff.querySelector('.quickadd');\r\n document.addEventListener('click', function (e) {\r\n e = e || window.event;\r\n var target = e.target || e.srcElement;\r\n\r\n if (quickadd.style.display === 'flex') {\r\n var a = dom$z.parentsHasClass(target, 'quickadd');\r\n var b = dom$z.parentsHasClass(target, 'row-add');\r\n var c = dom$z.parentsHasClass(target, 'is-rowadd-tool');\r\n var d = dom$z.parentsHasClass(target, 'cell-add');\r\n var f = dom$z.parentsHasClass(target, 'elm-add');\r\n var g = dom$z.parentsHasClass(target, 'row-add-initial');\r\n\r\n if (a || b || c || d || f || g) {\r\n return;\r\n } else {\r\n quickadd.style.display = '';\r\n }\r\n }\r\n });\r\n var tabs = quickadd.querySelectorAll('.is-pop-tab-item');\r\n Array.prototype.forEach.call(tabs, function (tab) {\r\n dom$z.addEventListener(tab, 'click', function (e) {\r\n var elms = quickadd.querySelectorAll('.is-pop-tab-item');\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n dom$z.removeClass(elm, 'active');\r\n });\r\n dom$z.addClass(e.target, 'active');\r\n var val = quickadd.querySelector('.active').getAttribute('data-value');\r\n\r\n if (val === 'left') {\r\n quickadd.setAttribute('data-mode', 'cell-left');\r\n } else {\r\n quickadd.setAttribute('data-mode', 'cell-right');\r\n }\r\n });\r\n });\r\n var elm = quickadd.querySelector('.add-paragraph');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = \"

Lorem Ipsum is simply dummy text of the printing and typesetting industry. \\n Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, \\n when an unknown printer took a galley of type and scrambled it to make a type specimen book.

\";\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-headline');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = \"
\\n

Headline Goes Here

\\n

Lorem Ipsum is simply dummy text

\\n
\";\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-image');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = '\"\"';\r\n\r\n if (builder.opts.snippetSampleImage !== '') {\r\n html = builder.opts.snippetSampleImage;\r\n }\r\n\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-heading1');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = '

Heading 1 here

';\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-heading2');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = '

Heading 2 here

';\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-heading3');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = '

Heading 3 here

';\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-preformatted');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = \"
Lorem Ipsum is simply dummy text of the printing and typesetting industry. \\n            Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, \\n            when an unknown printer took a galley of type and scrambled it to make a type specimen book.
\";\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-list');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = \"
    \\n
  • Lorem Ipsum is simply dummy text
  • \\n
  • Lorem Ipsum is simply dummy text
  • \\n
\";\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-quote');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = '
Lorem Ipsum is simply dummy text
';\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-button');\r\n if (elm) dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = 'Read More';\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-spacer');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = '
';\r\n util.addContent(html, mode, 'data-noedit');\r\n });\r\n elm = quickadd.querySelector('.add-table');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var mode = quickadd.getAttribute('data-mode');\r\n var html = \"\\n \\n \\n \\n \\n \\n \\n \\n \\n




\";\r\n util.addContent(html, mode);\r\n });\r\n elm = quickadd.querySelector('.add-more');\r\n dom$z.addEventListener(elm, 'click', function () {\r\n var modal = builderStuff.querySelector('.snippets');\r\n util.showModal(modal, false, null, false);\r\n var iframe = modal.querySelector('iframe');\r\n\r\n if (iframe.src === 'about:blank') {\r\n iframe.src = builder.opts.snippetData;\r\n }\r\n\r\n quickadd.style.display = '';\r\n });\r\n }\r\n\r\n return quickadd;\r\n };\r\n\r\n var dom$y = new Dom();\r\n var Grid = /*#__PURE__*/function () {\r\n function Grid(builder) {\r\n _classCallCheck$1(this, Grid);\r\n\r\n this.builder = builder;\r\n this.columnTool = new ColumnTool$1(builder);\r\n this.rowTool = new RowTool$1(builder);\r\n this.util = new Util(this.builder);\r\n }\r\n\r\n _createClass$1(Grid, [{\r\n key: \"moveColumnPrevious\",\r\n value: function moveColumnPrevious() {\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n\r\n if (cell.previousElementSibling) {\r\n this.builder.uo.saveForUndo();\r\n cell.parentElement.insertBefore(cell, cell.previousElementSibling);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n }\r\n }\r\n }, {\r\n key: \"moveColumnNext\",\r\n value: function moveColumnNext() {\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var cellnext = util.cellNext(cell);\r\n\r\n if (cellnext) {\r\n this.builder.uo.saveForUndo();\r\n cell.parentElement.insertBefore(cellnext, cell);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n }\r\n }\r\n }, {\r\n key: \"moveColumnUp\",\r\n value: function moveColumnUp() {\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode;\r\n\r\n if (row.childElementCount - 2 === 1) {\r\n //-2 => minus is-row-tool & is-rowadd-tool\r\n if (row.previousElementSibling) {\r\n var maxCols = 4;\r\n\r\n if (this.builder.maxColumns) {\r\n maxCols = this.builder.maxColumns;\r\n }\r\n\r\n if (row.previousElementSibling.childElementCount >= maxCols + 2 || row.previousElementSibling.hasAttribute('data-protected')) {\r\n //+2 => includes is-row-tool & is-rowaddtool\r\n this.builder.uo.saveForUndo(); //Move row up\r\n\r\n row.parentNode.insertBefore(row, row.previousElementSibling);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n return;\r\n } else {\r\n this.builder.uo.saveForUndo(); //Add inside prev row\r\n\r\n var tool = row.previousElementSibling.querySelector('.is-row-tool');\r\n row.previousElementSibling.removeChild(tool); //remove next row tool\r\n\r\n tool = row.previousElementSibling.querySelector('.is-rowadd-tool');\r\n row.previousElementSibling.removeChild(tool); //remove next row tool\r\n\r\n row.previousElementSibling.appendChild(cell); //add\r\n\r\n row.parentNode.removeChild(row); //remove current (empty) row\r\n\r\n builder.applyBehavior(); //re-add tool\r\n\r\n columnTool.position(cell);\r\n cell.click(); //refresh active cell/row\r\n\r\n this.builder.opts.onChange();\r\n }\r\n } else {\r\n //move outside container (move to previous container)\r\n return;\r\n }\r\n } else {\r\n this.builder.uo.saveForUndo();\r\n var rowElement = row.cloneNode(true);\r\n rowElement.innerHTML = '';\r\n rowElement.appendChild(cell);\r\n row.parentNode.insertBefore(rowElement, row);\r\n builder.applyBehavior(); //re-add tool\r\n\r\n columnTool.position(cell);\r\n cell.click(); //refresh active cell/row\r\n\r\n this.builder.opts.onChange();\r\n } //fix layout\r\n\r\n\r\n row = cell.parentNode; //update active row\r\n\r\n util.fixLayout(row, builder);\r\n if (row.nextElementSibling) util.fixLayout(row.nextElementSibling, builder);\r\n }\r\n }, {\r\n key: \"moveColumnDown\",\r\n value: function moveColumnDown() {\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode;\r\n\r\n if (row.childElementCount - 2 === 1) {\r\n //-2 => minus is-row-tool & is-rowadd-tool\r\n if (row.nextElementSibling) {\r\n var maxCols = 4;\r\n\r\n if (this.builder.maxColumns) {\r\n maxCols = this.builder.maxColumns;\r\n }\r\n\r\n if (row.nextElementSibling.childElementCount >= maxCols + 2 || row.nextElementSibling.hasAttribute('data-protected')) {\r\n //+2 => includes is-row-tool & is-rowadd-tool\r\n this.builder.uo.saveForUndo(); //Move row down\r\n\r\n row.parentNode.insertBefore(row.nextElementSibling, row);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n return;\r\n } else {\r\n this.builder.uo.saveForUndo(); //Add inside next row\r\n\r\n var tool = row.nextElementSibling.querySelector('.is-row-tool');\r\n row.nextElementSibling.removeChild(tool); //remove next row tool\r\n\r\n tool = row.nextElementSibling.querySelector('.is-rowadd-tool');\r\n row.nextElementSibling.removeChild(tool); //remove next row tool\r\n\r\n row.nextElementSibling.appendChild(cell); //add\r\n\r\n row.parentNode.removeChild(row); //remove current (empty) row\r\n\r\n builder.applyBehavior(); //re-add tool\r\n\r\n columnTool.position(cell);\r\n cell.click(); //refresh active cell/row\r\n\r\n this.builder.opts.onChange();\r\n }\r\n } else {\r\n //move outside container (move to next container)\r\n return;\r\n }\r\n } else {\r\n this.builder.uo.saveForUndo();\r\n var rowElement = row.cloneNode(true);\r\n rowElement.innerHTML = '';\r\n rowElement.appendChild(cell);\r\n dom$y.moveAfter(rowElement, row);\r\n builder.applyBehavior(); //re-add tool\r\n\r\n columnTool.position(cell);\r\n cell.click(); //refresh active cell/row\r\n\r\n this.builder.opts.onChange();\r\n } //fix layout\r\n\r\n\r\n row = cell.parentNode; //update active row\r\n\r\n util.fixLayout(row, builder);\r\n if (row.previousElementSibling) util.fixLayout(row.previousElementSibling, builder);\r\n }\r\n }, {\r\n key: \"duplicateColumn\",\r\n value: function duplicateColumn() {\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n this.builder.uo.saveForUndo();\r\n var cellElement = cell.cloneNode(true);\r\n dom$y.removeClass(cellElement, 'cell-active');\r\n cellElement.removeAttribute('data-click');\r\n var row = cell.parentNode;\r\n var maxCols = 4;\r\n\r\n if (this.builder.maxColumns) {\r\n maxCols = this.builder.maxColumns;\r\n }\r\n\r\n if (row.childElementCount >= maxCols + 2) {\r\n //+2 => is-row-tool & is-rowadd-tool\r\n alert(util.out('You have reached the maximum number of columns'));\r\n return false;\r\n }\r\n\r\n row.insertBefore(cellElement, cell);\r\n util.fixLayout(row, builder);\r\n builder.applyBehavior();\r\n columnTool.position(cell);\r\n cell.click(); //refresh active cell/row\r\n\r\n this.builder.opts.onChange();\r\n }\r\n }, {\r\n key: \"removeColumn\",\r\n value: function removeColumn() {\r\n var _this = this;\r\n\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode;\r\n columnTool.hide(); //Hide Column tool\r\n\r\n util.confirm(util.out('Are you sure you want to delete this block?'), function (ok) {\r\n if (ok) {\r\n _this.builder.uo.saveForUndo();\r\n\r\n if (row.childElementCount - 2 === 1) {\r\n //-2 => minus is-row-tool & is-rowadd-tool\r\n row.parentNode.removeChild(row);\r\n util.checkEmpty();\r\n } else {\r\n row.removeChild(cell);\r\n util.fixLayout(row, builder);\r\n }\r\n\r\n util.clearActiveCell();\r\n\r\n _this.builder.opts.onChange();\r\n } else {\r\n setTimeout(function () {\r\n columnTool.position(cell);\r\n columnTool.show();\r\n }, 200);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"increaseColumn\",\r\n value: function increaseColumn() {\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var cellnext = util.cellNext(cell);\r\n var cellnext2;\r\n\r\n if (!cellnext) {\r\n cellnext = cell.previousElementSibling;\r\n if (!cellnext) return;\r\n cellnext2 = cellnext.previousElementSibling;\r\n } else {\r\n cellnext2 = util.cellNext(cellnext);\r\n if (!cellnext2) cellnext2 = cell.previousElementSibling;\r\n }\r\n\r\n var rowClass = builder.opts.row;\r\n var colClass = builder.opts.cols;\r\n var colSizes = builder.opts.colsizes;\r\n\r\n if (rowClass !== '' && colClass.length > 0 && colSizes.length > 0) {\r\n if (cellnext2) {\r\n for (var i = 0; i < colSizes.length; i++) {\r\n var group = colSizes[i];\r\n\r\n for (var j = 0; j < group.length; j++) {\r\n if (group[j].length === 3) {\r\n if (dom$y.hasClass(cell, group[j][0]) && dom$y.hasClass(cellnext, group[j][1]) && dom$y.hasClass(cellnext2, group[j][2])) {\r\n if (j + 1 === group.length) ; else {\r\n this.builder.uo.saveForUndo();\r\n dom$y.removeClass(cell, group[j][0]);\r\n dom$y.removeClass(cellnext, group[j][1]);\r\n dom$y.removeClass(cellnext2, group[j][2]);\r\n dom$y.addClass(cell, group[j + 1][0]);\r\n dom$y.addClass(cellnext, group[j + 1][1]);\r\n dom$y.addClass(cellnext2, group[j + 1][2]);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var _i = 0; _i < colSizes.length; _i++) {\r\n var _group = colSizes[_i];\r\n\r\n for (var _j = 0; _j < _group.length; _j++) {\r\n if (_group[_j].length === 2) {\r\n if (dom$y.hasClass(cell, _group[_j][0]) && dom$y.hasClass(cellnext, _group[_j][1])) {\r\n if (_j + 1 === _group.length) ; else {\r\n this.builder.uo.saveForUndo();\r\n dom$y.removeClass(cell, _group[_j][0]);\r\n dom$y.removeClass(cellnext, _group[_j][1]);\r\n dom$y.addClass(cell, _group[_j + 1][0]);\r\n dom$y.addClass(cellnext, _group[_j + 1][1]);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n columnTool.position(cell);\r\n return;\r\n } //others (12 columns grid) \r\n\r\n\r\n if (rowClass !== '' && colClass.length > 0) {\r\n if (!dom$y.hasClass(cell, colClass[11])) {\r\n //if not column full\r\n if (dom$y.hasClass(cell, colClass[11])) {\r\n return;\r\n }\r\n\r\n if (dom$y.hasClass(cellnext, colClass[0])) {\r\n return;\r\n }\r\n\r\n this.builder.uo.saveForUndo();\r\n\r\n if (dom$y.hasClass(cell, colClass[10])) {\r\n dom$y.removeClass(cell, colClass[10]);\r\n dom$y.addClass(cell, colClass[11]);\r\n } else if (dom$y.hasClass(cell, colClass[9])) {\r\n dom$y.removeClass(cell, colClass[9]);\r\n dom$y.addClass(cell, colClass[10]);\r\n } else if (dom$y.hasClass(cell, colClass[8])) {\r\n dom$y.removeClass(cell, colClass[8]);\r\n dom$y.addClass(cell, colClass[9]);\r\n } else if (dom$y.hasClass(cell, colClass[7])) {\r\n dom$y.removeClass(cell, colClass[7]);\r\n dom$y.addClass(cell, colClass[8]);\r\n } else if (dom$y.hasClass(cell, colClass[6])) {\r\n dom$y.removeClass(cell, colClass[6]);\r\n dom$y.addClass(cell, colClass[7]);\r\n } else if (dom$y.hasClass(cell, colClass[5])) {\r\n dom$y.removeClass(cell, colClass[5]);\r\n dom$y.addClass(cell, colClass[6]);\r\n } else if (dom$y.hasClass(cell, colClass[4])) {\r\n dom$y.removeClass(cell, colClass[4]);\r\n dom$y.addClass(cell, colClass[5]);\r\n } else if (dom$y.hasClass(cell, colClass[3])) {\r\n dom$y.removeClass(cell, colClass[3]);\r\n dom$y.addClass(cell, colClass[4]);\r\n } else if (dom$y.hasClass(cell, colClass[2])) {\r\n dom$y.removeClass(cell, colClass[2]);\r\n dom$y.addClass(cell, colClass[3]);\r\n } else if (dom$y.hasClass(cell, colClass[1])) {\r\n dom$y.removeClass(cell, colClass[1]);\r\n dom$y.addClass(cell, colClass[2]);\r\n } else if (dom$y.hasClass(cell, colClass[0])) {\r\n dom$y.removeClass(cell, colClass[0]);\r\n dom$y.addClass(cell, colClass[1]);\r\n }\r\n\r\n if (dom$y.hasClass(cellnext, colClass[1])) {\r\n dom$y.removeClass(cellnext, colClass[1]);\r\n dom$y.addClass(cellnext, colClass[0]);\r\n } else if (dom$y.hasClass(cellnext, colClass[2])) {\r\n dom$y.removeClass(cellnext, colClass[2]);\r\n dom$y.addClass(cellnext, colClass[1]);\r\n } else if (dom$y.hasClass(cellnext, colClass[3])) {\r\n dom$y.removeClass(cellnext, colClass[3]);\r\n dom$y.addClass(cellnext, colClass[2]);\r\n } else if (dom$y.hasClass(cellnext, colClass[4])) {\r\n dom$y.removeClass(cellnext, colClass[4]);\r\n dom$y.addClass(cellnext, colClass[3]);\r\n } else if (dom$y.hasClass(cellnext, colClass[5])) {\r\n dom$y.removeClass(cellnext, colClass[5]);\r\n dom$y.addClass(cellnext, colClass[4]);\r\n } else if (dom$y.hasClass(cellnext, colClass[6])) {\r\n dom$y.removeClass(cellnext, colClass[6]);\r\n dom$y.addClass(cellnext, colClass[5]);\r\n } else if (dom$y.hasClass(cellnext, colClass[7])) {\r\n dom$y.removeClass(cellnext, colClass[7]);\r\n dom$y.addClass(cellnext, colClass[6]);\r\n } else if (dom$y.hasClass(cellnext, colClass[8])) {\r\n dom$y.removeClass(cellnext, colClass[8]);\r\n dom$y.addClass(cellnext, colClass[7]);\r\n } else if (dom$y.hasClass(cellnext, colClass[9])) {\r\n dom$y.removeClass(cellnext, colClass[9]);\r\n dom$y.addClass(cellnext, colClass[8]);\r\n } else if (dom$y.hasClass(cellnext, colClass[10])) {\r\n dom$y.removeClass(cellnext, colClass[10]);\r\n dom$y.addClass(cellnext, colClass[9]);\r\n } else if (dom$y.hasClass(cellnext, colClass[11])) {\r\n dom$y.removeClass(cellnext, colClass[11]);\r\n dom$y.addClass(cellnext, colClass[10]);\r\n }\r\n\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"decreaseColumn\",\r\n value: function decreaseColumn() {\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var cellnext = util.cellNext(cell);\r\n var cellnext2;\r\n\r\n if (!cellnext) {\r\n cellnext = cell.previousElementSibling;\r\n if (!cellnext) return;\r\n cellnext2 = cellnext.previousElementSibling;\r\n } else {\r\n cellnext2 = util.cellNext(cellnext);\r\n if (!cellnext2) cellnext2 = cell.previousElementSibling;\r\n }\r\n\r\n var rowClass = builder.opts.row;\r\n var colClass = builder.opts.cols;\r\n var colSizes = builder.opts.colsizes;\r\n\r\n if (rowClass !== '' && colClass.length > 0 && colSizes.length > 0) {\r\n if (cellnext2) {\r\n for (var i = 0; i < colSizes.length; i++) {\r\n var group = colSizes[i];\r\n\r\n for (var j = 0; j < group.length; j++) {\r\n if (group[j].length === 3) {\r\n if (dom$y.hasClass(cell, group[j][0]) && dom$y.hasClass(cellnext, group[j][1]) && dom$y.hasClass(cellnext2, group[j][2])) {\r\n if (j === 0) ; else {\r\n this.builder.uo.saveForUndo();\r\n dom$y.removeClass(cell, group[j][0]);\r\n dom$y.removeClass(cellnext, group[j][1]);\r\n dom$y.removeClass(cellnext2, group[j][2]);\r\n dom$y.addClass(cell, group[j - 1][0]);\r\n dom$y.addClass(cellnext, group[j - 1][1]);\r\n dom$y.addClass(cellnext2, group[j - 1][2]);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var _i2 = 0; _i2 < colSizes.length; _i2++) {\r\n var _group2 = colSizes[_i2];\r\n\r\n for (var _j2 = 0; _j2 < _group2.length; _j2++) {\r\n if (_group2[_j2].length === 2) {\r\n if (dom$y.hasClass(cell, _group2[_j2][0]) && dom$y.hasClass(cellnext, _group2[_j2][1])) {\r\n if (_j2 === 0) ; else {\r\n this.builder.uo.saveForUndo();\r\n dom$y.removeClass(cell, _group2[_j2][0]);\r\n dom$y.removeClass(cellnext, _group2[_j2][1]);\r\n dom$y.addClass(cell, _group2[_j2 - 1][0]);\r\n dom$y.addClass(cellnext, _group2[_j2 - 1][1]);\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n columnTool.position(cell);\r\n return;\r\n } //others (12 columns grid) \r\n // const rowClass = builder.opts.row; //row\r\n // const colClass = builder.opts.cols; //['col s1', 'col s2', 'col s3', 'col s4', 'col s5', 'col s6', 'col s7', 'col s8', 'col s9', 'col s10', 'col s11', 'col s12']\r\n\r\n\r\n if (rowClass !== '' && colClass.length > 0) {\r\n if (!dom$y.hasClass(cell, colClass[11])) {\r\n //if not column full\r\n if (dom$y.hasClass(cell, colClass[0])) {\r\n return;\r\n }\r\n\r\n if (dom$y.hasClass(cellnext, colClass[11])) {\r\n return;\r\n }\r\n\r\n this.builder.uo.saveForUndo();\r\n\r\n if (dom$y.hasClass(cell, colClass[11])) {\r\n dom$y.removeClass(cell, colClass[11]);\r\n dom$y.addClass(cell, colClass[10]);\r\n } else if (dom$y.hasClass(cell, colClass[10])) {\r\n dom$y.removeClass(cell, colClass[10]);\r\n dom$y.addClass(cell, colClass[9]);\r\n } else if (dom$y.hasClass(cell, colClass[9])) {\r\n dom$y.removeClass(cell, colClass[9]);\r\n dom$y.addClass(cell, colClass[8]);\r\n } else if (dom$y.hasClass(cell, colClass[8])) {\r\n dom$y.removeClass(cell, colClass[8]);\r\n dom$y.addClass(cell, colClass[7]);\r\n } else if (dom$y.hasClass(cell, colClass[7])) {\r\n dom$y.removeClass(cell, colClass[7]);\r\n dom$y.addClass(cell, colClass[6]);\r\n } else if (dom$y.hasClass(cell, colClass[6])) {\r\n dom$y.removeClass(cell, colClass[6]);\r\n dom$y.addClass(cell, colClass[5]);\r\n } else if (dom$y.hasClass(cell, colClass[5])) {\r\n dom$y.removeClass(cell, colClass[5]);\r\n dom$y.addClass(cell, colClass[4]);\r\n } else if (dom$y.hasClass(cell, colClass[4])) {\r\n dom$y.removeClass(cell, colClass[4]);\r\n dom$y.addClass(cell, colClass[3]);\r\n } else if (dom$y.hasClass(cell, colClass[3])) {\r\n dom$y.removeClass(cell, colClass[3]);\r\n dom$y.addClass(cell, colClass[2]);\r\n } else if (dom$y.hasClass(cell, colClass[2])) {\r\n dom$y.removeClass(cell, colClass[2]);\r\n dom$y.addClass(cell, colClass[1]);\r\n } else if (dom$y.hasClass(cell, colClass[1])) {\r\n dom$y.removeClass(cell, colClass[1]);\r\n dom$y.addClass(cell, colClass[0]);\r\n }\r\n\r\n if (dom$y.hasClass(cellnext, colClass[0])) {\r\n dom$y.removeClass(cellnext, colClass[0]);\r\n dom$y.addClass(cellnext, colClass[1]);\r\n } else if (dom$y.hasClass(cellnext, colClass[1])) {\r\n dom$y.removeClass(cellnext, colClass[1]);\r\n dom$y.addClass(cellnext, colClass[2]);\r\n } else if (dom$y.hasClass(cellnext, colClass[2])) {\r\n dom$y.removeClass(cellnext, colClass[2]);\r\n dom$y.addClass(cellnext, colClass[3]);\r\n } else if (dom$y.hasClass(cellnext, colClass[3])) {\r\n dom$y.removeClass(cellnext, colClass[3]);\r\n dom$y.addClass(cellnext, colClass[4]);\r\n } else if (dom$y.hasClass(cellnext, colClass[4])) {\r\n dom$y.removeClass(cellnext, colClass[4]);\r\n dom$y.addClass(cellnext, colClass[5]);\r\n } else if (dom$y.hasClass(cellnext, colClass[5])) {\r\n dom$y.removeClass(cellnext, colClass[5]);\r\n dom$y.addClass(cellnext, colClass[6]);\r\n } else if (dom$y.hasClass(cellnext, colClass[6])) {\r\n dom$y.removeClass(cellnext, colClass[6]);\r\n dom$y.addClass(cellnext, colClass[7]);\r\n } else if (dom$y.hasClass(cellnext, colClass[7])) {\r\n dom$y.removeClass(cellnext, colClass[7]);\r\n dom$y.addClass(cellnext, colClass[8]);\r\n } else if (dom$y.hasClass(cellnext, colClass[8])) {\r\n dom$y.removeClass(cellnext, colClass[8]);\r\n dom$y.addClass(cellnext, colClass[9]);\r\n } else if (dom$y.hasClass(cellnext, colClass[9])) {\r\n dom$y.removeClass(cellnext, colClass[9]);\r\n dom$y.addClass(cellnext, colClass[10]);\r\n } else if (dom$y.hasClass(cellnext, colClass[10])) {\r\n dom$y.removeClass(cellnext, colClass[10]);\r\n dom$y.addClass(cellnext, colClass[11]);\r\n }\r\n\r\n columnTool.position(cell);\r\n this.builder.opts.onChange();\r\n }\r\n }\r\n } // ROW\r\n\r\n }, {\r\n key: \"removeRow\",\r\n value: function removeRow() {\r\n var _this2 = this;\r\n\r\n // let builder = this.builder;\r\n // let columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode; //Change to row selection\r\n\r\n dom$y.removeClass(row, 'row-outline');\r\n this.columnTool.hide(); //Hide Column tool\r\n\r\n util.confirm(util.out('Are you sure you want to delete this block?'), function (ok) {\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode;\r\n\r\n if (ok) {\r\n _this2.builder.uo.saveForUndo();\r\n\r\n row.parentNode.removeChild(row);\r\n util.checkEmpty();\r\n\r\n _this2.builder.opts.onChange();\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"moveRowUp\",\r\n value: function moveRowUp() {\r\n var _this3 = this;\r\n\r\n // let builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode; //Change to row selection\r\n\r\n dom$y.removeClass(row, 'row-outline');\r\n columnTool.hide(); //Hide Column tool\r\n\r\n if (row.previousElementSibling) {\r\n this.builder.uo.saveForUndo();\r\n row.parentNode.insertBefore(row, row.previousElementSibling);\r\n this.rowTool.position(row);\r\n this.builder.opts.onChange();\r\n } else if (this.builder.opts.moveBetweenContainers) {\r\n // Move to previous container\r\n var currContainer = row.parentNode;\r\n var prev = null;\r\n var builders = document.querySelectorAll(this.builder.opts.container);\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n if (builder.innerHTML === currContainer.innerHTML) {\r\n if (prev) {\r\n dom$y.moveAfter(row, prev.lastChild);\r\n\r\n _this3.rowTool.position(row);\r\n\r\n util.checkEmpty();\r\n\r\n _this3.builder.opts.onChange();\r\n\r\n return false;\r\n }\r\n }\r\n\r\n prev = builder;\r\n });\r\n }\r\n }\r\n }, {\r\n key: \"moveRowDown\",\r\n value: function moveRowDown() {\r\n var _this4 = this;\r\n\r\n // let builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode; //Change to row selection\r\n\r\n dom$y.removeClass(row, 'row-outline');\r\n columnTool.hide(); //Hide Column tool\r\n\r\n if (row.nextElementSibling) {\r\n this.builder.uo.saveForUndo();\r\n row.parentNode.insertBefore(row.nextElementSibling, row);\r\n this.rowTool.position(row);\r\n this.builder.opts.onChange();\r\n } else if (this.builder.opts.moveBetweenContainers) {\r\n // Move to next container\r\n var currContainer = row.parentNode;\r\n var flag = false;\r\n var builders = document.querySelectorAll(this.builder.opts.container);\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n if (flag) {\r\n builder.insertBefore(row, builder.firstChild);\r\n\r\n _this4.rowTool.position(row);\r\n\r\n util.checkEmpty();\r\n\r\n _this4.builder.opts.onChange();\r\n\r\n return false;\r\n }\r\n\r\n if (builder.innerHTML === currContainer.innerHTML) {\r\n flag = true;\r\n }\r\n });\r\n }\r\n }\r\n }, {\r\n key: \"duplicateRow\",\r\n value: function duplicateRow() {\r\n var builder = this.builder;\r\n var columnTool = this.columnTool;\r\n var util = this.util;\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n var row = cell.parentNode; //Change to row selection\r\n\r\n dom$y.removeClass(row, 'row-outline');\r\n columnTool.hide(); //Hide Column tool\r\n\r\n this.builder.uo.saveForUndo(); //Clone row & cleanup attached tool & event\r\n\r\n var rowElement = row.cloneNode(true);\r\n rowElement.removeChild(rowElement.querySelector('.is-row-tool'));\r\n var cols = dom$y.elementChildren(rowElement);\r\n cols.forEach(function (col) {\r\n col.removeAttribute('data-click');\r\n\r\n if (col.classList.contains('cell-active')) {\r\n builder.activeCol = col;\r\n }\r\n });\r\n dom$y.moveAfter(rowElement, row); //Unselect current row\r\n\r\n dom$y.removeClass(row, 'row-active');\r\n dom$y.removeClass(row, 'row-outline');\r\n cols = dom$y.elementChildren(row);\r\n cols.forEach(function (col) {\r\n dom$y.removeClass(col, 'cell-active');\r\n });\r\n builder.applyBehavior();\r\n this.rowTool.position(rowElement);\r\n this.builder.opts.onChange();\r\n } // Utilities\r\n\r\n }, {\r\n key: \"refreshColumnTool\",\r\n value: function refreshColumnTool(cell) {\r\n var columnTool = this.columnTool;\r\n columnTool.position(cell);\r\n }\r\n }, {\r\n key: \"showColumnTool\",\r\n value: function showColumnTool() {\r\n var columnTool = this.columnTool;\r\n columnTool.show();\r\n }\r\n }, {\r\n key: \"hideColumnTool\",\r\n value: function hideColumnTool() {\r\n var columnTool = this.columnTool;\r\n columnTool.hide();\r\n }\r\n }]);\r\n\r\n return Grid;\r\n }();\r\n\r\n var RowTool$1 = /*#__PURE__*/function () {\r\n function RowTool(builder) {\r\n _classCallCheck$1(this, RowTool);\r\n\r\n this.builder = builder;\r\n }\r\n\r\n _createClass$1(RowTool, [{\r\n key: \"position\",\r\n value: function position(row) {\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n var rowTool = row.querySelector('.is-row-tool');\r\n var rowMore = builderstuff.querySelector('.rowmore');\r\n dom$y.addClass(rowMore, 'transition1');\r\n var elm = rowTool.querySelector('.row-more');\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset;\r\n var left = elm.getBoundingClientRect().left + window.pageXOffset; // const w = rowMore.offsetWidth; \r\n\r\n rowMore.style.top = top - 8 + 'px';\r\n dom$y.removeClass(rowMore, 'arrow-bottom');\r\n dom$y.removeClass(rowMore, 'arrow-left');\r\n dom$y.removeClass(rowMore, 'arrow-right');\r\n dom$y.removeClass(rowMore, 'center');\r\n dom$y.removeClass(rowMore, 'right');\r\n dom$y.removeClass(rowMore, 'left');\r\n\r\n if (this.builder.opts.rowTool === 'right') {\r\n rowMore.style.left = left - rowMore.offsetWidth - 10 + 'px';\r\n dom$y.addClass(rowMore, 'arrow-right');\r\n dom$y.addClass(rowMore, 'left');\r\n } else {\r\n rowMore.style.left = left + 35 + 'px';\r\n dom$y.addClass(rowMore, 'arrow-left');\r\n dom$y.addClass(rowMore, 'left');\r\n }\r\n\r\n setTimeout(function () {\r\n dom$y.removeClass(rowMore, 'transition1');\r\n }, 300);\r\n }\r\n }]);\r\n\r\n return RowTool;\r\n }();\r\n\r\n var ColumnTool$1 = /*#__PURE__*/function () {\r\n function ColumnTool(builder) {\r\n _classCallCheck$1(this, ColumnTool);\r\n\r\n this.builder = builder;\r\n }\r\n\r\n _createClass$1(ColumnTool, [{\r\n key: \"position\",\r\n value: function position(col) {\r\n var _this5 = this;\r\n\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n this.columnTool = builderstuff.querySelector('.is-column-tool');\r\n this.columnMore = builderstuff.querySelector('.columnmore');\r\n dom$y.addClass(this.columnMore, 'transition1');\r\n setTimeout(function () {\r\n _this5.columnTool.style.top = col.getBoundingClientRect().top - 29 + window.pageYOffset + 'px';\r\n _this5.columnTool.style.left = col.getBoundingClientRect().left - 1 + 'px';\r\n var top = parseInt(_this5.columnTool.style.top);\r\n var left = parseInt(_this5.columnTool.style.left);\r\n _this5.columnMore.style.top = top + 35 + 'px';\r\n _this5.columnMore.style.left = left + 19 + 'px';\r\n setTimeout(function () {\r\n dom$y.removeClass(_this5.columnMore, 'transition1');\r\n }, 300);\r\n }, 300);\r\n }\r\n }, {\r\n key: \"hide\",\r\n value: function hide() {\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n this.columnTool = builderstuff.querySelector('.is-column-tool'); // this.columnMore = builderstuff.querySelector('.columnmore');\r\n\r\n dom$y.removeClass(this.columnTool, 'active');\r\n }\r\n }, {\r\n key: \"show\",\r\n value: function show() {\r\n var util = new Util(this.builder);\r\n var builderstuff = util.builderStuff();\r\n this.columnTool = builderstuff.querySelector('.is-column-tool'); // this.columnMore = builderstuff.querySelector('.columnmore');\r\n\r\n dom$y.addClass(this.columnTool, 'active');\r\n }\r\n }]);\r\n\r\n return ColumnTool;\r\n }();\r\n\r\n /*\r\n Draggable\r\n Insipred by: https://www.kirupa.com/html5/drag.htm\r\n */\r\n var initialX, initialY, currentX, currentY, xOffset, yOffset, dragActive, activeDraggableBox;\r\n var Draggable$1 = /*#__PURE__*/function () {\r\n function Draggable() {\r\n var _this = this;\r\n\r\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n _classCallCheck$1(this, Draggable);\r\n\r\n this.opts = opts;\r\n var elms = document.querySelectorAll(this.opts.selector);\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n elm.setAttribute('draggable', '');\r\n elm.addEventListener('touchstart', _this.dragStart, false);\r\n elm.addEventListener('touchend', _this.dragEnd, false);\r\n elm.addEventListener('mousedown', _this.dragStart, false);\r\n elm.addEventListener('mouseup', _this.dragEnd, false);\r\n });\r\n document.addEventListener('touchmove', this.drag, false);\r\n document.addEventListener('mousemove', this.drag, false); // if(this.isTouchSupport) {\r\n // window.addEventListener('touchmove', (e)=>{\r\n // e.returnValue = true;\r\n // if (dragActive) {\r\n // e.preventDefault();\r\n // }\r\n // },\r\n // {\r\n // passive: dragActive\r\n // }\r\n // ); \r\n // }\r\n }\r\n\r\n _createClass$1(Draggable, [{\r\n key: \"dragStart\",\r\n value: function dragStart(e) {\r\n if (!e.target.hasAttribute('draggable')) return; //any child element (ex. close button) should not be draggable. LATER: revew.\r\n\r\n dragActive = true;\r\n activeDraggableBox = e.target.parentElement;\r\n var xOffset;\r\n var yOffset;\r\n\r\n if (!activeDraggableBox.getAttribute('data-xOffset')) {\r\n activeDraggableBox.setAttribute('data-xOffset', 0);\r\n xOffset = 0;\r\n } else {\r\n xOffset = activeDraggableBox.getAttribute('data-xOffset');\r\n }\r\n\r\n if (!activeDraggableBox.getAttribute('data-yOffset')) {\r\n activeDraggableBox.setAttribute('data-yOffset', 0);\r\n yOffset = 0;\r\n } else {\r\n yOffset = activeDraggableBox.getAttribute('data-yOffset');\r\n }\r\n\r\n if (e.type === 'touchstart') {\r\n initialX = e.touches[0].clientX - xOffset;\r\n initialY = e.touches[0].clientY - yOffset;\r\n } else {\r\n initialX = e.clientX - xOffset;\r\n initialY = e.clientY - yOffset;\r\n }\r\n\r\n activeDraggableBox.setAttribute('data-initialX', initialX);\r\n activeDraggableBox.setAttribute('data-initialY', initialY);\r\n }\r\n }, {\r\n key: \"dragEnd\",\r\n value: function dragEnd(e) {\r\n if (!e.target.hasAttribute('draggable')) return; //any child element (ex. close button) should not be draggable. LATER: revew.\r\n //Update\r\n\r\n currentX = activeDraggableBox.getAttribute('data-currentX');\r\n currentY = activeDraggableBox.getAttribute('data-currentY');\r\n initialX = currentX;\r\n initialY = currentY;\r\n activeDraggableBox.setAttribute('data-initialX', initialX);\r\n activeDraggableBox.setAttribute('data-initialY', initialY);\r\n dragActive = false;\r\n }\r\n }, {\r\n key: \"drag\",\r\n value: function drag(e) {\r\n if (dragActive) {\r\n e.preventDefault();\r\n var initialX = activeDraggableBox.getAttribute('data-initialX');\r\n var initialY = activeDraggableBox.getAttribute('data-initialY');\r\n\r\n if (e.type === 'touchmove') {\r\n currentX = e.touches[0].clientX - initialX;\r\n currentY = e.touches[0].clientY - initialY;\r\n } else {\r\n currentX = e.clientX - initialX;\r\n currentY = e.clientY - initialY;\r\n }\r\n\r\n activeDraggableBox.style.transform = 'translate3d(' + currentX + 'px, ' + currentY + 'px, 0)'; //Save\r\n\r\n activeDraggableBox.setAttribute('data-currentX', currentX);\r\n activeDraggableBox.setAttribute('data-currentY', currentY);\r\n xOffset = currentX;\r\n yOffset = currentY;\r\n activeDraggableBox.setAttribute('data-xOffset', xOffset);\r\n activeDraggableBox.setAttribute('data-yOffset', yOffset);\r\n }\r\n }\r\n }, {\r\n key: \"isTouchSupport\",\r\n value: function isTouchSupport() {\r\n if ('ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }]);\r\n\r\n return Draggable;\r\n }();\r\n\r\n var dom$x = new Dom();\r\n\r\n var renderGridEditor = function renderGridEditor(builder) {\r\n var util = new Util(builder);\r\n var grid = new Grid(builder);\r\n var htmlutil = new HtmlUtil(builder);\r\n var rowhtmlbutton = '';\r\n if (builder.opts.rowHtmlEditor) rowhtmlbutton = \"\");\r\n var colhtmlbutton = '';\r\n if (builder.opts.columnHtmlEditor) colhtmlbutton = \"\");\r\n var html = \"
\\n
\\n
\\n
\\n
\".concat(util.out('Row'), \"
\\n
\\n \\n \\n \\n \\n \").concat(rowhtmlbutton, \"\\n \\n
\\n
\").concat(util.out('Column'), \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \").concat(colhtmlbutton, \"\\n \\n
\\n \\n \\n
\\n
\\n
\"); //LATER:\r\n //\r\n\r\n var builderstuff = util.builderStuff();\r\n dom$x.appendHtml(builderstuff, html);\r\n new Draggable$1({\r\n selector: '.is-draggable'\r\n });\r\n var grideditor = document.querySelector('.grideditor');\r\n document.addEventListener('click', function (e) {\r\n e = e || window.event;\r\n var target = e.target || e.srcElement;\r\n\r\n if (dom$x.hasClass(grideditor, 'active')) {\r\n var a = dom$x.parentsHasClass(target, 'is-builder');\r\n var b = dom$x.parentsHasClass(target, 'grideditor');\r\n var c = dom$x.parentsHasClass(target, 'is-modal');\r\n var d = dom$x.parentsHasClass(target, 'is-pop');\r\n var f = dom$x.parentsHasClass(target, 'rte-grideditor') || dom$x.hasClass(target, 'rte-grideditor');\r\n\r\n if (a || b || c || d || f) {\r\n grideditor.style.display = '';\r\n return;\r\n } else {\r\n grideditor.style.display = 'none';\r\n }\r\n }\r\n }, false);\r\n var elm = grideditor.querySelector('.is-modal-close');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n dom$x.removeClass(grideditor, 'active');\r\n var builders = document.querySelectorAll(builder.opts.container);\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n builder.removeAttribute('grideditor');\r\n });\r\n });\r\n elm = grideditor.querySelector('.grid-outline');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n var builders = document.querySelectorAll(builder.opts.container);\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n if (builder.hasAttribute('gridoutline')) {\r\n builder.removeAttribute('gridoutline');\r\n } else {\r\n builder.setAttribute('gridoutline', '');\r\n }\r\n });\r\n });\r\n var quickadd = renderQuickAdd(builder); // CELL\r\n\r\n elm = grideditor.querySelector('.cell-add');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n var tabs = quickadd.querySelector('.is-pop-tabs');\r\n tabs.style.display = 'flex';\r\n var elm = grideditor.querySelector('.cell-add');\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset;\r\n var left = elm.getBoundingClientRect().left + window.pageXOffset;\r\n quickadd.style.display = 'flex';\r\n var w = quickadd.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n //const h = quickadd.offsetHeight;\r\n\r\n quickadd.style.top = top + 'px';\r\n quickadd.style.left = left - w - 8 + 'px';\r\n dom$x.removeClass(quickadd, 'arrow-bottom');\r\n dom$x.removeClass(quickadd, 'arrow-left');\r\n dom$x.removeClass(quickadd, 'arrow-top');\r\n dom$x.removeClass(quickadd, 'center');\r\n dom$x.removeClass(quickadd, 'left');\r\n dom$x.addClass(quickadd, 'arrow-right');\r\n dom$x.addClass(quickadd, 'right');\r\n var val = quickadd.querySelector('.active').getAttribute('data-value');\r\n\r\n if (val === 'left') {\r\n quickadd.setAttribute('data-mode', 'cell-left');\r\n } else {\r\n quickadd.setAttribute('data-mode', 'cell-right');\r\n }\r\n });\r\n elm = grideditor.querySelector('.cell-prev');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.moveColumnPrevious();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-next');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.moveColumnNext();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-increase');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.increaseColumn();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-decrease');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.decreaseColumn();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-up');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.moveColumnUp();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-down');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.moveColumnDown();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-duplicate');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.duplicateColumn();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-remove');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.removeColumn();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.cell-html');\r\n if (elm) dom$x.addEventListener(elm, 'click', function () {\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n htmlutil.view('cell');\r\n }); // ROW\r\n\r\n elm = grideditor.querySelector('.row-add');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n var tabs = quickadd.querySelector('.is-pop-tabs');\r\n tabs.style.display = 'none';\r\n var elm = grideditor.querySelector('.row-add');\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset;\r\n var left = elm.getBoundingClientRect().left + window.pageXOffset;\r\n quickadd.style.display = 'flex';\r\n var w = quickadd.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n //const h = quickadd.offsetHeight;\r\n\r\n quickadd.style.top = top + 'px';\r\n quickadd.style.left = left - w - 8 + 'px';\r\n dom$x.removeClass(quickadd, 'arrow-bottom');\r\n dom$x.removeClass(quickadd, 'arrow-left');\r\n dom$x.removeClass(quickadd, 'arrow-top');\r\n dom$x.removeClass(quickadd, 'center');\r\n dom$x.removeClass(quickadd, 'left');\r\n dom$x.addClass(quickadd, 'arrow-right');\r\n dom$x.addClass(quickadd, 'right');\r\n quickadd.setAttribute('data-mode', 'row');\r\n });\r\n elm = grideditor.querySelector('.row-up');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.moveRowUp();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.row-down');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.moveRowDown();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.row-duplicate');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.duplicateRow();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.row-remove');\r\n dom$x.addEventListener(elm, 'click', function () {\r\n grid.removeRow();\r\n util.clearControls();\r\n });\r\n elm = grideditor.querySelector('.row-html');\r\n if (elm) dom$x.addEventListener(elm, 'click', function () {\r\n var cell = util.cellSelected();\r\n if (!cell) return;\r\n htmlutil.view('row');\r\n });\r\n };\r\n\r\n var dom$w = new Dom();\r\n\r\n var Dropdown = function Dropdown(element) {\r\n var _this = this;\r\n\r\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n\r\n _classCallCheck$1(this, Dropdown);\r\n\r\n var defaults = {\r\n onChange: function onChange() {}\r\n };\r\n this.opts = Object.assign(this, defaults, opts);\r\n var selectbox = element;\r\n var groupname = selectbox.getAttribute('data-group');\r\n var dropdown = document.querySelector('.is-selectbox-options[data-group=\"' + groupname + '\"]');\r\n if (this.opts.dropdown) dropdown = this.opts.dropdown;\r\n dom$w.addEventListener(selectbox, 'click', function () {\r\n if (dropdown.style.display === 'none') {\r\n var dropdowns = document.querySelectorAll('.is-selectbox-options');\r\n Array.prototype.forEach.call(dropdowns, function (elm) {\r\n elm.style.display = 'none';\r\n });\r\n dropdown.style.display = 'block';\r\n\r\n var _elms = dom$w.elementChildren(dropdown);\r\n\r\n _elms.forEach(function (elm) {\r\n dom$w.removeClass(elm, 'selected');\r\n });\r\n\r\n var value = selectbox.getAttribute('data-value');\r\n var optionselected = dropdown.querySelector('[data-value=\"' + value + '\"]');\r\n\r\n if (optionselected) {\r\n dom$w.addClass(optionselected, 'selected');\r\n }\r\n } else {\r\n dropdown.style.display = 'none';\r\n }\r\n });\r\n var elms = dom$w.elementChildren(dropdown);\r\n elms.forEach(function (elm) {\r\n dom$w.addEventListener(elm, 'click', function () {\r\n dropdown.style.display = 'none';\r\n var cat = elm.getAttribute('data-value');\r\n selectbox.querySelector('span').innerHTML = elm.innerHTML;\r\n selectbox.setAttribute('data-value', cat);\r\n\r\n _this.opts.onChange(cat);\r\n });\r\n });\r\n };\r\n\r\n /**!\r\n * Sortable 1.13.0\r\n * @author\tRubaXa \r\n * @author\towenm \r\n * @license MIT\r\n */\r\n function _typeof$1(obj) {\r\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\r\n _typeof$1 = function (obj) {\r\n return typeof obj;\r\n };\r\n } else {\r\n _typeof$1 = function (obj) {\r\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n };\r\n }\r\n\r\n return _typeof$1(obj);\r\n }\r\n\r\n function _defineProperty$1(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n });\r\n } else {\r\n obj[key] = value;\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n function _extends() {\r\n _extends = Object.assign || function (target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n };\r\n\r\n return _extends.apply(this, arguments);\r\n }\r\n\r\n function _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i] != null ? arguments[i] : {};\r\n var ownKeys = Object.keys(source);\r\n\r\n if (typeof Object.getOwnPropertySymbols === 'function') {\r\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\r\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\r\n }));\r\n }\r\n\r\n ownKeys.forEach(function (key) {\r\n _defineProperty$1(target, key, source[key]);\r\n });\r\n }\r\n\r\n return target;\r\n }\r\n\r\n function _objectWithoutPropertiesLoose(source, excluded) {\r\n if (source == null) return {};\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) continue;\r\n target[key] = source[key];\r\n }\r\n\r\n return target;\r\n }\r\n\r\n function _objectWithoutProperties(source, excluded) {\r\n if (source == null) return {};\r\n\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n\r\n var key, i;\r\n\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) continue;\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\r\n target[key] = source[key];\r\n }\r\n }\r\n\r\n return target;\r\n }\r\n\r\n var version$1 = \"1.13.0\";\r\n\r\n function userAgent(pattern) {\r\n if (typeof window !== 'undefined' && window.navigator) {\r\n return !!\r\n /*@__PURE__*/\r\n navigator.userAgent.match(pattern);\r\n }\r\n }\r\n\r\n var IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\r\n var Edge = userAgent(/Edge/i);\r\n var FireFox = userAgent(/firefox/i);\r\n var Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\r\n var IOS = userAgent(/iP(ad|od|hone)/i);\r\n var ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\r\n\r\n var captureMode = {\r\n capture: false,\r\n passive: false\r\n };\r\n\r\n function on(el, event, fn) {\r\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\r\n }\r\n\r\n function off(el, event, fn) {\r\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\r\n }\r\n\r\n function matches(\r\n /**HTMLElement*/\r\n el,\r\n /**String*/\r\n selector) {\r\n if (!selector) return;\r\n selector[0] === '>' && (selector = selector.substring(1));\r\n\r\n if (el) {\r\n try {\r\n if (el.matches) {\r\n return el.matches(selector);\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(selector);\r\n } else if (el.webkitMatchesSelector) {\r\n return el.webkitMatchesSelector(selector);\r\n }\r\n } catch (_) {\r\n return false;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getParentOrHost(el) {\r\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\r\n }\r\n\r\n function closest(\r\n /**HTMLElement*/\r\n el,\r\n /**String*/\r\n selector,\r\n /**HTMLElement*/\r\n ctx, includeCTX) {\r\n if (el) {\r\n ctx = ctx || document;\r\n\r\n do {\r\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\r\n return el;\r\n }\r\n\r\n if (el === ctx) break;\r\n /* jshint boss:true */\r\n } while (el = getParentOrHost(el));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var R_SPACE = /\\s+/g;\r\n\r\n function toggleClass$1(el, name, state) {\r\n if (el && name) {\r\n if (el.classList) {\r\n el.classList[state ? 'add' : 'remove'](name);\r\n } else {\r\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\r\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\r\n }\r\n }\r\n }\r\n\r\n function css(el, prop, val) {\r\n var style = el && el.style;\r\n\r\n if (style) {\r\n if (val === void 0) {\r\n if (document.defaultView && document.defaultView.getComputedStyle) {\r\n val = document.defaultView.getComputedStyle(el, '');\r\n } else if (el.currentStyle) {\r\n val = el.currentStyle;\r\n }\r\n\r\n return prop === void 0 ? val : val[prop];\r\n } else {\r\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\r\n prop = '-webkit-' + prop;\r\n }\r\n\r\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\r\n }\r\n }\r\n }\r\n\r\n function matrix(el, selfOnly) {\r\n var appliedTransforms = '';\r\n\r\n if (typeof el === 'string') {\r\n appliedTransforms = el;\r\n } else {\r\n do {\r\n var transform = css(el, 'transform');\r\n\r\n if (transform && transform !== 'none') {\r\n appliedTransforms = transform + ' ' + appliedTransforms;\r\n }\r\n /* jshint boss:true */\r\n\r\n } while (!selfOnly && (el = el.parentNode));\r\n }\r\n\r\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\r\n /*jshint -W056 */\r\n\r\n return matrixFn && new matrixFn(appliedTransforms);\r\n }\r\n\r\n function find$2(ctx, tagName, iterator) {\r\n if (ctx) {\r\n var list = ctx.getElementsByTagName(tagName),\r\n i = 0,\r\n n = list.length;\r\n\r\n if (iterator) {\r\n for (; i < n; i++) {\r\n iterator(list[i], i);\r\n }\r\n }\r\n\r\n return list;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n function getWindowScrollingElement() {\r\n var scrollingElement = document.scrollingElement;\r\n\r\n if (scrollingElement) {\r\n return scrollingElement;\r\n } else {\r\n return document.documentElement;\r\n }\r\n }\r\n /**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\r\n\r\n\r\n function getRect$1(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\r\n if (!el.getBoundingClientRect && el !== window) return;\r\n var elRect, top, left, bottom, right, height, width;\r\n\r\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\r\n elRect = el.getBoundingClientRect();\r\n top = elRect.top;\r\n left = elRect.left;\r\n bottom = elRect.bottom;\r\n right = elRect.right;\r\n height = elRect.height;\r\n width = elRect.width;\r\n } else {\r\n top = 0;\r\n left = 0;\r\n bottom = window.innerHeight;\r\n right = window.innerWidth;\r\n height = window.innerHeight;\r\n width = window.innerWidth;\r\n }\r\n\r\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\r\n // Adjust for translate()\r\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\r\n // Not needed on <= IE11\r\n\r\n if (!IE11OrLess) {\r\n do {\r\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\r\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\r\n\r\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\r\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\r\n bottom = top + elRect.height;\r\n right = left + elRect.width;\r\n break;\r\n }\r\n /* jshint boss:true */\r\n\r\n } while (container = container.parentNode);\r\n }\r\n }\r\n\r\n if (undoScale && el !== window) {\r\n // Adjust for scale()\r\n var elMatrix = matrix(container || el),\r\n scaleX = elMatrix && elMatrix.a,\r\n scaleY = elMatrix && elMatrix.d;\r\n\r\n if (elMatrix) {\r\n top /= scaleY;\r\n left /= scaleX;\r\n width /= scaleX;\r\n height /= scaleY;\r\n bottom = top + height;\r\n right = left + width;\r\n }\r\n }\r\n\r\n return {\r\n top: top,\r\n left: left,\r\n bottom: bottom,\r\n right: right,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n /**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\r\n\r\n\r\n function isScrolledPast(el, elSide, parentSide) {\r\n var parent = getParentAutoScrollElement(el, true),\r\n elSideVal = getRect$1(el)[elSide];\r\n /* jshint boss:true */\r\n\r\n while (parent) {\r\n var parentSideVal = getRect$1(parent)[parentSide],\r\n visible = void 0;\r\n\r\n if (parentSide === 'top' || parentSide === 'left') {\r\n visible = elSideVal >= parentSideVal;\r\n } else {\r\n visible = elSideVal <= parentSideVal;\r\n }\r\n\r\n if (!visible) return parent;\r\n if (parent === getWindowScrollingElement()) break;\r\n parent = getParentAutoScrollElement(parent, false);\r\n }\r\n\r\n return false;\r\n }\r\n /**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\r\n\r\n\r\n function getChild(el, childNum, options) {\r\n var currentChild = 0,\r\n i = 0,\r\n children = el.children;\r\n\r\n while (i < children.length) {\r\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\r\n if (currentChild === childNum) {\r\n return children[i];\r\n }\r\n\r\n currentChild++;\r\n }\r\n\r\n i++;\r\n }\r\n\r\n return null;\r\n }\r\n /**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\r\n\r\n\r\n function lastChild(el, selector) {\r\n var last = el.lastElementChild;\r\n\r\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\r\n last = last.previousElementSibling;\r\n }\r\n\r\n return last || null;\r\n }\r\n /**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\r\n\r\n\r\n function index(el, selector) {\r\n var index = 0;\r\n\r\n if (!el || !el.parentNode) {\r\n return -1;\r\n }\r\n /* jshint boss:true */\r\n\r\n\r\n while (el = el.previousElementSibling) {\r\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\r\n index++;\r\n }\r\n }\r\n\r\n return index;\r\n }\r\n /**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\r\n\r\n\r\n function getRelativeScrollOffset(el) {\r\n var offsetLeft = 0,\r\n offsetTop = 0,\r\n winScroller = getWindowScrollingElement();\r\n\r\n if (el) {\r\n do {\r\n var elMatrix = matrix(el),\r\n scaleX = elMatrix.a,\r\n scaleY = elMatrix.d;\r\n offsetLeft += el.scrollLeft * scaleX;\r\n offsetTop += el.scrollTop * scaleY;\r\n } while (el !== winScroller && (el = el.parentNode));\r\n }\r\n\r\n return [offsetLeft, offsetTop];\r\n }\r\n /**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\r\n\r\n\r\n function indexOfObject(arr, obj) {\r\n for (var i in arr) {\r\n if (!arr.hasOwnProperty(i)) continue;\r\n\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n function getParentAutoScrollElement(el, includeSelf) {\r\n // skip to window\r\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\r\n var elem = el;\r\n var gotSelf = false;\r\n\r\n do {\r\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\r\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\r\n var elemCSS = css(elem);\r\n\r\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\r\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\r\n if (gotSelf || includeSelf) return elem;\r\n gotSelf = true;\r\n }\r\n }\r\n /* jshint boss:true */\r\n\r\n } while (elem = elem.parentNode);\r\n\r\n return getWindowScrollingElement();\r\n }\r\n\r\n function extend(dst, src) {\r\n if (dst && src) {\r\n for (var key in src) {\r\n if (src.hasOwnProperty(key)) {\r\n dst[key] = src[key];\r\n }\r\n }\r\n }\r\n\r\n return dst;\r\n }\r\n\r\n function isRectEqual(rect1, rect2) {\r\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\r\n }\r\n\r\n var _throttleTimeout;\r\n\r\n function throttle$2(callback, ms) {\r\n return function () {\r\n if (!_throttleTimeout) {\r\n var args = arguments,\r\n _this = this;\r\n\r\n if (args.length === 1) {\r\n callback.call(_this, args[0]);\r\n } else {\r\n callback.apply(_this, args);\r\n }\r\n\r\n _throttleTimeout = setTimeout(function () {\r\n _throttleTimeout = void 0;\r\n }, ms);\r\n }\r\n };\r\n }\r\n\r\n function cancelThrottle() {\r\n clearTimeout(_throttleTimeout);\r\n _throttleTimeout = void 0;\r\n }\r\n\r\n function scrollBy(el, x, y) {\r\n el.scrollLeft += x;\r\n el.scrollTop += y;\r\n }\r\n\r\n function clone(el) {\r\n var Polymer = window.Polymer;\r\n var $ = window.jQuery || window.Zepto;\r\n\r\n if (Polymer && Polymer.dom) {\r\n return Polymer.dom(el).cloneNode(true);\r\n } else if ($) {\r\n return $(el).clone(true)[0];\r\n } else {\r\n return el.cloneNode(true);\r\n }\r\n }\r\n\r\n var expando = 'Sortable' + new Date().getTime();\r\n\r\n function AnimationStateManager() {\r\n var animationStates = [],\r\n animationCallbackId;\r\n return {\r\n captureAnimationState: function captureAnimationState() {\r\n animationStates = [];\r\n if (!this.options.animation) return;\r\n var children = [].slice.call(this.el.children);\r\n children.forEach(function (child) {\r\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\r\n animationStates.push({\r\n target: child,\r\n rect: getRect$1(child)\r\n });\r\n\r\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\r\n\r\n\r\n if (child.thisAnimationDuration) {\r\n var childMatrix = matrix(child, true);\r\n\r\n if (childMatrix) {\r\n fromRect.top -= childMatrix.f;\r\n fromRect.left -= childMatrix.e;\r\n }\r\n }\r\n\r\n child.fromRect = fromRect;\r\n });\r\n },\r\n addAnimationState: function addAnimationState(state) {\r\n animationStates.push(state);\r\n },\r\n removeAnimationState: function removeAnimationState(target) {\r\n animationStates.splice(indexOfObject(animationStates, {\r\n target: target\r\n }), 1);\r\n },\r\n animateAll: function animateAll(callback) {\r\n var _this = this;\r\n\r\n if (!this.options.animation) {\r\n clearTimeout(animationCallbackId);\r\n if (typeof callback === 'function') callback();\r\n return;\r\n }\r\n\r\n var animating = false,\r\n animationTime = 0;\r\n animationStates.forEach(function (state) {\r\n var time = 0,\r\n target = state.target,\r\n fromRect = target.fromRect,\r\n toRect = getRect$1(target),\r\n prevFromRect = target.prevFromRect,\r\n prevToRect = target.prevToRect,\r\n animatingRect = state.rect,\r\n targetMatrix = matrix(target, true);\r\n\r\n if (targetMatrix) {\r\n // Compensate for current animation\r\n toRect.top -= targetMatrix.f;\r\n toRect.left -= targetMatrix.e;\r\n }\r\n\r\n target.toRect = toRect;\r\n\r\n if (target.thisAnimationDuration) {\r\n // Could also check if animatingRect is between fromRect and toRect\r\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\r\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\r\n // If returning to same place as started from animation and on same axis\r\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\r\n }\r\n } // if fromRect != toRect: animate\r\n\r\n\r\n if (!isRectEqual(toRect, fromRect)) {\r\n target.prevFromRect = fromRect;\r\n target.prevToRect = toRect;\r\n\r\n if (!time) {\r\n time = _this.options.animation;\r\n }\r\n\r\n _this.animate(target, animatingRect, toRect, time);\r\n }\r\n\r\n if (time) {\r\n animating = true;\r\n animationTime = Math.max(animationTime, time);\r\n clearTimeout(target.animationResetTimer);\r\n target.animationResetTimer = setTimeout(function () {\r\n target.animationTime = 0;\r\n target.prevFromRect = null;\r\n target.fromRect = null;\r\n target.prevToRect = null;\r\n target.thisAnimationDuration = null;\r\n }, time);\r\n target.thisAnimationDuration = time;\r\n }\r\n });\r\n clearTimeout(animationCallbackId);\r\n\r\n if (!animating) {\r\n if (typeof callback === 'function') callback();\r\n } else {\r\n animationCallbackId = setTimeout(function () {\r\n if (typeof callback === 'function') callback();\r\n }, animationTime);\r\n }\r\n\r\n animationStates = [];\r\n },\r\n animate: function animate(target, currentRect, toRect, duration) {\r\n if (duration) {\r\n css(target, 'transition', '');\r\n css(target, 'transform', '');\r\n var elMatrix = matrix(this.el),\r\n scaleX = elMatrix && elMatrix.a,\r\n scaleY = elMatrix && elMatrix.d,\r\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\r\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\r\n target.animatingX = !!translateX;\r\n target.animatingY = !!translateY;\r\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\r\n this.forRepaintDummy = repaint(target); // repaint\r\n\r\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\r\n css(target, 'transform', 'translate3d(0,0,0)');\r\n typeof target.animated === 'number' && clearTimeout(target.animated);\r\n target.animated = setTimeout(function () {\r\n css(target, 'transition', '');\r\n css(target, 'transform', '');\r\n target.animated = false;\r\n target.animatingX = false;\r\n target.animatingY = false;\r\n }, duration);\r\n }\r\n }\r\n };\r\n }\r\n\r\n function repaint(target) {\r\n return target.offsetWidth;\r\n }\r\n\r\n function calculateRealTime(animatingRect, fromRect, toRect, options) {\r\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\r\n }\r\n\r\n var plugins = [];\r\n var defaults = {\r\n initializeByDefault: true\r\n };\r\n var PluginManager = {\r\n mount: function mount(plugin) {\r\n // Set default static properties\r\n for (var option in defaults) {\r\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\r\n plugin[option] = defaults[option];\r\n }\r\n }\r\n\r\n plugins.forEach(function (p) {\r\n if (p.pluginName === plugin.pluginName) {\r\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\r\n }\r\n });\r\n plugins.push(plugin);\r\n },\r\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\r\n var _this = this;\r\n\r\n this.eventCanceled = false;\r\n\r\n evt.cancel = function () {\r\n _this.eventCanceled = true;\r\n };\r\n\r\n var eventNameGlobal = eventName + 'Global';\r\n plugins.forEach(function (plugin) {\r\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\r\n\r\n if (sortable[plugin.pluginName][eventNameGlobal]) {\r\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\r\n sortable: sortable\r\n }, evt));\r\n } // Only fire plugin event if plugin is enabled in this sortable,\r\n // and plugin has event defined\r\n\r\n\r\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\r\n sortable[plugin.pluginName][eventName](_objectSpread({\r\n sortable: sortable\r\n }, evt));\r\n }\r\n });\r\n },\r\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\r\n plugins.forEach(function (plugin) {\r\n var pluginName = plugin.pluginName;\r\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\r\n var initialized = new plugin(sortable, el, sortable.options);\r\n initialized.sortable = sortable;\r\n initialized.options = sortable.options;\r\n sortable[pluginName] = initialized; // Add default options from plugin\r\n\r\n _extends(defaults, initialized.defaults);\r\n });\r\n\r\n for (var option in sortable.options) {\r\n if (!sortable.options.hasOwnProperty(option)) continue;\r\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\r\n\r\n if (typeof modified !== 'undefined') {\r\n sortable.options[option] = modified;\r\n }\r\n }\r\n },\r\n getEventProperties: function getEventProperties(name, sortable) {\r\n var eventProperties = {};\r\n plugins.forEach(function (plugin) {\r\n if (typeof plugin.eventProperties !== 'function') return;\r\n\r\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\r\n });\r\n return eventProperties;\r\n },\r\n modifyOption: function modifyOption(sortable, name, value) {\r\n var modifiedValue;\r\n plugins.forEach(function (plugin) {\r\n // Plugin must exist on the Sortable\r\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\r\n\r\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\r\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\r\n }\r\n });\r\n return modifiedValue;\r\n }\r\n };\r\n\r\n function dispatchEvent$1(_ref) {\r\n var sortable = _ref.sortable,\r\n rootEl = _ref.rootEl,\r\n name = _ref.name,\r\n targetEl = _ref.targetEl,\r\n cloneEl = _ref.cloneEl,\r\n toEl = _ref.toEl,\r\n fromEl = _ref.fromEl,\r\n oldIndex = _ref.oldIndex,\r\n newIndex = _ref.newIndex,\r\n oldDraggableIndex = _ref.oldDraggableIndex,\r\n newDraggableIndex = _ref.newDraggableIndex,\r\n originalEvent = _ref.originalEvent,\r\n putSortable = _ref.putSortable,\r\n extraEventProperties = _ref.extraEventProperties;\r\n sortable = sortable || rootEl && rootEl[expando];\r\n if (!sortable) return;\r\n var evt,\r\n options = sortable.options,\r\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\r\n\r\n if (window.CustomEvent && !IE11OrLess && !Edge) {\r\n evt = new CustomEvent(name, {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n } else {\r\n evt = document.createEvent('Event');\r\n evt.initEvent(name, true, true);\r\n }\r\n\r\n evt.to = toEl || rootEl;\r\n evt.from = fromEl || rootEl;\r\n evt.item = targetEl || rootEl;\r\n evt.clone = cloneEl;\r\n evt.oldIndex = oldIndex;\r\n evt.newIndex = newIndex;\r\n evt.oldDraggableIndex = oldDraggableIndex;\r\n evt.newDraggableIndex = newDraggableIndex;\r\n evt.originalEvent = originalEvent;\r\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\r\n\r\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\r\n\r\n for (var option in allEventProperties) {\r\n evt[option] = allEventProperties[option];\r\n }\r\n\r\n if (rootEl) {\r\n rootEl.dispatchEvent(evt);\r\n }\r\n\r\n if (options[onName]) {\r\n options[onName].call(sortable, evt);\r\n }\r\n }\r\n\r\n var pluginEvent = function pluginEvent(eventName, sortable) {\r\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\r\n originalEvent = _ref.evt,\r\n data = _objectWithoutProperties(_ref, [\"evt\"]);\r\n\r\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\r\n dragEl: dragEl,\r\n parentEl: parentEl,\r\n ghostEl: ghostEl,\r\n rootEl: rootEl,\r\n nextEl: nextEl,\r\n lastDownEl: lastDownEl,\r\n cloneEl: cloneEl,\r\n cloneHidden: cloneHidden,\r\n dragStarted: moved,\r\n putSortable: putSortable,\r\n activeSortable: Sortable.active,\r\n originalEvent: originalEvent,\r\n oldIndex: oldIndex,\r\n oldDraggableIndex: oldDraggableIndex,\r\n newIndex: newIndex,\r\n newDraggableIndex: newDraggableIndex,\r\n hideGhostForTarget: _hideGhostForTarget,\r\n unhideGhostForTarget: _unhideGhostForTarget,\r\n cloneNowHidden: function cloneNowHidden() {\r\n cloneHidden = true;\r\n },\r\n cloneNowShown: function cloneNowShown() {\r\n cloneHidden = false;\r\n },\r\n dispatchSortableEvent: function dispatchSortableEvent(name) {\r\n _dispatchEvent({\r\n sortable: sortable,\r\n name: name,\r\n originalEvent: originalEvent\r\n });\r\n }\r\n }, data));\r\n };\r\n\r\n function _dispatchEvent(info) {\r\n dispatchEvent$1(_objectSpread({\r\n putSortable: putSortable,\r\n cloneEl: cloneEl,\r\n targetEl: dragEl,\r\n rootEl: rootEl,\r\n oldIndex: oldIndex,\r\n oldDraggableIndex: oldDraggableIndex,\r\n newIndex: newIndex,\r\n newDraggableIndex: newDraggableIndex\r\n }, info));\r\n }\r\n\r\n var dragEl,\r\n parentEl,\r\n ghostEl,\r\n rootEl,\r\n nextEl,\r\n lastDownEl,\r\n cloneEl,\r\n cloneHidden,\r\n oldIndex,\r\n newIndex,\r\n oldDraggableIndex,\r\n newDraggableIndex,\r\n activeGroup,\r\n putSortable,\r\n awaitingDragStarted = false,\r\n ignoreNextClick = false,\r\n sortables = [],\r\n tapEvt,\r\n touchEvt,\r\n lastDx,\r\n lastDy,\r\n tapDistanceLeft,\r\n tapDistanceTop,\r\n moved,\r\n lastTarget,\r\n lastDirection,\r\n pastFirstInvertThresh = false,\r\n isCircumstantialInvert = false,\r\n targetMoveDistance,\r\n // For positioning ghost absolutely\r\n ghostRelativeParent,\r\n ghostRelativeParentInitialScroll = [],\r\n // (left, top)\r\n _silent = false,\r\n savedInputChecked = [];\r\n /** @const */\r\n\r\n var documentExists = typeof document !== 'undefined',\r\n PositionGhostAbsolutely = IOS,\r\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\r\n // This will not pass for IE9, because IE9 DnD only works on anchors\r\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\r\n supportCssPointerEvents = function () {\r\n if (!documentExists) return; // false when <= IE11\r\n\r\n if (IE11OrLess) {\r\n return false;\r\n }\r\n\r\n var el = document.createElement('x');\r\n el.style.cssText = 'pointer-events:auto';\r\n return el.style.pointerEvents === 'auto';\r\n }(),\r\n _detectDirection = function _detectDirection(el, options) {\r\n var elCSS = css(el),\r\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\r\n child1 = getChild(el, 0, options),\r\n child2 = getChild(el, 1, options),\r\n firstChildCSS = child1 && css(child1),\r\n secondChildCSS = child2 && css(child2),\r\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect$1(child1).width,\r\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect$1(child2).width;\r\n\r\n if (elCSS.display === 'flex') {\r\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\r\n }\r\n\r\n if (elCSS.display === 'grid') {\r\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\r\n }\r\n\r\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\r\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\r\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\r\n }\r\n\r\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\r\n },\r\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\r\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\r\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\r\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\r\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\r\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\r\n targetOppLength = vertical ? targetRect.width : targetRect.height;\r\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\r\n },\r\n\r\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\r\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\r\n var ret;\r\n sortables.some(function (sortable) {\r\n if (lastChild(sortable)) return;\r\n var rect = getRect$1(sortable),\r\n threshold = sortable[expando].options.emptyInsertThreshold,\r\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\r\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\r\n\r\n if (threshold && insideHorizontally && insideVertically) {\r\n return ret = sortable;\r\n }\r\n });\r\n return ret;\r\n },\r\n _prepareGroup = function _prepareGroup(options) {\r\n function toFn(value, pull) {\r\n return function (to, from, dragEl, evt) {\r\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\r\n\r\n if (value == null && (pull || sameGroup)) {\r\n // Default pull value\r\n // Default pull and put value if same group\r\n return true;\r\n } else if (value == null || value === false) {\r\n return false;\r\n } else if (pull && value === 'clone') {\r\n return value;\r\n } else if (typeof value === 'function') {\r\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\r\n } else {\r\n var otherGroup = (pull ? to : from).options.group.name;\r\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\r\n }\r\n };\r\n }\r\n\r\n var group = {};\r\n var originalGroup = options.group;\r\n\r\n if (!originalGroup || _typeof$1(originalGroup) != 'object') {\r\n originalGroup = {\r\n name: originalGroup\r\n };\r\n }\r\n\r\n group.name = originalGroup.name;\r\n group.checkPull = toFn(originalGroup.pull, true);\r\n group.checkPut = toFn(originalGroup.put);\r\n group.revertClone = originalGroup.revertClone;\r\n options.group = group;\r\n },\r\n _hideGhostForTarget = function _hideGhostForTarget() {\r\n if (!supportCssPointerEvents && ghostEl) {\r\n css(ghostEl, 'display', 'none');\r\n }\r\n },\r\n _unhideGhostForTarget = function _unhideGhostForTarget() {\r\n if (!supportCssPointerEvents && ghostEl) {\r\n css(ghostEl, 'display', '');\r\n }\r\n }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\r\n\r\n\r\n if (documentExists) {\r\n document.addEventListener('click', function (evt) {\r\n if (ignoreNextClick) {\r\n evt.preventDefault();\r\n evt.stopPropagation && evt.stopPropagation();\r\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\r\n ignoreNextClick = false;\r\n return false;\r\n }\r\n }, true);\r\n }\r\n\r\n var nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\r\n if (dragEl) {\r\n evt = evt.touches ? evt.touches[0] : evt;\r\n\r\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\r\n\r\n if (nearest) {\r\n // Create imitation event\r\n var event = {};\r\n\r\n for (var i in evt) {\r\n if (evt.hasOwnProperty(i)) {\r\n event[i] = evt[i];\r\n }\r\n }\r\n\r\n event.target = event.rootEl = nearest;\r\n event.preventDefault = void 0;\r\n event.stopPropagation = void 0;\r\n\r\n nearest[expando]._onDragOver(event);\r\n }\r\n }\r\n };\r\n\r\n var _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\r\n if (dragEl) {\r\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\r\n }\r\n };\r\n /**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\r\n\r\n\r\n function Sortable(el, options) {\r\n if (!(el && el.nodeType && el.nodeType === 1)) {\r\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\r\n }\r\n\r\n this.el = el; // root element\r\n\r\n this.options = options = _extends({}, options); // Export instance\r\n\r\n el[expando] = this;\r\n var defaults = {\r\n group: null,\r\n sort: true,\r\n disabled: false,\r\n store: null,\r\n handle: null,\r\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\r\n swapThreshold: 1,\r\n // percentage; 0 <= x <= 1\r\n invertSwap: false,\r\n // invert always\r\n invertedSwapThreshold: null,\r\n // will be set to same as swapThreshold if default\r\n removeCloneOnHide: true,\r\n direction: function direction() {\r\n return _detectDirection(el, this.options);\r\n },\r\n ghostClass: 'sortable-ghost',\r\n chosenClass: 'sortable-chosen',\r\n dragClass: 'sortable-drag',\r\n ignore: 'a, img',\r\n filter: null,\r\n preventOnFilter: true,\r\n animation: 0,\r\n easing: null,\r\n setData: function setData(dataTransfer, dragEl) {\r\n dataTransfer.setData('Text', dragEl.textContent);\r\n },\r\n dropBubble: false,\r\n dragoverBubble: false,\r\n dataIdAttr: 'data-id',\r\n delay: 0,\r\n delayOnTouchOnly: false,\r\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\r\n forceFallback: false,\r\n fallbackClass: 'sortable-fallback',\r\n fallbackOnBody: false,\r\n fallbackTolerance: 0,\r\n fallbackOffset: {\r\n x: 0,\r\n y: 0\r\n },\r\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\r\n emptyInsertThreshold: 5\r\n };\r\n PluginManager.initializePlugins(this, el, defaults); // Set default options\r\n\r\n for (var name in defaults) {\r\n !(name in options) && (options[name] = defaults[name]);\r\n }\r\n\r\n _prepareGroup(options); // Bind all private methods\r\n\r\n\r\n for (var fn in this) {\r\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\r\n this[fn] = this[fn].bind(this);\r\n }\r\n } // Setup drag mode\r\n\r\n\r\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\r\n\r\n if (this.nativeDraggable) {\r\n // Touch start threshold cannot be greater than the native dragstart threshold\r\n this.options.touchStartThreshold = 1;\r\n } // Bind events\r\n\r\n\r\n if (options.supportPointer) {\r\n on(el, 'pointerdown', this._onTapStart);\r\n } else {\r\n on(el, 'mousedown', this._onTapStart);\r\n on(el, 'touchstart', this._onTapStart);\r\n }\r\n\r\n if (this.nativeDraggable) {\r\n on(el, 'dragover', this);\r\n on(el, 'dragenter', this);\r\n }\r\n\r\n sortables.push(this.el); // Restore sorting\r\n\r\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\r\n\r\n _extends(this, AnimationStateManager());\r\n }\r\n\r\n Sortable.prototype =\r\n /** @lends Sortable.prototype */\r\n {\r\n constructor: Sortable,\r\n _isOutsideThisEl: function _isOutsideThisEl(target) {\r\n if (!this.el.contains(target) && target !== this.el) {\r\n lastTarget = null;\r\n }\r\n },\r\n _getDirection: function _getDirection(evt, target) {\r\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\r\n },\r\n _onTapStart: function _onTapStart(\r\n /** Event|TouchEvent */\r\n evt) {\r\n if (!evt.cancelable) return;\r\n\r\n var _this = this,\r\n el = this.el,\r\n options = this.options,\r\n preventOnFilter = options.preventOnFilter,\r\n type = evt.type,\r\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\r\n target = (touch || evt).target,\r\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\r\n filter = options.filter;\r\n\r\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\r\n\r\n\r\n if (dragEl) {\r\n return;\r\n }\r\n\r\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\r\n return; // only left button and enabled\r\n } // cancel dnd if original target is content editable\r\n\r\n\r\n if (originalTarget.isContentEditable) {\r\n return;\r\n } // Safari ignores further event handling after mousedown\r\n\r\n\r\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\r\n return;\r\n }\r\n\r\n target = closest(target, options.draggable, el, false);\r\n\r\n if (target && target.animated) {\r\n return;\r\n }\r\n\r\n if (lastDownEl === target) {\r\n // Ignoring duplicate `down`\r\n return;\r\n } // Get the index of the dragged element within its parent\r\n\r\n\r\n oldIndex = index(target);\r\n oldDraggableIndex = index(target, options.draggable); // Check filter\r\n\r\n if (typeof filter === 'function') {\r\n if (filter.call(this, evt, target, this)) {\r\n _dispatchEvent({\r\n sortable: _this,\r\n rootEl: originalTarget,\r\n name: 'filter',\r\n targetEl: target,\r\n toEl: el,\r\n fromEl: el\r\n });\r\n\r\n pluginEvent('filter', _this, {\r\n evt: evt\r\n });\r\n preventOnFilter && evt.cancelable && evt.preventDefault();\r\n return; // cancel dnd\r\n }\r\n } else if (filter) {\r\n filter = filter.split(',').some(function (criteria) {\r\n criteria = closest(originalTarget, criteria.trim(), el, false);\r\n\r\n if (criteria) {\r\n _dispatchEvent({\r\n sortable: _this,\r\n rootEl: criteria,\r\n name: 'filter',\r\n targetEl: target,\r\n fromEl: el,\r\n toEl: el\r\n });\r\n\r\n pluginEvent('filter', _this, {\r\n evt: evt\r\n });\r\n return true;\r\n }\r\n });\r\n\r\n if (filter) {\r\n preventOnFilter && evt.cancelable && evt.preventDefault();\r\n return; // cancel dnd\r\n }\r\n }\r\n\r\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\r\n return;\r\n } // Prepare `dragstart`\r\n\r\n\r\n this._prepareDragStart(evt, touch, target);\r\n },\r\n _prepareDragStart: function _prepareDragStart(\r\n /** Event */\r\n evt,\r\n /** Touch */\r\n touch,\r\n /** HTMLElement */\r\n target) {\r\n var _this = this,\r\n el = _this.el,\r\n options = _this.options,\r\n ownerDocument = el.ownerDocument,\r\n dragStartFn;\r\n\r\n if (target && !dragEl && target.parentNode === el) {\r\n var dragRect = getRect$1(target);\r\n rootEl = el;\r\n dragEl = target;\r\n parentEl = dragEl.parentNode;\r\n nextEl = dragEl.nextSibling;\r\n lastDownEl = target;\r\n activeGroup = options.group;\r\n Sortable.dragged = dragEl;\r\n tapEvt = {\r\n target: dragEl,\r\n clientX: (touch || evt).clientX,\r\n clientY: (touch || evt).clientY\r\n };\r\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\r\n tapDistanceTop = tapEvt.clientY - dragRect.top;\r\n this._lastX = (touch || evt).clientX;\r\n this._lastY = (touch || evt).clientY;\r\n dragEl.style['will-change'] = 'all';\r\n\r\n dragStartFn = function dragStartFn() {\r\n pluginEvent('delayEnded', _this, {\r\n evt: evt\r\n });\r\n\r\n if (Sortable.eventCanceled) {\r\n _this._onDrop();\r\n\r\n return;\r\n } // Delayed drag has been triggered\r\n // we can re-enable the events: touchmove/mousemove\r\n\r\n\r\n _this._disableDelayedDragEvents();\r\n\r\n if (!FireFox && _this.nativeDraggable) {\r\n dragEl.draggable = true;\r\n } // Bind the events: dragstart/dragend\r\n\r\n\r\n _this._triggerDragStart(evt, touch); // Drag start event\r\n\r\n\r\n _dispatchEvent({\r\n sortable: _this,\r\n name: 'choose',\r\n originalEvent: evt\r\n }); // Chosen item\r\n\r\n\r\n toggleClass$1(dragEl, options.chosenClass, true);\r\n }; // Disable \"draggable\"\r\n\r\n\r\n options.ignore.split(',').forEach(function (criteria) {\r\n find$2(dragEl, criteria.trim(), _disableDraggable);\r\n });\r\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\r\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\r\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\r\n on(ownerDocument, 'mouseup', _this._onDrop);\r\n on(ownerDocument, 'touchend', _this._onDrop);\r\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\r\n\r\n if (FireFox && this.nativeDraggable) {\r\n this.options.touchStartThreshold = 4;\r\n dragEl.draggable = true;\r\n }\r\n\r\n pluginEvent('delayStart', this, {\r\n evt: evt\r\n }); // Delay is impossible for native DnD in Edge or IE\r\n\r\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\r\n if (Sortable.eventCanceled) {\r\n this._onDrop();\r\n\r\n return;\r\n } // If the user moves the pointer or let go the click or touch\r\n // before the delay has been reached:\r\n // disable the delayed drag\r\n\r\n\r\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\r\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\r\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\r\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\r\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\r\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\r\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\r\n } else {\r\n dragStartFn();\r\n }\r\n }\r\n },\r\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\r\n /** TouchEvent|PointerEvent **/\r\n e) {\r\n var touch = e.touches ? e.touches[0] : e;\r\n\r\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\r\n this._disableDelayedDrag();\r\n }\r\n },\r\n _disableDelayedDrag: function _disableDelayedDrag() {\r\n dragEl && _disableDraggable(dragEl);\r\n clearTimeout(this._dragStartTimer);\r\n\r\n this._disableDelayedDragEvents();\r\n },\r\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\r\n var ownerDocument = this.el.ownerDocument;\r\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\r\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\r\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\r\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\r\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\r\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\r\n },\r\n _triggerDragStart: function _triggerDragStart(\r\n /** Event */\r\n evt,\r\n /** Touch */\r\n touch) {\r\n touch = touch || evt.pointerType == 'touch' && evt;\r\n\r\n if (!this.nativeDraggable || touch) {\r\n if (this.options.supportPointer) {\r\n on(document, 'pointermove', this._onTouchMove);\r\n } else if (touch) {\r\n on(document, 'touchmove', this._onTouchMove);\r\n } else {\r\n on(document, 'mousemove', this._onTouchMove);\r\n }\r\n } else {\r\n on(dragEl, 'dragend', this);\r\n on(rootEl, 'dragstart', this._onDragStart);\r\n }\r\n\r\n try {\r\n if (document.selection) {\r\n // Timeout neccessary for IE9\r\n _nextTick(function () {\r\n document.selection.empty();\r\n });\r\n } else {\r\n window.getSelection().removeAllRanges();\r\n }\r\n } catch (err) {}\r\n },\r\n _dragStarted: function _dragStarted(fallback, evt) {\r\n\r\n awaitingDragStarted = false;\r\n\r\n if (rootEl && dragEl) {\r\n pluginEvent('dragStarted', this, {\r\n evt: evt\r\n });\r\n\r\n if (this.nativeDraggable) {\r\n on(document, 'dragover', _checkOutsideTargetEl);\r\n }\r\n\r\n var options = this.options; // Apply effect\r\n\r\n !fallback && toggleClass$1(dragEl, options.dragClass, false);\r\n toggleClass$1(dragEl, options.ghostClass, true);\r\n Sortable.active = this;\r\n fallback && this._appendGhost(); // Drag start event\r\n\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'start',\r\n originalEvent: evt\r\n });\r\n } else {\r\n this._nulling();\r\n }\r\n },\r\n _emulateDragOver: function _emulateDragOver() {\r\n if (touchEvt) {\r\n this._lastX = touchEvt.clientX;\r\n this._lastY = touchEvt.clientY;\r\n\r\n _hideGhostForTarget();\r\n\r\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\r\n var parent = target;\r\n\r\n while (target && target.shadowRoot) {\r\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\r\n if (target === parent) break;\r\n parent = target;\r\n }\r\n\r\n dragEl.parentNode[expando]._isOutsideThisEl(target);\r\n\r\n if (parent) {\r\n do {\r\n if (parent[expando]) {\r\n var inserted = void 0;\r\n inserted = parent[expando]._onDragOver({\r\n clientX: touchEvt.clientX,\r\n clientY: touchEvt.clientY,\r\n target: target,\r\n rootEl: parent\r\n });\r\n\r\n if (inserted && !this.options.dragoverBubble) {\r\n break;\r\n }\r\n }\r\n\r\n target = parent; // store last element\r\n }\r\n /* jshint boss:true */\r\n while (parent = parent.parentNode);\r\n }\r\n\r\n _unhideGhostForTarget();\r\n }\r\n },\r\n _onTouchMove: function _onTouchMove(\r\n /**TouchEvent*/\r\n evt) {\r\n if (tapEvt) {\r\n var options = this.options,\r\n fallbackTolerance = options.fallbackTolerance,\r\n fallbackOffset = options.fallbackOffset,\r\n touch = evt.touches ? evt.touches[0] : evt,\r\n ghostMatrix = ghostEl && matrix(ghostEl, true),\r\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\r\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\r\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\r\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\r\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\r\n\r\n if (!Sortable.active && !awaitingDragStarted) {\r\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\r\n return;\r\n }\r\n\r\n this._onDragStart(evt, true);\r\n }\r\n\r\n if (ghostEl) {\r\n if (ghostMatrix) {\r\n ghostMatrix.e += dx - (lastDx || 0);\r\n ghostMatrix.f += dy - (lastDy || 0);\r\n } else {\r\n ghostMatrix = {\r\n a: 1,\r\n b: 0,\r\n c: 0,\r\n d: 1,\r\n e: dx,\r\n f: dy\r\n };\r\n }\r\n\r\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\r\n css(ghostEl, 'webkitTransform', cssMatrix);\r\n css(ghostEl, 'mozTransform', cssMatrix);\r\n css(ghostEl, 'msTransform', cssMatrix);\r\n css(ghostEl, 'transform', cssMatrix);\r\n lastDx = dx;\r\n lastDy = dy;\r\n touchEvt = touch;\r\n }\r\n\r\n evt.cancelable && evt.preventDefault();\r\n }\r\n },\r\n _appendGhost: function _appendGhost() {\r\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\r\n // Not being adjusted for\r\n if (!ghostEl) {\r\n var container = this.options.fallbackOnBody ? document.body : rootEl,\r\n rect = getRect$1(dragEl, true, PositionGhostAbsolutely, true, container),\r\n options = this.options; // Position absolutely\r\n\r\n if (PositionGhostAbsolutely) {\r\n // Get relatively positioned parent\r\n ghostRelativeParent = container;\r\n\r\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\r\n ghostRelativeParent = ghostRelativeParent.parentNode;\r\n }\r\n\r\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\r\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\r\n rect.top += ghostRelativeParent.scrollTop;\r\n rect.left += ghostRelativeParent.scrollLeft;\r\n } else {\r\n ghostRelativeParent = getWindowScrollingElement();\r\n }\r\n\r\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\r\n }\r\n\r\n ghostEl = dragEl.cloneNode(true);\r\n toggleClass$1(ghostEl, options.ghostClass, false);\r\n toggleClass$1(ghostEl, options.fallbackClass, true);\r\n toggleClass$1(ghostEl, options.dragClass, true);\r\n css(ghostEl, 'transition', '');\r\n css(ghostEl, 'transform', '');\r\n css(ghostEl, 'box-sizing', 'border-box');\r\n css(ghostEl, 'margin', 0);\r\n css(ghostEl, 'top', rect.top);\r\n css(ghostEl, 'left', rect.left);\r\n css(ghostEl, 'width', rect.width);\r\n css(ghostEl, 'height', rect.height);\r\n css(ghostEl, 'opacity', '0.8');\r\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\r\n css(ghostEl, 'zIndex', '100000');\r\n css(ghostEl, 'pointerEvents', 'none');\r\n Sortable.ghost = ghostEl;\r\n container.appendChild(ghostEl); // Set transform-origin\r\n\r\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\r\n }\r\n },\r\n _onDragStart: function _onDragStart(\r\n /**Event*/\r\n evt,\r\n /**boolean*/\r\n fallback) {\r\n var _this = this;\r\n\r\n var dataTransfer = evt.dataTransfer;\r\n var options = _this.options;\r\n pluginEvent('dragStart', this, {\r\n evt: evt\r\n });\r\n\r\n if (Sortable.eventCanceled) {\r\n this._onDrop();\r\n\r\n return;\r\n }\r\n\r\n pluginEvent('setupClone', this);\r\n\r\n if (!Sortable.eventCanceled) {\r\n cloneEl = clone(dragEl);\r\n cloneEl.draggable = false;\r\n cloneEl.style['will-change'] = '';\r\n\r\n this._hideClone();\r\n\r\n toggleClass$1(cloneEl, this.options.chosenClass, false);\r\n Sortable.clone = cloneEl;\r\n } // #1143: IFrame support workaround\r\n\r\n\r\n _this.cloneId = _nextTick(function () {\r\n pluginEvent('clone', _this);\r\n if (Sortable.eventCanceled) return;\r\n\r\n if (!_this.options.removeCloneOnHide) {\r\n rootEl.insertBefore(cloneEl, dragEl);\r\n }\r\n\r\n _this._hideClone();\r\n\r\n _dispatchEvent({\r\n sortable: _this,\r\n name: 'clone'\r\n });\r\n });\r\n !fallback && toggleClass$1(dragEl, options.dragClass, true); // Set proper drop events\r\n\r\n if (fallback) {\r\n ignoreNextClick = true;\r\n _this._loopId = setInterval(_this._emulateDragOver, 50);\r\n } else {\r\n // Undo what was set in _prepareDragStart before drag started\r\n off(document, 'mouseup', _this._onDrop);\r\n off(document, 'touchend', _this._onDrop);\r\n off(document, 'touchcancel', _this._onDrop);\r\n\r\n if (dataTransfer) {\r\n dataTransfer.effectAllowed = 'move';\r\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\r\n }\r\n\r\n on(document, 'drop', _this); // #1276 fix:\r\n\r\n css(dragEl, 'transform', 'translateZ(0)');\r\n }\r\n\r\n awaitingDragStarted = true;\r\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\r\n on(document, 'selectstart', _this);\r\n moved = true;\r\n\r\n if (Safari) {\r\n css(document.body, 'user-select', 'none');\r\n }\r\n },\r\n // Returns true - if no further action is needed (either inserted or another condition)\r\n _onDragOver: function _onDragOver(\r\n /**Event*/\r\n evt) {\r\n var el = this.el,\r\n target = evt.target,\r\n dragRect,\r\n targetRect,\r\n revert,\r\n options = this.options,\r\n group = options.group,\r\n activeSortable = Sortable.active,\r\n isOwner = activeGroup === group,\r\n canSort = options.sort,\r\n fromSortable = putSortable || activeSortable,\r\n vertical,\r\n _this = this,\r\n completedFired = false;\r\n\r\n if (_silent) return;\r\n\r\n function dragOverEvent(name, extra) {\r\n pluginEvent(name, _this, _objectSpread({\r\n evt: evt,\r\n isOwner: isOwner,\r\n axis: vertical ? 'vertical' : 'horizontal',\r\n revert: revert,\r\n dragRect: dragRect,\r\n targetRect: targetRect,\r\n canSort: canSort,\r\n fromSortable: fromSortable,\r\n target: target,\r\n completed: completed,\r\n onMove: function onMove(target, after) {\r\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect$1(target), evt, after);\r\n },\r\n changed: changed\r\n }, extra));\r\n } // Capture animation state\r\n\r\n\r\n function capture() {\r\n dragOverEvent('dragOverAnimationCapture');\r\n\r\n _this.captureAnimationState();\r\n\r\n if (_this !== fromSortable) {\r\n fromSortable.captureAnimationState();\r\n }\r\n } // Return invocation when dragEl is inserted (or completed)\r\n\r\n\r\n function completed(insertion) {\r\n dragOverEvent('dragOverCompleted', {\r\n insertion: insertion\r\n });\r\n\r\n if (insertion) {\r\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\r\n if (isOwner) {\r\n activeSortable._hideClone();\r\n } else {\r\n activeSortable._showClone(_this);\r\n }\r\n\r\n if (_this !== fromSortable) {\r\n // Set ghost class to new sortable's ghost class\r\n toggleClass$1(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\r\n toggleClass$1(dragEl, options.ghostClass, true);\r\n }\r\n\r\n if (putSortable !== _this && _this !== Sortable.active) {\r\n putSortable = _this;\r\n } else if (_this === Sortable.active && putSortable) {\r\n putSortable = null;\r\n } // Animation\r\n\r\n\r\n if (fromSortable === _this) {\r\n _this._ignoreWhileAnimating = target;\r\n }\r\n\r\n _this.animateAll(function () {\r\n dragOverEvent('dragOverAnimationComplete');\r\n _this._ignoreWhileAnimating = null;\r\n });\r\n\r\n if (_this !== fromSortable) {\r\n fromSortable.animateAll();\r\n fromSortable._ignoreWhileAnimating = null;\r\n }\r\n } // Null lastTarget if it is not inside a previously swapped element\r\n\r\n\r\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\r\n lastTarget = null;\r\n } // no bubbling and not fallback\r\n\r\n\r\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\r\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\r\n\r\n\r\n !insertion && nearestEmptyInsertDetectEvent(evt);\r\n }\r\n\r\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\r\n return completedFired = true;\r\n } // Call when dragEl has been inserted\r\n\r\n\r\n function changed() {\r\n newIndex = index(dragEl);\r\n newDraggableIndex = index(dragEl, options.draggable);\r\n\r\n _dispatchEvent({\r\n sortable: _this,\r\n name: 'change',\r\n toEl: el,\r\n newIndex: newIndex,\r\n newDraggableIndex: newDraggableIndex,\r\n originalEvent: evt\r\n });\r\n }\r\n\r\n if (evt.preventDefault !== void 0) {\r\n evt.cancelable && evt.preventDefault();\r\n }\r\n\r\n target = closest(target, options.draggable, el, true);\r\n dragOverEvent('dragOver');\r\n if (Sortable.eventCanceled) return completedFired;\r\n\r\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\r\n return completed(false);\r\n }\r\n\r\n ignoreNextClick = false;\r\n\r\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\r\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\r\n vertical = this._getDirection(evt, target) === 'vertical';\r\n dragRect = getRect$1(dragEl);\r\n dragOverEvent('dragOverValid');\r\n if (Sortable.eventCanceled) return completedFired;\r\n\r\n if (revert) {\r\n parentEl = rootEl; // actualization\r\n\r\n capture();\r\n\r\n this._hideClone();\r\n\r\n dragOverEvent('revert');\r\n\r\n if (!Sortable.eventCanceled) {\r\n if (nextEl) {\r\n rootEl.insertBefore(dragEl, nextEl);\r\n } else {\r\n rootEl.appendChild(dragEl);\r\n }\r\n }\r\n\r\n return completed(true);\r\n }\r\n\r\n var elLastChild = lastChild(el, options.draggable);\r\n\r\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\r\n // If already at end of list: Do not insert\r\n if (elLastChild === dragEl) {\r\n return completed(false);\r\n } // assign target only if condition is true\r\n\r\n\r\n if (elLastChild && el === evt.target) {\r\n target = elLastChild;\r\n }\r\n\r\n if (target) {\r\n targetRect = getRect$1(target);\r\n }\r\n\r\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\r\n capture();\r\n el.appendChild(dragEl);\r\n parentEl = el; // actualization\r\n\r\n changed();\r\n return completed(true);\r\n }\r\n } else if (target.parentNode === el) {\r\n targetRect = getRect$1(target);\r\n var direction = 0,\r\n targetBeforeFirstSwap,\r\n differentLevel = dragEl.parentNode !== el,\r\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\r\n side1 = vertical ? 'top' : 'left',\r\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\r\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\r\n\r\n if (lastTarget !== target) {\r\n targetBeforeFirstSwap = targetRect[side1];\r\n pastFirstInvertThresh = false;\r\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\r\n }\r\n\r\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\r\n var sibling;\r\n\r\n if (direction !== 0) {\r\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\r\n var dragIndex = index(dragEl);\r\n\r\n do {\r\n dragIndex -= direction;\r\n sibling = parentEl.children[dragIndex];\r\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\r\n } // If dragEl is already beside target: Do not insert\r\n\r\n\r\n if (direction === 0 || sibling === target) {\r\n return completed(false);\r\n }\r\n\r\n lastTarget = target;\r\n lastDirection = direction;\r\n var nextSibling = target.nextElementSibling,\r\n after = false;\r\n after = direction === 1;\r\n\r\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\r\n\r\n if (moveVector !== false) {\r\n if (moveVector === 1 || moveVector === -1) {\r\n after = moveVector === 1;\r\n }\r\n\r\n _silent = true;\r\n setTimeout(_unsilent, 30);\r\n capture();\r\n\r\n if (after && !nextSibling) {\r\n el.appendChild(dragEl);\r\n } else {\r\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\r\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\r\n\r\n\r\n if (scrolledPastTop) {\r\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\r\n }\r\n\r\n parentEl = dragEl.parentNode; // actualization\r\n // must be done before animation\r\n\r\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\r\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect$1(target)[side1]);\r\n }\r\n\r\n changed();\r\n return completed(true);\r\n }\r\n }\r\n\r\n if (el.contains(dragEl)) {\r\n return completed(false);\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n _ignoreWhileAnimating: null,\r\n _offMoveEvents: function _offMoveEvents() {\r\n off(document, 'mousemove', this._onTouchMove);\r\n off(document, 'touchmove', this._onTouchMove);\r\n off(document, 'pointermove', this._onTouchMove);\r\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\r\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\r\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\r\n },\r\n _offUpEvents: function _offUpEvents() {\r\n var ownerDocument = this.el.ownerDocument;\r\n off(ownerDocument, 'mouseup', this._onDrop);\r\n off(ownerDocument, 'touchend', this._onDrop);\r\n off(ownerDocument, 'pointerup', this._onDrop);\r\n off(ownerDocument, 'touchcancel', this._onDrop);\r\n off(document, 'selectstart', this);\r\n },\r\n _onDrop: function _onDrop(\r\n /**Event*/\r\n evt) {\r\n var el = this.el,\r\n options = this.options; // Get the index of the dragged element within its parent\r\n\r\n newIndex = index(dragEl);\r\n newDraggableIndex = index(dragEl, options.draggable);\r\n pluginEvent('drop', this, {\r\n evt: evt\r\n });\r\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\r\n\r\n newIndex = index(dragEl);\r\n newDraggableIndex = index(dragEl, options.draggable);\r\n\r\n if (Sortable.eventCanceled) {\r\n this._nulling();\r\n\r\n return;\r\n }\r\n\r\n awaitingDragStarted = false;\r\n isCircumstantialInvert = false;\r\n pastFirstInvertThresh = false;\r\n clearInterval(this._loopId);\r\n clearTimeout(this._dragStartTimer);\r\n\r\n _cancelNextTick(this.cloneId);\r\n\r\n _cancelNextTick(this._dragStartId); // Unbind events\r\n\r\n\r\n if (this.nativeDraggable) {\r\n off(document, 'drop', this);\r\n off(el, 'dragstart', this._onDragStart);\r\n }\r\n\r\n this._offMoveEvents();\r\n\r\n this._offUpEvents();\r\n\r\n if (Safari) {\r\n css(document.body, 'user-select', '');\r\n }\r\n\r\n css(dragEl, 'transform', '');\r\n\r\n if (evt) {\r\n if (moved) {\r\n evt.cancelable && evt.preventDefault();\r\n !options.dropBubble && evt.stopPropagation();\r\n }\r\n\r\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\r\n\r\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\r\n // Remove clone(s)\r\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\r\n }\r\n\r\n if (dragEl) {\r\n if (this.nativeDraggable) {\r\n off(dragEl, 'dragend', this);\r\n }\r\n\r\n _disableDraggable(dragEl);\r\n\r\n dragEl.style['will-change'] = ''; // Remove classes\r\n // ghostClass is added in dragStarted\r\n\r\n if (moved && !awaitingDragStarted) {\r\n toggleClass$1(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\r\n }\r\n\r\n toggleClass$1(dragEl, this.options.chosenClass, false); // Drag stop event\r\n\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'unchoose',\r\n toEl: parentEl,\r\n newIndex: null,\r\n newDraggableIndex: null,\r\n originalEvent: evt\r\n });\r\n\r\n if (rootEl !== parentEl) {\r\n if (newIndex >= 0) {\r\n // Add event\r\n _dispatchEvent({\r\n rootEl: parentEl,\r\n name: 'add',\r\n toEl: parentEl,\r\n fromEl: rootEl,\r\n originalEvent: evt\r\n }); // Remove event\r\n\r\n\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'remove',\r\n toEl: parentEl,\r\n originalEvent: evt\r\n }); // drag from one list and drop into another\r\n\r\n\r\n _dispatchEvent({\r\n rootEl: parentEl,\r\n name: 'sort',\r\n toEl: parentEl,\r\n fromEl: rootEl,\r\n originalEvent: evt\r\n });\r\n\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'sort',\r\n toEl: parentEl,\r\n originalEvent: evt\r\n });\r\n }\r\n\r\n putSortable && putSortable.save();\r\n } else {\r\n if (newIndex !== oldIndex) {\r\n if (newIndex >= 0) {\r\n // drag & drop within the same list\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'update',\r\n toEl: parentEl,\r\n originalEvent: evt\r\n });\r\n\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'sort',\r\n toEl: parentEl,\r\n originalEvent: evt\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (Sortable.active) {\r\n /* jshint eqnull:true */\r\n if (newIndex == null || newIndex === -1) {\r\n newIndex = oldIndex;\r\n newDraggableIndex = oldDraggableIndex;\r\n }\r\n\r\n _dispatchEvent({\r\n sortable: this,\r\n name: 'end',\r\n toEl: parentEl,\r\n originalEvent: evt\r\n }); // Save sorting\r\n\r\n\r\n this.save();\r\n }\r\n }\r\n }\r\n\r\n this._nulling();\r\n },\r\n _nulling: function _nulling() {\r\n pluginEvent('nulling', this);\r\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\r\n savedInputChecked.forEach(function (el) {\r\n el.checked = true;\r\n });\r\n savedInputChecked.length = lastDx = lastDy = 0;\r\n },\r\n handleEvent: function handleEvent(\r\n /**Event*/\r\n evt) {\r\n switch (evt.type) {\r\n case 'drop':\r\n case 'dragend':\r\n this._onDrop(evt);\r\n\r\n break;\r\n\r\n case 'dragenter':\r\n case 'dragover':\r\n if (dragEl) {\r\n this._onDragOver(evt);\r\n\r\n _globalDragOver(evt);\r\n }\r\n\r\n break;\r\n\r\n case 'selectstart':\r\n evt.preventDefault();\r\n break;\r\n }\r\n },\r\n\r\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\r\n toArray: function toArray() {\r\n var order = [],\r\n el,\r\n children = this.el.children,\r\n i = 0,\r\n n = children.length,\r\n options = this.options;\r\n\r\n for (; i < n; i++) {\r\n el = children[i];\r\n\r\n if (closest(el, options.draggable, this.el, false)) {\r\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\r\n }\r\n }\r\n\r\n return order;\r\n },\r\n\r\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\r\n sort: function sort(order, useAnimation) {\r\n var items = {},\r\n rootEl = this.el;\r\n this.toArray().forEach(function (id, i) {\r\n var el = rootEl.children[i];\r\n\r\n if (closest(el, this.options.draggable, rootEl, false)) {\r\n items[id] = el;\r\n }\r\n }, this);\r\n useAnimation && this.captureAnimationState();\r\n order.forEach(function (id) {\r\n if (items[id]) {\r\n rootEl.removeChild(items[id]);\r\n rootEl.appendChild(items[id]);\r\n }\r\n });\r\n useAnimation && this.animateAll();\r\n },\r\n\r\n /**\r\n * Save the current sorting\r\n */\r\n save: function save() {\r\n var store = this.options.store;\r\n store && store.set && store.set(this);\r\n },\r\n\r\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\r\n closest: function closest$1(el, selector) {\r\n return closest(el, selector || this.options.draggable, this.el, false);\r\n },\r\n\r\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\r\n option: function option(name, value) {\r\n var options = this.options;\r\n\r\n if (value === void 0) {\r\n return options[name];\r\n } else {\r\n var modifiedValue = PluginManager.modifyOption(this, name, value);\r\n\r\n if (typeof modifiedValue !== 'undefined') {\r\n options[name] = modifiedValue;\r\n } else {\r\n options[name] = value;\r\n }\r\n\r\n if (name === 'group') {\r\n _prepareGroup(options);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Destroy\r\n */\r\n destroy: function destroy() {\r\n pluginEvent('destroy', this);\r\n var el = this.el;\r\n el[expando] = null;\r\n off(el, 'mousedown', this._onTapStart);\r\n off(el, 'touchstart', this._onTapStart);\r\n off(el, 'pointerdown', this._onTapStart);\r\n\r\n if (this.nativeDraggable) {\r\n off(el, 'dragover', this);\r\n off(el, 'dragenter', this);\r\n } // Remove draggable attributes\r\n\r\n\r\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\r\n el.removeAttribute('draggable');\r\n });\r\n\r\n this._onDrop();\r\n\r\n this._disableDelayedDragEvents();\r\n\r\n sortables.splice(sortables.indexOf(this.el), 1);\r\n this.el = el = null;\r\n },\r\n _hideClone: function _hideClone() {\r\n if (!cloneHidden) {\r\n pluginEvent('hideClone', this);\r\n if (Sortable.eventCanceled) return;\r\n css(cloneEl, 'display', 'none');\r\n\r\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\r\n cloneEl.parentNode.removeChild(cloneEl);\r\n }\r\n\r\n cloneHidden = true;\r\n }\r\n },\r\n _showClone: function _showClone(putSortable) {\r\n if (putSortable.lastPutMode !== 'clone') {\r\n this._hideClone();\r\n\r\n return;\r\n }\r\n\r\n if (cloneHidden) {\r\n pluginEvent('showClone', this);\r\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\r\n\r\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\r\n rootEl.insertBefore(cloneEl, dragEl);\r\n } else if (nextEl) {\r\n rootEl.insertBefore(cloneEl, nextEl);\r\n } else {\r\n rootEl.appendChild(cloneEl);\r\n }\r\n\r\n if (this.options.group.revertClone) {\r\n this.animate(dragEl, cloneEl);\r\n }\r\n\r\n css(cloneEl, 'display', '');\r\n cloneHidden = false;\r\n }\r\n }\r\n };\r\n\r\n function _globalDragOver(\r\n /**Event*/\r\n evt) {\r\n if (evt.dataTransfer) {\r\n evt.dataTransfer.dropEffect = 'move';\r\n }\r\n\r\n evt.cancelable && evt.preventDefault();\r\n }\r\n\r\n function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\r\n var evt,\r\n sortable = fromEl[expando],\r\n onMoveFn = sortable.options.onMove,\r\n retVal; // Support for new CustomEvent feature\r\n\r\n if (window.CustomEvent && !IE11OrLess && !Edge) {\r\n evt = new CustomEvent('move', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n } else {\r\n evt = document.createEvent('Event');\r\n evt.initEvent('move', true, true);\r\n }\r\n\r\n evt.to = toEl;\r\n evt.from = fromEl;\r\n evt.dragged = dragEl;\r\n evt.draggedRect = dragRect;\r\n evt.related = targetEl || toEl;\r\n evt.relatedRect = targetRect || getRect$1(toEl);\r\n evt.willInsertAfter = willInsertAfter;\r\n evt.originalEvent = originalEvent;\r\n fromEl.dispatchEvent(evt);\r\n\r\n if (onMoveFn) {\r\n retVal = onMoveFn.call(sortable, evt, originalEvent);\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n function _disableDraggable(el) {\r\n el.draggable = false;\r\n }\r\n\r\n function _unsilent() {\r\n _silent = false;\r\n }\r\n\r\n function _ghostIsLast(evt, vertical, sortable) {\r\n var rect = getRect$1(lastChild(sortable.el, sortable.options.draggable));\r\n var spacer = 10;\r\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\r\n }\r\n\r\n function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\r\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\r\n targetLength = vertical ? targetRect.height : targetRect.width,\r\n targetS1 = vertical ? targetRect.top : targetRect.left,\r\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\r\n invert = false;\r\n\r\n if (!invertSwap) {\r\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\r\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\r\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\r\n // check if past first invert threshold on side opposite of lastDirection\r\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\r\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\r\n pastFirstInvertThresh = true;\r\n }\r\n\r\n if (!pastFirstInvertThresh) {\r\n // dragEl shadow (target move distance shadow)\r\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\r\n : mouseOnAxis > targetS2 - targetMoveDistance) {\r\n return -lastDirection;\r\n }\r\n } else {\r\n invert = true;\r\n }\r\n } else {\r\n // Regular\r\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\r\n return _getInsertDirection(target);\r\n }\r\n }\r\n }\r\n\r\n invert = invert || invertSwap;\r\n\r\n if (invert) {\r\n // Invert of regular\r\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\r\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n /**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\r\n\r\n\r\n function _getInsertDirection(target) {\r\n if (index(dragEl) < index(target)) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n /**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\r\n\r\n\r\n function _generateId(el) {\r\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\r\n i = str.length,\r\n sum = 0;\r\n\r\n while (i--) {\r\n sum += str.charCodeAt(i);\r\n }\r\n\r\n return sum.toString(36);\r\n }\r\n\r\n function _saveInputCheckedState(root) {\r\n savedInputChecked.length = 0;\r\n var inputs = root.getElementsByTagName('input');\r\n var idx = inputs.length;\r\n\r\n while (idx--) {\r\n var el = inputs[idx];\r\n el.checked && savedInputChecked.push(el);\r\n }\r\n }\r\n\r\n function _nextTick(fn) {\r\n return setTimeout(fn, 0);\r\n }\r\n\r\n function _cancelNextTick(id) {\r\n return clearTimeout(id);\r\n } // Fixed #973:\r\n\r\n\r\n if (documentExists) {\r\n on(document, 'touchmove', function (evt) {\r\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n });\r\n } // Export utils\r\n\r\n\r\n Sortable.utils = {\r\n on: on,\r\n off: off,\r\n css: css,\r\n find: find$2,\r\n is: function is(el, selector) {\r\n return !!closest(el, selector, el, false);\r\n },\r\n extend: extend,\r\n throttle: throttle$2,\r\n closest: closest,\r\n toggleClass: toggleClass$1,\r\n clone: clone,\r\n index: index,\r\n nextTick: _nextTick,\r\n cancelNextTick: _cancelNextTick,\r\n detectDirection: _detectDirection,\r\n getChild: getChild\r\n };\r\n /**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\r\n\r\n Sortable.get = function (element) {\r\n return element[expando];\r\n };\r\n /**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\r\n\r\n\r\n Sortable.mount = function () {\r\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\r\n plugins[_key] = arguments[_key];\r\n }\r\n\r\n if (plugins[0].constructor === Array) plugins = plugins[0];\r\n plugins.forEach(function (plugin) {\r\n if (!plugin.prototype || !plugin.prototype.constructor) {\r\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\r\n }\r\n\r\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\r\n PluginManager.mount(plugin);\r\n });\r\n };\r\n /**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\r\n\r\n\r\n Sortable.create = function (el, options) {\r\n return new Sortable(el, options);\r\n }; // Export\r\n\r\n\r\n Sortable.version = version$1;\r\n\r\n var autoScrolls = [],\r\n scrollEl,\r\n scrollRootEl,\r\n scrolling = false,\r\n lastAutoScrollX,\r\n lastAutoScrollY,\r\n touchEvt$1,\r\n pointerElemChangedInterval;\r\n\r\n function AutoScrollPlugin() {\r\n function AutoScroll() {\r\n this.defaults = {\r\n scroll: true,\r\n scrollSensitivity: 30,\r\n scrollSpeed: 10,\r\n bubbleScroll: true\r\n }; // Bind all private methods\r\n\r\n for (var fn in this) {\r\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\r\n this[fn] = this[fn].bind(this);\r\n }\r\n }\r\n }\r\n\r\n AutoScroll.prototype = {\r\n dragStarted: function dragStarted(_ref) {\r\n var originalEvent = _ref.originalEvent;\r\n\r\n if (this.sortable.nativeDraggable) {\r\n on(document, 'dragover', this._handleAutoScroll);\r\n } else {\r\n if (this.options.supportPointer) {\r\n on(document, 'pointermove', this._handleFallbackAutoScroll);\r\n } else if (originalEvent.touches) {\r\n on(document, 'touchmove', this._handleFallbackAutoScroll);\r\n } else {\r\n on(document, 'mousemove', this._handleFallbackAutoScroll);\r\n }\r\n }\r\n },\r\n dragOverCompleted: function dragOverCompleted(_ref2) {\r\n var originalEvent = _ref2.originalEvent;\r\n\r\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\r\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\r\n this._handleAutoScroll(originalEvent);\r\n }\r\n },\r\n drop: function drop() {\r\n if (this.sortable.nativeDraggable) {\r\n off(document, 'dragover', this._handleAutoScroll);\r\n } else {\r\n off(document, 'pointermove', this._handleFallbackAutoScroll);\r\n off(document, 'touchmove', this._handleFallbackAutoScroll);\r\n off(document, 'mousemove', this._handleFallbackAutoScroll);\r\n }\r\n\r\n clearPointerElemChangedInterval();\r\n clearAutoScrolls();\r\n cancelThrottle();\r\n },\r\n nulling: function nulling() {\r\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\r\n autoScrolls.length = 0;\r\n },\r\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\r\n this._handleAutoScroll(evt, true);\r\n },\r\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\r\n var _this = this;\r\n\r\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\r\n y = (evt.touches ? evt.touches[0] : evt).clientY,\r\n elem = document.elementFromPoint(x, y);\r\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\r\n // Edge's autoscroll seems too conditional,\r\n // MACOS Safari does not have autoscroll,\r\n // Firefox and Chrome are good\r\n\r\n if (fallback || Edge || IE11OrLess || Safari) {\r\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\r\n\r\n var ogElemScroller = getParentAutoScrollElement(elem, true);\r\n\r\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\r\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\r\n\r\n pointerElemChangedInterval = setInterval(function () {\r\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\r\n\r\n if (newElem !== ogElemScroller) {\r\n ogElemScroller = newElem;\r\n clearAutoScrolls();\r\n }\r\n\r\n autoScroll(evt, _this.options, newElem, fallback);\r\n }, 10);\r\n lastAutoScrollX = x;\r\n lastAutoScrollY = y;\r\n }\r\n } else {\r\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\r\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\r\n clearAutoScrolls();\r\n return;\r\n }\r\n\r\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\r\n }\r\n }\r\n };\r\n return _extends(AutoScroll, {\r\n pluginName: 'scroll',\r\n initializeByDefault: true\r\n });\r\n }\r\n\r\n function clearAutoScrolls() {\r\n autoScrolls.forEach(function (autoScroll) {\r\n clearInterval(autoScroll.pid);\r\n });\r\n autoScrolls = [];\r\n }\r\n\r\n function clearPointerElemChangedInterval() {\r\n clearInterval(pointerElemChangedInterval);\r\n }\r\n\r\n var autoScroll = throttle$2(function (evt, options, rootEl, isFallback) {\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\r\n if (!options.scroll) return;\r\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\r\n y = (evt.touches ? evt.touches[0] : evt).clientY,\r\n sens = options.scrollSensitivity,\r\n speed = options.scrollSpeed,\r\n winScroller = getWindowScrollingElement();\r\n var scrollThisInstance = false,\r\n scrollCustomFn; // New scroll root, set scrollEl\r\n\r\n if (scrollRootEl !== rootEl) {\r\n scrollRootEl = rootEl;\r\n clearAutoScrolls();\r\n scrollEl = options.scroll;\r\n scrollCustomFn = options.scrollFn;\r\n\r\n if (scrollEl === true) {\r\n scrollEl = getParentAutoScrollElement(rootEl, true);\r\n }\r\n }\r\n\r\n var layersOut = 0;\r\n var currentParent = scrollEl;\r\n\r\n do {\r\n var el = currentParent,\r\n rect = getRect$1(el),\r\n top = rect.top,\r\n bottom = rect.bottom,\r\n left = rect.left,\r\n right = rect.right,\r\n width = rect.width,\r\n height = rect.height,\r\n canScrollX = void 0,\r\n canScrollY = void 0,\r\n scrollWidth = el.scrollWidth,\r\n scrollHeight = el.scrollHeight,\r\n elCSS = css(el),\r\n scrollPosX = el.scrollLeft,\r\n scrollPosY = el.scrollTop;\r\n\r\n if (el === winScroller) {\r\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\r\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\r\n } else {\r\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\r\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\r\n }\r\n\r\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\r\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\r\n\r\n if (!autoScrolls[layersOut]) {\r\n for (var i = 0; i <= layersOut; i++) {\r\n if (!autoScrolls[i]) {\r\n autoScrolls[i] = {};\r\n }\r\n }\r\n }\r\n\r\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\r\n autoScrolls[layersOut].el = el;\r\n autoScrolls[layersOut].vx = vx;\r\n autoScrolls[layersOut].vy = vy;\r\n clearInterval(autoScrolls[layersOut].pid);\r\n\r\n if (vx != 0 || vy != 0) {\r\n scrollThisInstance = true;\r\n /* jshint loopfunc:true */\r\n\r\n autoScrolls[layersOut].pid = setInterval(function () {\r\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\r\n if (isFallback && this.layer === 0) {\r\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\r\n\r\n }\r\n\r\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\r\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\r\n\r\n if (typeof scrollCustomFn === 'function') {\r\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\r\n return;\r\n }\r\n }\r\n\r\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\r\n }.bind({\r\n layer: layersOut\r\n }), 24);\r\n }\r\n }\r\n\r\n layersOut++;\r\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\r\n\r\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\r\n }, 30);\r\n\r\n var drop = function drop(_ref) {\r\n var originalEvent = _ref.originalEvent,\r\n putSortable = _ref.putSortable,\r\n dragEl = _ref.dragEl,\r\n activeSortable = _ref.activeSortable,\r\n dispatchSortableEvent = _ref.dispatchSortableEvent,\r\n hideGhostForTarget = _ref.hideGhostForTarget,\r\n unhideGhostForTarget = _ref.unhideGhostForTarget;\r\n if (!originalEvent) return;\r\n var toSortable = putSortable || activeSortable;\r\n hideGhostForTarget();\r\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\r\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\r\n unhideGhostForTarget();\r\n\r\n if (toSortable && !toSortable.el.contains(target)) {\r\n dispatchSortableEvent('spill');\r\n this.onSpill({\r\n dragEl: dragEl,\r\n putSortable: putSortable\r\n });\r\n }\r\n };\r\n\r\n function Revert() {}\r\n\r\n Revert.prototype = {\r\n startIndex: null,\r\n dragStart: function dragStart(_ref2) {\r\n var oldDraggableIndex = _ref2.oldDraggableIndex;\r\n this.startIndex = oldDraggableIndex;\r\n },\r\n onSpill: function onSpill(_ref3) {\r\n var dragEl = _ref3.dragEl,\r\n putSortable = _ref3.putSortable;\r\n this.sortable.captureAnimationState();\r\n\r\n if (putSortable) {\r\n putSortable.captureAnimationState();\r\n }\r\n\r\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\r\n\r\n if (nextSibling) {\r\n this.sortable.el.insertBefore(dragEl, nextSibling);\r\n } else {\r\n this.sortable.el.appendChild(dragEl);\r\n }\r\n\r\n this.sortable.animateAll();\r\n\r\n if (putSortable) {\r\n putSortable.animateAll();\r\n }\r\n },\r\n drop: drop\r\n };\r\n\r\n _extends(Revert, {\r\n pluginName: 'revertOnSpill'\r\n });\r\n\r\n function Remove() {}\r\n\r\n Remove.prototype = {\r\n onSpill: function onSpill(_ref4) {\r\n var dragEl = _ref4.dragEl,\r\n putSortable = _ref4.putSortable;\r\n var parentSortable = putSortable || this.sortable;\r\n parentSortable.captureAnimationState();\r\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\r\n parentSortable.animateAll();\r\n },\r\n drop: drop\r\n };\r\n\r\n _extends(Remove, {\r\n pluginName: 'removeOnSpill'\r\n });\r\n\r\n Sortable.mount(new AutoScrollPlugin());\r\n Sortable.mount(Remove, Revert);\r\n\r\n var dom$v = new Dom();\r\n\r\n var renderSnippetPanel = function renderSnippetPanel(builder) {\r\n var util = new Util(builder);\r\n var builderStuff = util.builderStuff();\r\n var hideHandle = '';\r\n var sidePanel = builder.opts.sidePanel;\r\n\r\n if (builder.opts.snippetList === '#divSnippetList') {\r\n var html = \"
\\n
\");\r\n dom$v.appendHtml(builderStuff, html);\r\n\r\n if (!builder.opts.snippetHandle) {\r\n hideHandle = 'display:none;';\r\n }\r\n } else {\r\n hideHandle = 'display:none;';\r\n sidePanel = 'left';\r\n }\r\n\r\n var defaultcat = '';\r\n var defaultcatval = '';\r\n var catoptions = '';\r\n\r\n if (builder.opts.emailMode) {\r\n defaultcatval = builder.opts.defaultEmailSnippetCategory;\r\n\r\n for (var i = 0; i < builder.opts.emailSnippetCategories.length; i++) {\r\n catoptions += '
' + builder.opts.emailSnippetCategories[i][1] + '
';\r\n if (builder.opts.emailSnippetCategories[i][0] === builder.opts.defaultEmailSnippetCategory) defaultcat = builder.opts.emailSnippetCategories[i][1];\r\n }\r\n } else {\r\n defaultcatval = builder.opts.defaultSnippetCategory;\r\n\r\n for (var _i = 0; _i < builder.opts.snippetCategories.length; _i++) {\r\n catoptions += '
' + builder.opts.snippetCategories[_i][1] + '
';\r\n if (builder.opts.snippetCategories[_i][0] === builder.opts.defaultSnippetCategory) defaultcat = builder.opts.snippetCategories[_i][1];\r\n }\r\n }\r\n\r\n var html_snippets = '' + '
' + '
' + '' + defaultcat + '' + '' + '
' + '
' + catoptions + '
' + '
' + (sidePanel === 'right' ? '
' + '
' + '
' + '' + '
' : '
' + '
' + '
' + '' + '
') + '
' + '
';\r\n var snippetPanel = document.querySelector(builder.opts.snippetList);\r\n dom$v.appendHtml(snippetPanel, html_snippets);\r\n\r\n if (builder.opts.snippetList === '#divSnippetList') {\r\n // Hide snippet panel on content click\r\n document.addEventListener('click', function (e) {\r\n e = e || window.event;\r\n var target = e.target || e.srcElement;\r\n\r\n if (builder.opts.snippetsSidebarDisplay === 'auto') {\r\n if (dom$v.hasClass(snippetPanel, 'active')) {\r\n // let a = dom.parentsHasAttribute(target, 'contenteditable');\r\n // let b = dom.parentsHasClass(target, 'is-builder'); // builder area\r\n // if(a||b) {\r\n // hideSnippets(builder);\r\n // }\r\n var a = dom$v.parentsHasClass(target, 'is-builder'); // builder area\r\n\r\n if (a) {\r\n hideSnippets(builder);\r\n }\r\n }\r\n }\r\n }, false);\r\n }\r\n\r\n var snippetlist = document.querySelector('.is-design-list');\r\n var snippetPath = builder.opts.snippetPath;\r\n /*\r\n Hide slider snippets (backward compatible)\r\n let bHideSliderSnippet = false;\r\n try{\r\n if (typeof jQuery.fn.slick === 'undefined') {\r\n bHideSliderSnippet = true;\r\n }\r\n } catch(e){\r\n bHideSliderSnippet = true;\r\n }\r\n */\r\n // Hide slider snippet if slick is not included\r\n\r\n var bHideSliderSnippet = true;\r\n\r\n if (window.jQuery) {\r\n if (window.jQuery.fn.slick) {\r\n bHideSliderSnippet = false;\r\n }\r\n }\r\n\r\n if (bHideSliderSnippet) {\r\n for (var _i2 = 0; _i2 < builder.opts.snippetJSON.snippets.length; _i2++) {\r\n if (builder.opts.snippetJSON.snippets[_i2].thumbnail.indexOf('element-slider.png') !== -1) {\r\n builder.opts.snippetJSON.snippets.splice(_i2, 1);\r\n break;\r\n }\r\n }\r\n } // /Hide slider snippets\r\n\r\n\r\n var index = 1;\r\n\r\n if (builder.opts.emailMode) {\r\n builder.opts.snippetJSON.snippets.forEach(function (item) {\r\n item.id = index; //Give id to each record\r\n\r\n if (item.category === builder.opts.defaultEmailSnippetCategory + '') {\r\n dom$v.appendHtml(snippetlist, '
');\r\n }\r\n\r\n index++;\r\n });\r\n } else {\r\n builder.opts.snippetJSON.snippets.forEach(function (item) {\r\n item.id = index; //Give id to each record\r\n\r\n if (item.category === builder.opts.defaultSnippetCategory + '') {\r\n dom$v.appendHtml(snippetlist, '
');\r\n }\r\n\r\n index++;\r\n });\r\n }\r\n\r\n var userAgentString = navigator.userAgent;\r\n var safariAgent = userAgentString.indexOf('Safari') > -1;\r\n var chromeAgent = userAgentString.indexOf('Chrome') > -1;\r\n if (chromeAgent && safariAgent) safariAgent = false;\r\n new Sortable(snippetlist, {\r\n forceFallback: safariAgent,\r\n group: {\r\n name: 'shared',\r\n pull: 'clone',\r\n put: false // Do not allow items to be put into this list\r\n\r\n },\r\n sort: false,\r\n animation: 150,\r\n onMove: function onMove() {\r\n var emptyinfo = document.querySelector('.row-add-initial'); // if there is empty info, remove it during snippet drag drop\r\n // if(emptyinfo) emptyinfo.parentNode.removeChild(emptyinfo);\r\n\r\n if (emptyinfo) emptyinfo.style.display = 'none';\r\n },\r\n onStart: function onStart() {\r\n builder.uo.saveForUndo(); // Even if cancelled, saveForUndo will make sure not to save if there is no change \r\n\r\n var elm = document.querySelector('.is-sidebar-overlay');\r\n if (elm) elm.style.display = 'none'; // LATER: ContentBox\r\n },\r\n onEnd: function onEnd() {\r\n var elm = document.querySelector('.is-sidebar-overlay');\r\n if (elm) elm.style.display = 'block'; // LATER: ContentBox\r\n\r\n util.checkEmpty(); // In case container is still empty (drag drop snippet cancelled)\r\n\r\n var emptyinfo = document.querySelector('.row-add-initial');\r\n if (emptyinfo) emptyinfo.style.display = '';\r\n }\r\n });\r\n new Dropdown(document.querySelector('.snippet-cat'), {\r\n onChange: function onChange(value) {\r\n var cat = value;\r\n var elms = snippetlist.querySelectorAll('.snippet-item');\r\n var exist = false;\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n if (elm.getAttribute('data-cat') === cat) exist = true;\r\n });\r\n\r\n if (!exist) {\r\n builder.opts.snippetJSON.snippets.forEach(function (item) {\r\n if (item.category === cat) {\r\n dom$v.appendHtml(snippetlist, '
');\r\n }\r\n });\r\n }\r\n\r\n if (cat) {\r\n //let elms = snippetlist.querySelectorAll('.snippet-item');\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n dom$v.addClass(elm, 'hide');\r\n });\r\n Array.prototype.forEach.call(elms, function (elm) {\r\n if (elm.getAttribute('data-cat') === cat) {\r\n elm.className = elm.className.replace(/hide/g, '');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n if (builder.opts.snippetList === '#divSnippetList') {\r\n var snippethandle = snippetPanel.querySelector('#divSnippetHandle');\r\n dom$v.addEventListener(snippethandle, 'click', function () {\r\n toggleSnippets(builder);\r\n util.clearActiveCell();\r\n util.clearControls();\r\n });\r\n var viewportWidth = window.innerWidth;\r\n\r\n if (builder.opts.snippetOpen && viewportWidth >= 960) {\r\n snippetPanel.style.cssText = 'transition: all ease 0.8s;';\r\n setTimeout(function () {\r\n toggleSnippets(builder);\r\n }, 100);\r\n setTimeout(function () {\r\n snippetPanel.style.cssText = '';\r\n }, 1300);\r\n }\r\n } //Scroll helper\r\n\r\n\r\n var scrollup = snippetPanel.querySelector('#divSnippetScrollUp');\r\n var scrolldown = snippetPanel.querySelector('#divSnippetScrollDown'); // if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {\r\n // } else {\r\n // scrollup.style.display = 'none';\r\n // scrolldown.style.display = 'none';\r\n // }\r\n\r\n scrollup.style.display = 'none';\r\n scrolldown.style.display = 'none';\r\n /*\r\n TODO\r\n \r\n var maxScroll=100000000; \r\n jQuery('#divSnippetScrollUp').css('display','none');\r\n jQuery('#divSnippetScrollUp').on(\"click touchup\", function(e) { \r\n jQuery(\".is-design-list\").animate({ scrollTop: (jQuery(\".is-design-list\").scrollTop() - (jQuery(\".is-design-list\").height()-150) ) + \"px\" },300, function(){\r\n if(jQuery(\".is-design-list\").scrollTop()!=0){\r\n jQuery('#divSnippetScrollUp').fadeIn(300);\r\n } else {\r\n jQuery('#divSnippetScrollUp').fadeOut(300);\r\n }\r\n if(jQuery(\".is-design-list\").scrollTop() != maxScroll){\r\n jQuery('#divSnippetScrollDown').fadeIn(300);\r\n } else {\r\n jQuery('#divSnippetScrollDown').fadeOut(300);\r\n } \r\n }); \r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n return false;\r\n }); \r\n jQuery('#divSnippetScrollDown').on(\"click touchup\", function(e) { \r\n jQuery(\".is-design-list\").animate({ scrollTop: (jQuery(\".is-design-list\").scrollTop() + (jQuery(\".is-design-list\").height()-150) ) + \"px\" }, 300, function() {\r\n if(jQuery(\".is-design-list\").scrollTop()!=0){\r\n jQuery('#divSnippetScrollUp').fadeIn(300);\r\n } else {\r\n jQuery('#divSnippetScrollUp').fadeOut(300);\r\n \r\n }\r\n if(maxScroll===100000000){\r\n maxScroll = jQuery('.is-design-list').prop('scrollHeight') - jQuery('.is-design-list').height() - 30;\r\n } \r\n \r\n if(jQuery(\".is-design-list\").scrollTop() != maxScroll){\r\n jQuery('#divSnippetScrollDown').fadeIn(300);\r\n } else {\r\n jQuery('#divSnippetScrollDown').fadeOut(300);\r\n } \r\n });\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n return false;\r\n });\r\n */\r\n };\r\n\r\n function toggleSnippets(builder) {\r\n var snippetPanel = document.querySelector('#divSnippetList');\r\n var snippethandle = snippetPanel.querySelector('#divSnippetHandle');\r\n\r\n if (dom$v.hasClass(snippetPanel, 'active')) {\r\n dom$v.removeClass(snippetPanel, 'active');\r\n\r\n if (builder.opts.sidePanel === 'right') {\r\n snippethandle.innerHTML = '';\r\n } else {\r\n snippethandle.innerHTML = '';\r\n }\r\n } else {\r\n dom$v.addClass(snippetPanel, 'active');\r\n\r\n if (builder.opts.sidePanel === 'right') {\r\n snippethandle.innerHTML = '';\r\n } else {\r\n snippethandle.innerHTML = '';\r\n }\r\n }\r\n }\r\n\r\n function hideSnippets(builder) {\r\n var snippetPanel = document.querySelector('#divSnippetList');\r\n var snippethandle = snippetPanel.querySelector('#divSnippetHandle');\r\n dom$v.removeClass(snippetPanel, 'active');\r\n\r\n if (builder.opts.sidePanel === 'right') {\r\n snippethandle.innerHTML = '';\r\n } else {\r\n snippethandle.innerHTML = '';\r\n }\r\n }\r\n\r\n /*!\r\n * Cropper.js v1.5.11\r\n * https://fengyuanchen.github.io/cropperjs\r\n *\r\n * Copyright 2015-present Chen Fengyuan\r\n * Released under the MIT license\r\n *\r\n * Date: 2021-02-17T11:53:27.572Z\r\n */\r\n\r\n function _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n\r\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\r\n _typeof = function (obj) {\r\n return typeof obj;\r\n };\r\n } else {\r\n _typeof = function (obj) {\r\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n };\r\n }\r\n\r\n return _typeof(obj);\r\n }\r\n\r\n function _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n }\r\n\r\n function _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n function _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) _defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n }\r\n\r\n function _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n });\r\n } else {\r\n obj[key] = value;\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n function ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\r\n });\r\n keys.push.apply(keys, symbols);\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n function _objectSpread2(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i] != null ? arguments[i] : {};\r\n\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function (key) {\r\n _defineProperty(target, key, source[key]);\r\n });\r\n } else if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\r\n } else {\r\n ownKeys(Object(source)).forEach(function (key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\r\n });\r\n }\r\n }\r\n\r\n return target;\r\n }\r\n\r\n function _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\r\n }\r\n\r\n function _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\r\n }\r\n\r\n function _iterableToArray(iter) {\r\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\r\n }\r\n\r\n function _unsupportedIterableToArray(o, minLen) {\r\n if (!o) return;\r\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\r\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\r\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\r\n }\r\n\r\n function _arrayLikeToArray(arr, len) {\r\n if (len == null || len > arr.length) len = arr.length;\r\n\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\r\n\r\n return arr2;\r\n }\r\n\r\n function _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\r\n }\r\n\r\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n var WINDOW = IS_BROWSER ? window : {};\r\n var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\r\n var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\r\n var NAMESPACE = 'cropper'; // Actions\r\n\r\n var ACTION_ALL = 'all';\r\n var ACTION_CROP = 'crop';\r\n var ACTION_MOVE = 'move';\r\n var ACTION_ZOOM = 'zoom';\r\n var ACTION_EAST = 'e';\r\n var ACTION_WEST = 'w';\r\n var ACTION_SOUTH = 's';\r\n var ACTION_NORTH = 'n';\r\n var ACTION_NORTH_EAST = 'ne';\r\n var ACTION_NORTH_WEST = 'nw';\r\n var ACTION_SOUTH_EAST = 'se';\r\n var ACTION_SOUTH_WEST = 'sw'; // Classes\r\n\r\n var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\r\n var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\r\n var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\r\n var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\r\n var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\r\n var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\r\n var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\"); // Data keys\r\n\r\n var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\r\n var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\"); // Drag modes\r\n\r\n var DRAG_MODE_CROP = 'crop';\r\n var DRAG_MODE_MOVE = 'move';\r\n var DRAG_MODE_NONE = 'none'; // Events\r\n\r\n var EVENT_CROP = 'crop';\r\n var EVENT_CROP_END = 'cropend';\r\n var EVENT_CROP_MOVE = 'cropmove';\r\n var EVENT_CROP_START = 'cropstart';\r\n var EVENT_DBLCLICK = 'dblclick';\r\n var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\r\n var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\r\n var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\r\n var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\r\n var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\r\n var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\r\n var EVENT_READY = 'ready';\r\n var EVENT_RESIZE = 'resize';\r\n var EVENT_WHEEL = 'wheel';\r\n var EVENT_ZOOM = 'zoom'; // Mime types\r\n\r\n var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps\r\n\r\n var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\r\n var REGEXP_DATA_URL = /^data:/;\r\n var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\r\n var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc\r\n // Inspired by the default width and height of a canvas element.\r\n\r\n var MIN_CONTAINER_WIDTH = 200;\r\n var MIN_CONTAINER_HEIGHT = 100;\r\n\r\n var DEFAULTS = {\r\n // Define the view mode of the cropper\r\n viewMode: 0,\r\n // 0, 1, 2, 3\r\n // Define the dragging mode of the cropper\r\n dragMode: DRAG_MODE_CROP,\r\n // 'crop', 'move' or 'none'\r\n // Define the initial aspect ratio of the crop box\r\n initialAspectRatio: NaN,\r\n // Define the aspect ratio of the crop box\r\n aspectRatio: NaN,\r\n // An object with the previous cropping result data\r\n data: null,\r\n // A selector for adding extra containers to preview\r\n preview: '',\r\n // Re-render the cropper when resize the window\r\n responsive: true,\r\n // Restore the cropped area after resize the window\r\n restore: true,\r\n // Check if the current image is a cross-origin image\r\n checkCrossOrigin: true,\r\n // Check the current image's Exif Orientation information\r\n checkOrientation: true,\r\n // Show the black modal\r\n modal: true,\r\n // Show the dashed lines for guiding\r\n guides: true,\r\n // Show the center indicator for guiding\r\n center: true,\r\n // Show the white modal to highlight the crop box\r\n highlight: true,\r\n // Show the grid background\r\n background: true,\r\n // Enable to crop the image automatically when initialize\r\n autoCrop: true,\r\n // Define the percentage of automatic cropping area when initializes\r\n autoCropArea: 0.8,\r\n // Enable to move the image\r\n movable: true,\r\n // Enable to rotate the image\r\n rotatable: true,\r\n // Enable to scale the image\r\n scalable: true,\r\n // Enable to zoom the image\r\n zoomable: true,\r\n // Enable to zoom the image by dragging touch\r\n zoomOnTouch: true,\r\n // Enable to zoom the image by wheeling mouse\r\n zoomOnWheel: true,\r\n // Define zoom ratio when zoom the image by wheeling mouse\r\n wheelZoomRatio: 0.1,\r\n // Enable to move the crop box\r\n cropBoxMovable: true,\r\n // Enable to resize the crop box\r\n cropBoxResizable: true,\r\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\r\n toggleDragModeOnDblclick: true,\r\n // Size limitation\r\n minCanvasWidth: 0,\r\n minCanvasHeight: 0,\r\n minCropBoxWidth: 0,\r\n minCropBoxHeight: 0,\r\n minContainerWidth: MIN_CONTAINER_WIDTH,\r\n minContainerHeight: MIN_CONTAINER_HEIGHT,\r\n // Shortcuts of events\r\n ready: null,\r\n cropstart: null,\r\n cropmove: null,\r\n cropend: null,\r\n crop: null,\r\n zoom: null\r\n };\r\n\r\n var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
';\r\n\r\n /**\r\n * Check if the given value is not a number.\r\n */\r\n\r\n var isNaN$1 = Number.isNaN || WINDOW.isNaN;\r\n /**\r\n * Check if the given value is a number.\r\n * @param {*} value - The value to check.\r\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\r\n */\r\n\r\n function isNumber$1(value) {\r\n return typeof value === 'number' && !isNaN$1(value);\r\n }\r\n /**\r\n * Check if the given value is a positive number.\r\n * @param {*} value - The value to check.\r\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\r\n */\r\n\r\n var isPositiveNumber = function isPositiveNumber(value) {\r\n return value > 0 && value < Infinity;\r\n };\r\n /**\r\n * Check if the given value is undefined.\r\n * @param {*} value - The value to check.\r\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\r\n */\r\n\r\n function isUndefined$1(value) {\r\n return typeof value === 'undefined';\r\n }\r\n /**\r\n * Check if the given value is an object.\r\n * @param {*} value - The value to check.\r\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\r\n */\r\n\r\n function isObject$1(value) {\r\n return _typeof(value) === 'object' && value !== null;\r\n }\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n /**\r\n * Check if the given value is a plain object.\r\n * @param {*} value - The value to check.\r\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\r\n */\r\n\r\n function isPlainObject(value) {\r\n if (!isObject$1(value)) {\r\n return false;\r\n }\r\n\r\n try {\r\n var _constructor = value.constructor;\r\n var prototype = _constructor.prototype;\r\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Check if the given value is a function.\r\n * @param {*} value - The value to check.\r\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\r\n */\r\n\r\n function isFunction$1(value) {\r\n return typeof value === 'function';\r\n }\r\n var slice = Array.prototype.slice;\r\n /**\r\n * Convert array-like or iterable object to an array.\r\n * @param {*} value - The value to convert.\r\n * @returns {Array} Returns a new array.\r\n */\r\n\r\n function toArray(value) {\r\n return Array.from ? Array.from(value) : slice.call(value);\r\n }\r\n /**\r\n * Iterate the given data.\r\n * @param {*} data - The data to iterate.\r\n * @param {Function} callback - The process function for each element.\r\n * @returns {*} The original data.\r\n */\r\n\r\n function forEach(data, callback) {\r\n if (data && isFunction$1(callback)) {\r\n if (Array.isArray(data) || isNumber$1(data.length)\r\n /* array-like */\r\n ) {\r\n toArray(data).forEach(function (value, key) {\r\n callback.call(data, value, key, data);\r\n });\r\n } else if (isObject$1(data)) {\r\n Object.keys(data).forEach(function (key) {\r\n callback.call(data, data[key], key, data);\r\n });\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n /**\r\n * Extend the given object.\r\n * @param {*} target - The target object to extend.\r\n * @param {*} args - The rest objects for merging to the target object.\r\n * @returns {Object} The extended object.\r\n */\r\n\r\n var assign = Object.assign || function assign(target) {\r\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n args[_key - 1] = arguments[_key];\r\n }\r\n\r\n if (isObject$1(target) && args.length > 0) {\r\n args.forEach(function (arg) {\r\n if (isObject$1(arg)) {\r\n Object.keys(arg).forEach(function (key) {\r\n target[key] = arg[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n return target;\r\n };\r\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\r\n /**\r\n * Normalize decimal number.\r\n * Check out {@link https://0.30000000000000004.com/}\r\n * @param {number} value - The value to normalize.\r\n * @param {number} [times=100000000000] - The times for normalizing.\r\n * @returns {number} Returns the normalized number.\r\n */\r\n\r\n function normalizeDecimalNumber(value) {\r\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\r\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\r\n }\r\n var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\r\n /**\r\n * Apply styles to the given element.\r\n * @param {Element} element - The target element.\r\n * @param {Object} styles - The styles for applying.\r\n */\r\n\r\n function setStyle(element, styles) {\r\n var style = element.style;\r\n forEach(styles, function (value, property) {\r\n if (REGEXP_SUFFIX.test(property) && isNumber$1(value)) {\r\n value = \"\".concat(value, \"px\");\r\n }\r\n\r\n style[property] = value;\r\n });\r\n }\r\n /**\r\n * Check if the given element has a special class.\r\n * @param {Element} element - The element to check.\r\n * @param {string} value - The class to search.\r\n * @returns {boolean} Returns `true` if the special class was found.\r\n */\r\n\r\n function hasClass$1(element, value) {\r\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\r\n }\r\n /**\r\n * Add classes to the given element.\r\n * @param {Element} element - The target element.\r\n * @param {string} value - The classes to be added.\r\n */\r\n\r\n function addClass$1(element, value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (isNumber$1(element.length)) {\r\n forEach(element, function (elem) {\r\n addClass$1(elem, value);\r\n });\r\n return;\r\n }\r\n\r\n if (element.classList) {\r\n element.classList.add(value);\r\n return;\r\n }\r\n\r\n var className = element.className.trim();\r\n\r\n if (!className) {\r\n element.className = value;\r\n } else if (className.indexOf(value) < 0) {\r\n element.className = \"\".concat(className, \" \").concat(value);\r\n }\r\n }\r\n /**\r\n * Remove classes from the given element.\r\n * @param {Element} element - The target element.\r\n * @param {string} value - The classes to be removed.\r\n */\r\n\r\n function removeClass$1(element, value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (isNumber$1(element.length)) {\r\n forEach(element, function (elem) {\r\n removeClass$1(elem, value);\r\n });\r\n return;\r\n }\r\n\r\n if (element.classList) {\r\n element.classList.remove(value);\r\n return;\r\n }\r\n\r\n if (element.className.indexOf(value) >= 0) {\r\n element.className = element.className.replace(value, '');\r\n }\r\n }\r\n /**\r\n * Add or remove classes from the given element.\r\n * @param {Element} element - The target element.\r\n * @param {string} value - The classes to be toggled.\r\n * @param {boolean} added - Add only.\r\n */\r\n\r\n function toggleClass(element, value, added) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (isNumber$1(element.length)) {\r\n forEach(element, function (elem) {\r\n toggleClass(elem, value, added);\r\n });\r\n return;\r\n } // IE10-11 doesn't support the second parameter of `classList.toggle`\r\n\r\n\r\n if (added) {\r\n addClass$1(element, value);\r\n } else {\r\n removeClass$1(element, value);\r\n }\r\n }\r\n var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\r\n /**\r\n * Transform the given string from camelCase to kebab-case\r\n * @param {string} value - The value to transform.\r\n * @returns {string} The transformed value.\r\n */\r\n\r\n function toParamCase(value) {\r\n return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\r\n }\r\n /**\r\n * Get data from the given element.\r\n * @param {Element} element - The target element.\r\n * @param {string} name - The data key to get.\r\n * @returns {string} The data value.\r\n */\r\n\r\n function getData(element, name) {\r\n if (isObject$1(element[name])) {\r\n return element[name];\r\n }\r\n\r\n if (element.dataset) {\r\n return element.dataset[name];\r\n }\r\n\r\n return element.getAttribute(\"data-\".concat(toParamCase(name)));\r\n }\r\n /**\r\n * Set data to the given element.\r\n * @param {Element} element - The target element.\r\n * @param {string} name - The data key to set.\r\n * @param {string} data - The data value.\r\n */\r\n\r\n function setData(element, name, data) {\r\n if (isObject$1(data)) {\r\n element[name] = data;\r\n } else if (element.dataset) {\r\n element.dataset[name] = data;\r\n } else {\r\n element.setAttribute(\"data-\".concat(toParamCase(name)), data);\r\n }\r\n }\r\n /**\r\n * Remove data from the given element.\r\n * @param {Element} element - The target element.\r\n * @param {string} name - The data key to remove.\r\n */\r\n\r\n function removeData(element, name) {\r\n if (isObject$1(element[name])) {\r\n try {\r\n delete element[name];\r\n } catch (error) {\r\n element[name] = undefined;\r\n }\r\n } else if (element.dataset) {\r\n // #128 Safari not allows to delete dataset property\r\n try {\r\n delete element.dataset[name];\r\n } catch (error) {\r\n element.dataset[name] = undefined;\r\n }\r\n } else {\r\n element.removeAttribute(\"data-\".concat(toParamCase(name)));\r\n }\r\n }\r\n var REGEXP_SPACES = /\\s\\s*/;\r\n\r\n var onceSupported = function () {\r\n var supported = false;\r\n\r\n if (IS_BROWSER) {\r\n var once = false;\r\n\r\n var listener = function listener() {};\r\n\r\n var options = Object.defineProperty({}, 'once', {\r\n get: function get() {\r\n supported = true;\r\n return once;\r\n },\r\n\r\n /**\r\n * This setter can fix a `TypeError` in strict mode\r\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\r\n * @param {boolean} value - The value to set\r\n */\r\n set: function set(value) {\r\n once = value;\r\n }\r\n });\r\n WINDOW.addEventListener('test', listener, options);\r\n WINDOW.removeEventListener('test', listener, options);\r\n }\r\n\r\n return supported;\r\n }();\r\n /**\r\n * Remove event listener from the target element.\r\n * @param {Element} element - The event target.\r\n * @param {string} type - The event type(s).\r\n * @param {Function} listener - The event listener.\r\n * @param {Object} options - The event options.\r\n */\r\n\r\n\r\n function removeListener(element, type, listener) {\r\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\r\n var handler = listener;\r\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\r\n if (!onceSupported) {\r\n var listeners = element.listeners;\r\n\r\n if (listeners && listeners[event] && listeners[event][listener]) {\r\n handler = listeners[event][listener];\r\n delete listeners[event][listener];\r\n\r\n if (Object.keys(listeners[event]).length === 0) {\r\n delete listeners[event];\r\n }\r\n\r\n if (Object.keys(listeners).length === 0) {\r\n delete element.listeners;\r\n }\r\n }\r\n }\r\n\r\n element.removeEventListener(event, handler, options);\r\n });\r\n }\r\n /**\r\n * Add event listener to the target element.\r\n * @param {Element} element - The event target.\r\n * @param {string} type - The event type(s).\r\n * @param {Function} listener - The event listener.\r\n * @param {Object} options - The event options.\r\n */\r\n\r\n function addListener(element, type, listener) {\r\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\r\n var _handler = listener;\r\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\r\n if (options.once && !onceSupported) {\r\n var _element$listeners = element.listeners,\r\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\r\n\r\n _handler = function handler() {\r\n delete listeners[event][listener];\r\n element.removeEventListener(event, _handler, options);\r\n\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2];\r\n }\r\n\r\n listener.apply(element, args);\r\n };\r\n\r\n if (!listeners[event]) {\r\n listeners[event] = {};\r\n }\r\n\r\n if (listeners[event][listener]) {\r\n element.removeEventListener(event, listeners[event][listener], options);\r\n }\r\n\r\n listeners[event][listener] = _handler;\r\n element.listeners = listeners;\r\n }\r\n\r\n element.addEventListener(event, _handler, options);\r\n });\r\n }\r\n /**\r\n * Dispatch event on the target element.\r\n * @param {Element} element - The event target.\r\n * @param {string} type - The event type(s).\r\n * @param {Object} data - The additional event data.\r\n * @returns {boolean} Indicate if the event is default prevented or not.\r\n */\r\n\r\n function dispatchEvent(element, type, data) {\r\n var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\r\n\r\n if (isFunction$1(Event) && isFunction$1(CustomEvent)) {\r\n event = new CustomEvent(type, {\r\n detail: data,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(type, true, true, data);\r\n }\r\n\r\n return element.dispatchEvent(event);\r\n }\r\n /**\r\n * Get the offset base on the document.\r\n * @param {Element} element - The target element.\r\n * @returns {Object} The offset data.\r\n */\r\n\r\n function getOffset(element) {\r\n var box = element.getBoundingClientRect();\r\n return {\r\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\r\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\r\n };\r\n }\r\n var location = WINDOW.location;\r\n var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\r\n /**\r\n * Check if the given URL is a cross origin URL.\r\n * @param {string} url - The target URL.\r\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\r\n */\r\n\r\n function isCrossOriginURL(url) {\r\n var parts = url.match(REGEXP_ORIGINS);\r\n return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\r\n }\r\n /**\r\n * Add timestamp to the given URL.\r\n * @param {string} url - The target URL.\r\n * @returns {string} The result URL.\r\n */\r\n\r\n function addTimestamp(url) {\r\n var timestamp = \"timestamp=\".concat(new Date().getTime());\r\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\r\n }\r\n /**\r\n * Get transforms base on the given object.\r\n * @param {Object} obj - The target object.\r\n * @returns {string} A string contains transform values.\r\n */\r\n\r\n function getTransforms(_ref) {\r\n var rotate = _ref.rotate,\r\n scaleX = _ref.scaleX,\r\n scaleY = _ref.scaleY,\r\n translateX = _ref.translateX,\r\n translateY = _ref.translateY;\r\n var values = [];\r\n\r\n if (isNumber$1(translateX) && translateX !== 0) {\r\n values.push(\"translateX(\".concat(translateX, \"px)\"));\r\n }\r\n\r\n if (isNumber$1(translateY) && translateY !== 0) {\r\n values.push(\"translateY(\".concat(translateY, \"px)\"));\r\n } // Rotate should come first before scale to match orientation transform\r\n\r\n\r\n if (isNumber$1(rotate) && rotate !== 0) {\r\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\r\n }\r\n\r\n if (isNumber$1(scaleX) && scaleX !== 1) {\r\n values.push(\"scaleX(\".concat(scaleX, \")\"));\r\n }\r\n\r\n if (isNumber$1(scaleY) && scaleY !== 1) {\r\n values.push(\"scaleY(\".concat(scaleY, \")\"));\r\n }\r\n\r\n var transform = values.length ? values.join(' ') : 'none';\r\n return {\r\n WebkitTransform: transform,\r\n msTransform: transform,\r\n transform: transform\r\n };\r\n }\r\n /**\r\n * Get the max ratio of a group of pointers.\r\n * @param {string} pointers - The target pointers.\r\n * @returns {number} The result ratio.\r\n */\r\n\r\n function getMaxZoomRatio(pointers) {\r\n var pointers2 = _objectSpread2({}, pointers);\r\n\r\n var maxRatio = 0;\r\n forEach(pointers, function (pointer, pointerId) {\r\n delete pointers2[pointerId];\r\n forEach(pointers2, function (pointer2) {\r\n var x1 = Math.abs(pointer.startX - pointer2.startX);\r\n var y1 = Math.abs(pointer.startY - pointer2.startY);\r\n var x2 = Math.abs(pointer.endX - pointer2.endX);\r\n var y2 = Math.abs(pointer.endY - pointer2.endY);\r\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\r\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\r\n var ratio = (z2 - z1) / z1;\r\n\r\n if (Math.abs(ratio) > Math.abs(maxRatio)) {\r\n maxRatio = ratio;\r\n }\r\n });\r\n });\r\n return maxRatio;\r\n }\r\n /**\r\n * Get a pointer from an event object.\r\n * @param {Object} event - The target event object.\r\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\r\n * @returns {Object} The result pointer contains start and/or end point coordinates.\r\n */\r\n\r\n function getPointer(_ref2, endOnly) {\r\n var pageX = _ref2.pageX,\r\n pageY = _ref2.pageY;\r\n var end = {\r\n endX: pageX,\r\n endY: pageY\r\n };\r\n return endOnly ? end : _objectSpread2({\r\n startX: pageX,\r\n startY: pageY\r\n }, end);\r\n }\r\n /**\r\n * Get the center point coordinate of a group of pointers.\r\n * @param {Object} pointers - The target pointers.\r\n * @returns {Object} The center point coordinate.\r\n */\r\n\r\n function getPointersCenter(pointers) {\r\n var pageX = 0;\r\n var pageY = 0;\r\n var count = 0;\r\n forEach(pointers, function (_ref3) {\r\n var startX = _ref3.startX,\r\n startY = _ref3.startY;\r\n pageX += startX;\r\n pageY += startY;\r\n count += 1;\r\n });\r\n pageX /= count;\r\n pageY /= count;\r\n return {\r\n pageX: pageX,\r\n pageY: pageY\r\n };\r\n }\r\n /**\r\n * Get the max sizes in a rectangle under the given aspect ratio.\r\n * @param {Object} data - The original sizes.\r\n * @param {string} [type='contain'] - The adjust type.\r\n * @returns {Object} The result sizes.\r\n */\r\n\r\n function getAdjustedSizes(_ref4) // or 'cover'\r\n {\r\n var aspectRatio = _ref4.aspectRatio,\r\n height = _ref4.height,\r\n width = _ref4.width;\r\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\r\n var isValidWidth = isPositiveNumber(width);\r\n var isValidHeight = isPositiveNumber(height);\r\n\r\n if (isValidWidth && isValidHeight) {\r\n var adjustedWidth = height * aspectRatio;\r\n\r\n if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\r\n height = width / aspectRatio;\r\n } else {\r\n width = height * aspectRatio;\r\n }\r\n } else if (isValidWidth) {\r\n height = width / aspectRatio;\r\n } else if (isValidHeight) {\r\n width = height * aspectRatio;\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n }\r\n /**\r\n * Get the new sizes of a rectangle after rotated.\r\n * @param {Object} data - The original sizes.\r\n * @returns {Object} The result sizes.\r\n */\r\n\r\n function getRotatedSizes(_ref5) {\r\n var width = _ref5.width,\r\n height = _ref5.height,\r\n degree = _ref5.degree;\r\n degree = Math.abs(degree) % 180;\r\n\r\n if (degree === 90) {\r\n return {\r\n width: height,\r\n height: width\r\n };\r\n }\r\n\r\n var arc = degree % 90 * Math.PI / 180;\r\n var sinArc = Math.sin(arc);\r\n var cosArc = Math.cos(arc);\r\n var newWidth = width * cosArc + height * sinArc;\r\n var newHeight = width * sinArc + height * cosArc;\r\n return degree > 90 ? {\r\n width: newHeight,\r\n height: newWidth\r\n } : {\r\n width: newWidth,\r\n height: newHeight\r\n };\r\n }\r\n /**\r\n * Get a canvas which drew the given image.\r\n * @param {HTMLImageElement} image - The image for drawing.\r\n * @param {Object} imageData - The image data.\r\n * @param {Object} canvasData - The canvas data.\r\n * @param {Object} options - The options.\r\n * @returns {HTMLCanvasElement} The result canvas.\r\n */\r\n\r\n function getSourceCanvas(image, _ref6, _ref7, _ref8) {\r\n var imageAspectRatio = _ref6.aspectRatio,\r\n imageNaturalWidth = _ref6.naturalWidth,\r\n imageNaturalHeight = _ref6.naturalHeight,\r\n _ref6$rotate = _ref6.rotate,\r\n rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\r\n _ref6$scaleX = _ref6.scaleX,\r\n scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\r\n _ref6$scaleY = _ref6.scaleY,\r\n scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\r\n var aspectRatio = _ref7.aspectRatio,\r\n naturalWidth = _ref7.naturalWidth,\r\n naturalHeight = _ref7.naturalHeight;\r\n var _ref8$fillColor = _ref8.fillColor,\r\n fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\r\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\r\n imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\r\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\r\n imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\r\n _ref8$maxWidth = _ref8.maxWidth,\r\n maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\r\n _ref8$maxHeight = _ref8.maxHeight,\r\n maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\r\n _ref8$minWidth = _ref8.minWidth,\r\n minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\r\n _ref8$minHeight = _ref8.minHeight,\r\n minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n var maxSizes = getAdjustedSizes({\r\n aspectRatio: aspectRatio,\r\n width: maxWidth,\r\n height: maxHeight\r\n });\r\n var minSizes = getAdjustedSizes({\r\n aspectRatio: aspectRatio,\r\n width: minWidth,\r\n height: minHeight\r\n }, 'cover');\r\n var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\r\n var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as\r\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\r\n\r\n var destMaxSizes = getAdjustedSizes({\r\n aspectRatio: imageAspectRatio,\r\n width: maxWidth,\r\n height: maxHeight\r\n });\r\n var destMinSizes = getAdjustedSizes({\r\n aspectRatio: imageAspectRatio,\r\n width: minWidth,\r\n height: minHeight\r\n }, 'cover');\r\n var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\r\n var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\r\n var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\r\n canvas.width = normalizeDecimalNumber(width);\r\n canvas.height = normalizeDecimalNumber(height);\r\n context.fillStyle = fillColor;\r\n context.fillRect(0, 0, width, height);\r\n context.save();\r\n context.translate(width / 2, height / 2);\r\n context.rotate(rotate * Math.PI / 180);\r\n context.scale(scaleX, scaleY);\r\n context.imageSmoothingEnabled = imageSmoothingEnabled;\r\n context.imageSmoothingQuality = imageSmoothingQuality;\r\n context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\r\n return Math.floor(normalizeDecimalNumber(param));\r\n }))));\r\n context.restore();\r\n return canvas;\r\n }\r\n var fromCharCode = String.fromCharCode;\r\n /**\r\n * Get string from char code in data view.\r\n * @param {DataView} dataView - The data view for read.\r\n * @param {number} start - The start index.\r\n * @param {number} length - The read length.\r\n * @returns {string} The read result.\r\n */\r\n\r\n function getStringFromCharCode(dataView, start, length) {\r\n var str = '';\r\n length += start;\r\n\r\n for (var i = start; i < length; i += 1) {\r\n str += fromCharCode(dataView.getUint8(i));\r\n }\r\n\r\n return str;\r\n }\r\n var REGEXP_DATA_URL_HEAD = /^data:.*,/;\r\n /**\r\n * Transform Data URL to array buffer.\r\n * @param {string} dataURL - The Data URL to transform.\r\n * @returns {ArrayBuffer} The result array buffer.\r\n */\r\n\r\n function dataURLToArrayBuffer(dataURL) {\r\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\r\n var binary = atob(base64);\r\n var arrayBuffer = new ArrayBuffer(binary.length);\r\n var uint8 = new Uint8Array(arrayBuffer);\r\n forEach(uint8, function (value, i) {\r\n uint8[i] = binary.charCodeAt(i);\r\n });\r\n return arrayBuffer;\r\n }\r\n /**\r\n * Transform array buffer to Data URL.\r\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\r\n * @param {string} mimeType - The mime type of the Data URL.\r\n * @returns {string} The result Data URL.\r\n */\r\n\r\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\r\n var chunks = []; // Chunk Typed Array for better performance (#435)\r\n\r\n var chunkSize = 8192;\r\n var uint8 = new Uint8Array(arrayBuffer);\r\n\r\n while (uint8.length > 0) {\r\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\r\n // eslint-disable-next-line prefer-spread\r\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\r\n uint8 = uint8.subarray(chunkSize);\r\n }\r\n\r\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\r\n }\r\n /**\r\n * Get orientation value from given array buffer.\r\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\r\n * @returns {number} The read orientation value.\r\n */\r\n\r\n function resetAndGetOrientation(arrayBuffer) {\r\n var dataView = new DataView(arrayBuffer);\r\n var orientation; // Ignores range error when the image does not have correct Exif information\r\n\r\n try {\r\n var littleEndian;\r\n var app1Start;\r\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\r\n\r\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\r\n var length = dataView.byteLength;\r\n var offset = 2;\r\n\r\n while (offset + 1 < length) {\r\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\r\n app1Start = offset;\r\n break;\r\n }\r\n\r\n offset += 1;\r\n }\r\n }\r\n\r\n if (app1Start) {\r\n var exifIDCode = app1Start + 4;\r\n var tiffOffset = app1Start + 10;\r\n\r\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\r\n var endianness = dataView.getUint16(tiffOffset);\r\n littleEndian = endianness === 0x4949;\r\n\r\n if (littleEndian || endianness === 0x4D4D\r\n /* bigEndian */\r\n ) {\r\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\r\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\r\n\r\n if (firstIFDOffset >= 0x00000008) {\r\n ifdStart = tiffOffset + firstIFDOffset;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (ifdStart) {\r\n var _length = dataView.getUint16(ifdStart, littleEndian);\r\n\r\n var _offset;\r\n\r\n var i;\r\n\r\n for (i = 0; i < _length; i += 1) {\r\n _offset = ifdStart + i * 12 + 2;\r\n\r\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\r\n /* Orientation */\r\n ) {\r\n // 8 is the offset of the current tag's value\r\n _offset += 8; // Get the original orientation value\r\n\r\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\r\n\r\n dataView.setUint16(_offset, 1, littleEndian);\r\n break;\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n orientation = 1;\r\n }\r\n\r\n return orientation;\r\n }\r\n /**\r\n * Parse Exif Orientation value.\r\n * @param {number} orientation - The orientation to parse.\r\n * @returns {Object} The parsed result.\r\n */\r\n\r\n function parseOrientation(orientation) {\r\n var rotate = 0;\r\n var scaleX = 1;\r\n var scaleY = 1;\r\n\r\n switch (orientation) {\r\n // Flip horizontal\r\n case 2:\r\n scaleX = -1;\r\n break;\r\n // Rotate left 180°\r\n\r\n case 3:\r\n rotate = -180;\r\n break;\r\n // Flip vertical\r\n\r\n case 4:\r\n scaleY = -1;\r\n break;\r\n // Flip vertical and rotate right 90°\r\n\r\n case 5:\r\n rotate = 90;\r\n scaleY = -1;\r\n break;\r\n // Rotate right 90°\r\n\r\n case 6:\r\n rotate = 90;\r\n break;\r\n // Flip horizontal and rotate right 90°\r\n\r\n case 7:\r\n rotate = 90;\r\n scaleX = -1;\r\n break;\r\n // Rotate left 90°\r\n\r\n case 8:\r\n rotate = -90;\r\n break;\r\n }\r\n\r\n return {\r\n rotate: rotate,\r\n scaleX: scaleX,\r\n scaleY: scaleY\r\n };\r\n }\r\n\r\n var render$1 = {\r\n render: function render() {\r\n this.initContainer();\r\n this.initCanvas();\r\n this.initCropBox();\r\n this.renderCanvas();\r\n\r\n if (this.cropped) {\r\n this.renderCropBox();\r\n }\r\n },\r\n initContainer: function initContainer() {\r\n var element = this.element,\r\n options = this.options,\r\n container = this.container,\r\n cropper = this.cropper;\r\n var minWidth = Number(options.minContainerWidth);\r\n var minHeight = Number(options.minContainerHeight);\r\n addClass$1(cropper, CLASS_HIDDEN);\r\n removeClass$1(element, CLASS_HIDDEN);\r\n var containerData = {\r\n width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\r\n height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\r\n };\r\n this.containerData = containerData;\r\n setStyle(cropper, {\r\n width: containerData.width,\r\n height: containerData.height\r\n });\r\n addClass$1(element, CLASS_HIDDEN);\r\n removeClass$1(cropper, CLASS_HIDDEN);\r\n },\r\n // Canvas (image wrapper)\r\n initCanvas: function initCanvas() {\r\n var containerData = this.containerData,\r\n imageData = this.imageData;\r\n var viewMode = this.options.viewMode;\r\n var rotated = Math.abs(imageData.rotate) % 180 === 90;\r\n var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\r\n var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\r\n var aspectRatio = naturalWidth / naturalHeight;\r\n var canvasWidth = containerData.width;\r\n var canvasHeight = containerData.height;\r\n\r\n if (containerData.height * aspectRatio > containerData.width) {\r\n if (viewMode === 3) {\r\n canvasWidth = containerData.height * aspectRatio;\r\n } else {\r\n canvasHeight = containerData.width / aspectRatio;\r\n }\r\n } else if (viewMode === 3) {\r\n canvasHeight = containerData.width / aspectRatio;\r\n } else {\r\n canvasWidth = containerData.height * aspectRatio;\r\n }\r\n\r\n var canvasData = {\r\n aspectRatio: aspectRatio,\r\n naturalWidth: naturalWidth,\r\n naturalHeight: naturalHeight,\r\n width: canvasWidth,\r\n height: canvasHeight\r\n };\r\n this.canvasData = canvasData;\r\n this.limited = viewMode === 1 || viewMode === 2;\r\n this.limitCanvas(true, true);\r\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\r\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\r\n canvasData.left = (containerData.width - canvasData.width) / 2;\r\n canvasData.top = (containerData.height - canvasData.height) / 2;\r\n canvasData.oldLeft = canvasData.left;\r\n canvasData.oldTop = canvasData.top;\r\n this.initialCanvasData = assign({}, canvasData);\r\n },\r\n limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\r\n var options = this.options,\r\n containerData = this.containerData,\r\n canvasData = this.canvasData,\r\n cropBoxData = this.cropBoxData;\r\n var viewMode = options.viewMode;\r\n var aspectRatio = canvasData.aspectRatio;\r\n var cropped = this.cropped && cropBoxData;\r\n\r\n if (sizeLimited) {\r\n var minCanvasWidth = Number(options.minCanvasWidth) || 0;\r\n var minCanvasHeight = Number(options.minCanvasHeight) || 0;\r\n\r\n if (viewMode > 1) {\r\n minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\r\n minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\r\n\r\n if (viewMode === 3) {\r\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\r\n minCanvasWidth = minCanvasHeight * aspectRatio;\r\n } else {\r\n minCanvasHeight = minCanvasWidth / aspectRatio;\r\n }\r\n }\r\n } else if (viewMode > 0) {\r\n if (minCanvasWidth) {\r\n minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\r\n } else if (minCanvasHeight) {\r\n minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\r\n } else if (cropped) {\r\n minCanvasWidth = cropBoxData.width;\r\n minCanvasHeight = cropBoxData.height;\r\n\r\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\r\n minCanvasWidth = minCanvasHeight * aspectRatio;\r\n } else {\r\n minCanvasHeight = minCanvasWidth / aspectRatio;\r\n }\r\n }\r\n }\r\n\r\n var _getAdjustedSizes = getAdjustedSizes({\r\n aspectRatio: aspectRatio,\r\n width: minCanvasWidth,\r\n height: minCanvasHeight\r\n });\r\n\r\n minCanvasWidth = _getAdjustedSizes.width;\r\n minCanvasHeight = _getAdjustedSizes.height;\r\n canvasData.minWidth = minCanvasWidth;\r\n canvasData.minHeight = minCanvasHeight;\r\n canvasData.maxWidth = Infinity;\r\n canvasData.maxHeight = Infinity;\r\n }\r\n\r\n if (positionLimited) {\r\n if (viewMode > (cropped ? 0 : 1)) {\r\n var newCanvasLeft = containerData.width - canvasData.width;\r\n var newCanvasTop = containerData.height - canvasData.height;\r\n canvasData.minLeft = Math.min(0, newCanvasLeft);\r\n canvasData.minTop = Math.min(0, newCanvasTop);\r\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\r\n canvasData.maxTop = Math.max(0, newCanvasTop);\r\n\r\n if (cropped && this.limited) {\r\n canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\r\n canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\r\n canvasData.maxLeft = cropBoxData.left;\r\n canvasData.maxTop = cropBoxData.top;\r\n\r\n if (viewMode === 2) {\r\n if (canvasData.width >= containerData.width) {\r\n canvasData.minLeft = Math.min(0, newCanvasLeft);\r\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\r\n }\r\n\r\n if (canvasData.height >= containerData.height) {\r\n canvasData.minTop = Math.min(0, newCanvasTop);\r\n canvasData.maxTop = Math.max(0, newCanvasTop);\r\n }\r\n }\r\n }\r\n } else {\r\n canvasData.minLeft = -canvasData.width;\r\n canvasData.minTop = -canvasData.height;\r\n canvasData.maxLeft = containerData.width;\r\n canvasData.maxTop = containerData.height;\r\n }\r\n }\r\n },\r\n renderCanvas: function renderCanvas(changed, transformed) {\r\n var canvasData = this.canvasData,\r\n imageData = this.imageData;\r\n\r\n if (transformed) {\r\n var _getRotatedSizes = getRotatedSizes({\r\n width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\r\n height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\r\n degree: imageData.rotate || 0\r\n }),\r\n naturalWidth = _getRotatedSizes.width,\r\n naturalHeight = _getRotatedSizes.height;\r\n\r\n var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\r\n var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\r\n canvasData.left -= (width - canvasData.width) / 2;\r\n canvasData.top -= (height - canvasData.height) / 2;\r\n canvasData.width = width;\r\n canvasData.height = height;\r\n canvasData.aspectRatio = naturalWidth / naturalHeight;\r\n canvasData.naturalWidth = naturalWidth;\r\n canvasData.naturalHeight = naturalHeight;\r\n this.limitCanvas(true, false);\r\n }\r\n\r\n if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\r\n canvasData.left = canvasData.oldLeft;\r\n }\r\n\r\n if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\r\n canvasData.top = canvasData.oldTop;\r\n }\r\n\r\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\r\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\r\n this.limitCanvas(false, true);\r\n canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\r\n canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\r\n canvasData.oldLeft = canvasData.left;\r\n canvasData.oldTop = canvasData.top;\r\n setStyle(this.canvas, assign({\r\n width: canvasData.width,\r\n height: canvasData.height\r\n }, getTransforms({\r\n translateX: canvasData.left,\r\n translateY: canvasData.top\r\n })));\r\n this.renderImage(changed);\r\n\r\n if (this.cropped && this.limited) {\r\n this.limitCropBox(true, true);\r\n }\r\n },\r\n renderImage: function renderImage(changed) {\r\n var canvasData = this.canvasData,\r\n imageData = this.imageData;\r\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\r\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\r\n assign(imageData, {\r\n width: width,\r\n height: height,\r\n left: (canvasData.width - width) / 2,\r\n top: (canvasData.height - height) / 2\r\n });\r\n setStyle(this.image, assign({\r\n width: imageData.width,\r\n height: imageData.height\r\n }, getTransforms(assign({\r\n translateX: imageData.left,\r\n translateY: imageData.top\r\n }, imageData))));\r\n\r\n if (changed) {\r\n this.output();\r\n }\r\n },\r\n initCropBox: function initCropBox() {\r\n var options = this.options,\r\n canvasData = this.canvasData;\r\n var aspectRatio = options.aspectRatio || options.initialAspectRatio;\r\n var autoCropArea = Number(options.autoCropArea) || 0.8;\r\n var cropBoxData = {\r\n width: canvasData.width,\r\n height: canvasData.height\r\n };\r\n\r\n if (aspectRatio) {\r\n if (canvasData.height * aspectRatio > canvasData.width) {\r\n cropBoxData.height = cropBoxData.width / aspectRatio;\r\n } else {\r\n cropBoxData.width = cropBoxData.height * aspectRatio;\r\n }\r\n }\r\n\r\n this.cropBoxData = cropBoxData;\r\n this.limitCropBox(true, true); // Initialize auto crop area\r\n\r\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\r\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than \"minWidth/Height\"\r\n\r\n cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\r\n cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\r\n cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\r\n cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\r\n cropBoxData.oldLeft = cropBoxData.left;\r\n cropBoxData.oldTop = cropBoxData.top;\r\n this.initialCropBoxData = assign({}, cropBoxData);\r\n },\r\n limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\r\n var options = this.options,\r\n containerData = this.containerData,\r\n canvasData = this.canvasData,\r\n cropBoxData = this.cropBoxData,\r\n limited = this.limited;\r\n var aspectRatio = options.aspectRatio;\r\n\r\n if (sizeLimited) {\r\n var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\r\n var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\r\n var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\r\n var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height\r\n\r\n minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\r\n minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\r\n\r\n if (aspectRatio) {\r\n if (minCropBoxWidth && minCropBoxHeight) {\r\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\r\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\r\n } else {\r\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\r\n }\r\n } else if (minCropBoxWidth) {\r\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\r\n } else if (minCropBoxHeight) {\r\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\r\n }\r\n\r\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\r\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\r\n } else {\r\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\r\n }\r\n } // The minWidth/Height must be less than maxWidth/Height\r\n\r\n\r\n cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\r\n cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\r\n cropBoxData.maxWidth = maxCropBoxWidth;\r\n cropBoxData.maxHeight = maxCropBoxHeight;\r\n }\r\n\r\n if (positionLimited) {\r\n if (limited) {\r\n cropBoxData.minLeft = Math.max(0, canvasData.left);\r\n cropBoxData.minTop = Math.max(0, canvasData.top);\r\n cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\r\n cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\r\n } else {\r\n cropBoxData.minLeft = 0;\r\n cropBoxData.minTop = 0;\r\n cropBoxData.maxLeft = containerData.width - cropBoxData.width;\r\n cropBoxData.maxTop = containerData.height - cropBoxData.height;\r\n }\r\n }\r\n },\r\n renderCropBox: function renderCropBox() {\r\n var options = this.options,\r\n containerData = this.containerData,\r\n cropBoxData = this.cropBoxData;\r\n\r\n if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\r\n cropBoxData.left = cropBoxData.oldLeft;\r\n }\r\n\r\n if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\r\n cropBoxData.top = cropBoxData.oldTop;\r\n }\r\n\r\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\r\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\r\n this.limitCropBox(false, true);\r\n cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\r\n cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\r\n cropBoxData.oldLeft = cropBoxData.left;\r\n cropBoxData.oldTop = cropBoxData.top;\r\n\r\n if (options.movable && options.cropBoxMovable) {\r\n // Turn to move the canvas when the crop box is equal to the container\r\n setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\r\n }\r\n\r\n setStyle(this.cropBox, assign({\r\n width: cropBoxData.width,\r\n height: cropBoxData.height\r\n }, getTransforms({\r\n translateX: cropBoxData.left,\r\n translateY: cropBoxData.top\r\n })));\r\n\r\n if (this.cropped && this.limited) {\r\n this.limitCanvas(true, true);\r\n }\r\n\r\n if (!this.disabled) {\r\n this.output();\r\n }\r\n },\r\n output: function output() {\r\n this.preview();\r\n dispatchEvent(this.element, EVENT_CROP, this.getData());\r\n }\r\n };\r\n\r\n var preview = {\r\n initPreview: function initPreview() {\r\n var element = this.element,\r\n crossOrigin = this.crossOrigin;\r\n var preview = this.options.preview;\r\n var url = crossOrigin ? this.crossOriginUrl : this.url;\r\n var alt = element.alt || 'The image to preview';\r\n var image = document.createElement('img');\r\n\r\n if (crossOrigin) {\r\n image.crossOrigin = crossOrigin;\r\n }\r\n\r\n image.src = url;\r\n image.alt = alt;\r\n this.viewBox.appendChild(image);\r\n this.viewBoxImage = image;\r\n\r\n if (!preview) {\r\n return;\r\n }\r\n\r\n var previews = preview;\r\n\r\n if (typeof preview === 'string') {\r\n previews = element.ownerDocument.querySelectorAll(preview);\r\n } else if (preview.querySelector) {\r\n previews = [preview];\r\n }\r\n\r\n this.previews = previews;\r\n forEach(previews, function (el) {\r\n var img = document.createElement('img'); // Save the original size for recover\r\n\r\n setData(el, DATA_PREVIEW, {\r\n width: el.offsetWidth,\r\n height: el.offsetHeight,\r\n html: el.innerHTML\r\n });\r\n\r\n if (crossOrigin) {\r\n img.crossOrigin = crossOrigin;\r\n }\r\n\r\n img.src = url;\r\n img.alt = alt;\r\n /**\r\n * Override img element styles\r\n * Add `display:block` to avoid margin top issue\r\n * Add `height:auto` to override `height` attribute on IE8\r\n * (Occur only when margin-top <= -height)\r\n */\r\n\r\n img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\r\n el.innerHTML = '';\r\n el.appendChild(img);\r\n });\r\n },\r\n resetPreview: function resetPreview() {\r\n forEach(this.previews, function (element) {\r\n var data = getData(element, DATA_PREVIEW);\r\n setStyle(element, {\r\n width: data.width,\r\n height: data.height\r\n });\r\n element.innerHTML = data.html;\r\n removeData(element, DATA_PREVIEW);\r\n });\r\n },\r\n preview: function preview() {\r\n var imageData = this.imageData,\r\n canvasData = this.canvasData,\r\n cropBoxData = this.cropBoxData;\r\n var cropBoxWidth = cropBoxData.width,\r\n cropBoxHeight = cropBoxData.height;\r\n var width = imageData.width,\r\n height = imageData.height;\r\n var left = cropBoxData.left - canvasData.left - imageData.left;\r\n var top = cropBoxData.top - canvasData.top - imageData.top;\r\n\r\n if (!this.cropped || this.disabled) {\r\n return;\r\n }\r\n\r\n setStyle(this.viewBoxImage, assign({\r\n width: width,\r\n height: height\r\n }, getTransforms(assign({\r\n translateX: -left,\r\n translateY: -top\r\n }, imageData))));\r\n forEach(this.previews, function (element) {\r\n var data = getData(element, DATA_PREVIEW);\r\n var originalWidth = data.width;\r\n var originalHeight = data.height;\r\n var newWidth = originalWidth;\r\n var newHeight = originalHeight;\r\n var ratio = 1;\r\n\r\n if (cropBoxWidth) {\r\n ratio = originalWidth / cropBoxWidth;\r\n newHeight = cropBoxHeight * ratio;\r\n }\r\n\r\n if (cropBoxHeight && newHeight > originalHeight) {\r\n ratio = originalHeight / cropBoxHeight;\r\n newWidth = cropBoxWidth * ratio;\r\n newHeight = originalHeight;\r\n }\r\n\r\n setStyle(element, {\r\n width: newWidth,\r\n height: newHeight\r\n });\r\n setStyle(element.getElementsByTagName('img')[0], assign({\r\n width: width * ratio,\r\n height: height * ratio\r\n }, getTransforms(assign({\r\n translateX: -left * ratio,\r\n translateY: -top * ratio\r\n }, imageData))));\r\n });\r\n }\r\n };\r\n\r\n var events = {\r\n bind: function bind() {\r\n var element = this.element,\r\n options = this.options,\r\n cropper = this.cropper;\r\n\r\n if (isFunction$1(options.cropstart)) {\r\n addListener(element, EVENT_CROP_START, options.cropstart);\r\n }\r\n\r\n if (isFunction$1(options.cropmove)) {\r\n addListener(element, EVENT_CROP_MOVE, options.cropmove);\r\n }\r\n\r\n if (isFunction$1(options.cropend)) {\r\n addListener(element, EVENT_CROP_END, options.cropend);\r\n }\r\n\r\n if (isFunction$1(options.crop)) {\r\n addListener(element, EVENT_CROP, options.crop);\r\n }\r\n\r\n if (isFunction$1(options.zoom)) {\r\n addListener(element, EVENT_ZOOM, options.zoom);\r\n }\r\n\r\n addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\r\n\r\n if (options.zoomable && options.zoomOnWheel) {\r\n addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\r\n passive: false,\r\n capture: true\r\n });\r\n }\r\n\r\n if (options.toggleDragModeOnDblclick) {\r\n addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\r\n }\r\n\r\n addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\r\n addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\r\n\r\n if (options.responsive) {\r\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\r\n }\r\n },\r\n unbind: function unbind() {\r\n var element = this.element,\r\n options = this.options,\r\n cropper = this.cropper;\r\n\r\n if (isFunction$1(options.cropstart)) {\r\n removeListener(element, EVENT_CROP_START, options.cropstart);\r\n }\r\n\r\n if (isFunction$1(options.cropmove)) {\r\n removeListener(element, EVENT_CROP_MOVE, options.cropmove);\r\n }\r\n\r\n if (isFunction$1(options.cropend)) {\r\n removeListener(element, EVENT_CROP_END, options.cropend);\r\n }\r\n\r\n if (isFunction$1(options.crop)) {\r\n removeListener(element, EVENT_CROP, options.crop);\r\n }\r\n\r\n if (isFunction$1(options.zoom)) {\r\n removeListener(element, EVENT_ZOOM, options.zoom);\r\n }\r\n\r\n removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\r\n\r\n if (options.zoomable && options.zoomOnWheel) {\r\n removeListener(cropper, EVENT_WHEEL, this.onWheel, {\r\n passive: false,\r\n capture: true\r\n });\r\n }\r\n\r\n if (options.toggleDragModeOnDblclick) {\r\n removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\r\n }\r\n\r\n removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\r\n removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\r\n\r\n if (options.responsive) {\r\n removeListener(window, EVENT_RESIZE, this.onResize);\r\n }\r\n }\r\n };\r\n\r\n var handlers = {\r\n resize: function resize() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n var options = this.options,\r\n container = this.container,\r\n containerData = this.containerData;\r\n var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed\r\n\r\n if (ratio !== 1 || container.offsetHeight !== containerData.height) {\r\n var canvasData;\r\n var cropBoxData;\r\n\r\n if (options.restore) {\r\n canvasData = this.getCanvasData();\r\n cropBoxData = this.getCropBoxData();\r\n }\r\n\r\n this.render();\r\n\r\n if (options.restore) {\r\n this.setCanvasData(forEach(canvasData, function (n, i) {\r\n canvasData[i] = n * ratio;\r\n }));\r\n this.setCropBoxData(forEach(cropBoxData, function (n, i) {\r\n cropBoxData[i] = n * ratio;\r\n }));\r\n }\r\n }\r\n },\r\n dblclick: function dblclick() {\r\n if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\r\n return;\r\n }\r\n\r\n this.setDragMode(hasClass$1(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\r\n },\r\n wheel: function wheel(event) {\r\n var _this = this;\r\n\r\n var ratio = Number(this.options.wheelZoomRatio) || 0.1;\r\n var delta = 1;\r\n\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21)\r\n\r\n if (this.wheeling) {\r\n return;\r\n }\r\n\r\n this.wheeling = true;\r\n setTimeout(function () {\r\n _this.wheeling = false;\r\n }, 50);\r\n\r\n if (event.deltaY) {\r\n delta = event.deltaY > 0 ? 1 : -1;\r\n } else if (event.wheelDelta) {\r\n delta = -event.wheelDelta / 120;\r\n } else if (event.detail) {\r\n delta = event.detail > 0 ? 1 : -1;\r\n }\r\n\r\n this.zoom(-delta * ratio, event);\r\n },\r\n cropStart: function cropStart(event) {\r\n var buttons = event.buttons,\r\n button = event.button;\r\n\r\n if (this.disabled // Handle mouse event and pointer event and ignore touch event\r\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\r\n isNumber$1(buttons) && buttons !== 1 || isNumber$1(button) && button !== 0 // Open context menu\r\n || event.ctrlKey)) {\r\n return;\r\n }\r\n\r\n var options = this.options,\r\n pointers = this.pointers;\r\n var action;\r\n\r\n if (event.changedTouches) {\r\n // Handle touch event\r\n forEach(event.changedTouches, function (touch) {\r\n pointers[touch.identifier] = getPointer(touch);\r\n });\r\n } else {\r\n // Handle mouse event and pointer event\r\n pointers[event.pointerId || 0] = getPointer(event);\r\n }\r\n\r\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\r\n action = ACTION_ZOOM;\r\n } else {\r\n action = getData(event.target, DATA_ACTION);\r\n }\r\n\r\n if (!REGEXP_ACTIONS.test(action)) {\r\n return;\r\n }\r\n\r\n if (dispatchEvent(this.element, EVENT_CROP_START, {\r\n originalEvent: event,\r\n action: action\r\n }) === false) {\r\n return;\r\n } // This line is required for preventing page zooming in iOS browsers\r\n\r\n\r\n event.preventDefault();\r\n this.action = action;\r\n this.cropping = false;\r\n\r\n if (action === ACTION_CROP) {\r\n this.cropping = true;\r\n addClass$1(this.dragBox, CLASS_MODAL);\r\n }\r\n },\r\n cropMove: function cropMove(event) {\r\n var action = this.action;\r\n\r\n if (this.disabled || !action) {\r\n return;\r\n }\r\n\r\n var pointers = this.pointers;\r\n event.preventDefault();\r\n\r\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\r\n originalEvent: event,\r\n action: action\r\n }) === false) {\r\n return;\r\n }\r\n\r\n if (event.changedTouches) {\r\n forEach(event.changedTouches, function (touch) {\r\n // The first parameter should not be undefined (#432)\r\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\r\n });\r\n } else {\r\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\r\n }\r\n\r\n this.change(event);\r\n },\r\n cropEnd: function cropEnd(event) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n var action = this.action,\r\n pointers = this.pointers;\r\n\r\n if (event.changedTouches) {\r\n forEach(event.changedTouches, function (touch) {\r\n delete pointers[touch.identifier];\r\n });\r\n } else {\r\n delete pointers[event.pointerId || 0];\r\n }\r\n\r\n if (!action) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n if (!Object.keys(pointers).length) {\r\n this.action = '';\r\n }\r\n\r\n if (this.cropping) {\r\n this.cropping = false;\r\n toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\r\n }\r\n\r\n dispatchEvent(this.element, EVENT_CROP_END, {\r\n originalEvent: event,\r\n action: action\r\n });\r\n }\r\n };\r\n\r\n var change = {\r\n change: function change(event) {\r\n var options = this.options,\r\n canvasData = this.canvasData,\r\n containerData = this.containerData,\r\n cropBoxData = this.cropBoxData,\r\n pointers = this.pointers;\r\n var action = this.action;\r\n var aspectRatio = options.aspectRatio;\r\n var left = cropBoxData.left,\r\n top = cropBoxData.top,\r\n width = cropBoxData.width,\r\n height = cropBoxData.height;\r\n var right = left + width;\r\n var bottom = top + height;\r\n var minLeft = 0;\r\n var minTop = 0;\r\n var maxWidth = containerData.width;\r\n var maxHeight = containerData.height;\r\n var renderable = true;\r\n var offset; // Locking aspect ratio in \"free mode\" by holding shift key\r\n\r\n if (!aspectRatio && event.shiftKey) {\r\n aspectRatio = width && height ? width / height : 1;\r\n }\r\n\r\n if (this.limited) {\r\n minLeft = cropBoxData.minLeft;\r\n minTop = cropBoxData.minTop;\r\n maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\r\n maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\r\n }\r\n\r\n var pointer = pointers[Object.keys(pointers)[0]];\r\n var range = {\r\n x: pointer.endX - pointer.startX,\r\n y: pointer.endY - pointer.startY\r\n };\r\n\r\n var check = function check(side) {\r\n switch (side) {\r\n case ACTION_EAST:\r\n if (right + range.x > maxWidth) {\r\n range.x = maxWidth - right;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_WEST:\r\n if (left + range.x < minLeft) {\r\n range.x = minLeft - left;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_NORTH:\r\n if (top + range.y < minTop) {\r\n range.y = minTop - top;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_SOUTH:\r\n if (bottom + range.y > maxHeight) {\r\n range.y = maxHeight - bottom;\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n switch (action) {\r\n // Move crop box\r\n case ACTION_ALL:\r\n left += range.x;\r\n top += range.y;\r\n break;\r\n // Resize crop box\r\n\r\n case ACTION_EAST:\r\n if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_EAST);\r\n width += range.x;\r\n\r\n if (width < 0) {\r\n action = ACTION_WEST;\r\n width = -width;\r\n left -= width;\r\n }\r\n\r\n if (aspectRatio) {\r\n height = width / aspectRatio;\r\n top += (cropBoxData.height - height) / 2;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_NORTH:\r\n if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_NORTH);\r\n height -= range.y;\r\n top += range.y;\r\n\r\n if (height < 0) {\r\n action = ACTION_SOUTH;\r\n height = -height;\r\n top -= height;\r\n }\r\n\r\n if (aspectRatio) {\r\n width = height * aspectRatio;\r\n left += (cropBoxData.width - width) / 2;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_WEST:\r\n if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_WEST);\r\n width -= range.x;\r\n left += range.x;\r\n\r\n if (width < 0) {\r\n action = ACTION_EAST;\r\n width = -width;\r\n left -= width;\r\n }\r\n\r\n if (aspectRatio) {\r\n height = width / aspectRatio;\r\n top += (cropBoxData.height - height) / 2;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_SOUTH:\r\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_SOUTH);\r\n height += range.y;\r\n\r\n if (height < 0) {\r\n action = ACTION_NORTH;\r\n height = -height;\r\n top -= height;\r\n }\r\n\r\n if (aspectRatio) {\r\n width = height * aspectRatio;\r\n left += (cropBoxData.width - width) / 2;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_NORTH_EAST:\r\n if (aspectRatio) {\r\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_NORTH);\r\n height -= range.y;\r\n top += range.y;\r\n width = height * aspectRatio;\r\n } else {\r\n check(ACTION_NORTH);\r\n check(ACTION_EAST);\r\n\r\n if (range.x >= 0) {\r\n if (right < maxWidth) {\r\n width += range.x;\r\n } else if (range.y <= 0 && top <= minTop) {\r\n renderable = false;\r\n }\r\n } else {\r\n width += range.x;\r\n }\r\n\r\n if (range.y <= 0) {\r\n if (top > minTop) {\r\n height -= range.y;\r\n top += range.y;\r\n }\r\n } else {\r\n height -= range.y;\r\n top += range.y;\r\n }\r\n }\r\n\r\n if (width < 0 && height < 0) {\r\n action = ACTION_SOUTH_WEST;\r\n height = -height;\r\n width = -width;\r\n top -= height;\r\n left -= width;\r\n } else if (width < 0) {\r\n action = ACTION_NORTH_WEST;\r\n width = -width;\r\n left -= width;\r\n } else if (height < 0) {\r\n action = ACTION_SOUTH_EAST;\r\n height = -height;\r\n top -= height;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_NORTH_WEST:\r\n if (aspectRatio) {\r\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_NORTH);\r\n height -= range.y;\r\n top += range.y;\r\n width = height * aspectRatio;\r\n left += cropBoxData.width - width;\r\n } else {\r\n check(ACTION_NORTH);\r\n check(ACTION_WEST);\r\n\r\n if (range.x <= 0) {\r\n if (left > minLeft) {\r\n width -= range.x;\r\n left += range.x;\r\n } else if (range.y <= 0 && top <= minTop) {\r\n renderable = false;\r\n }\r\n } else {\r\n width -= range.x;\r\n left += range.x;\r\n }\r\n\r\n if (range.y <= 0) {\r\n if (top > minTop) {\r\n height -= range.y;\r\n top += range.y;\r\n }\r\n } else {\r\n height -= range.y;\r\n top += range.y;\r\n }\r\n }\r\n\r\n if (width < 0 && height < 0) {\r\n action = ACTION_SOUTH_EAST;\r\n height = -height;\r\n width = -width;\r\n top -= height;\r\n left -= width;\r\n } else if (width < 0) {\r\n action = ACTION_NORTH_EAST;\r\n width = -width;\r\n left -= width;\r\n } else if (height < 0) {\r\n action = ACTION_SOUTH_WEST;\r\n height = -height;\r\n top -= height;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_SOUTH_WEST:\r\n if (aspectRatio) {\r\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_WEST);\r\n width -= range.x;\r\n left += range.x;\r\n height = width / aspectRatio;\r\n } else {\r\n check(ACTION_SOUTH);\r\n check(ACTION_WEST);\r\n\r\n if (range.x <= 0) {\r\n if (left > minLeft) {\r\n width -= range.x;\r\n left += range.x;\r\n } else if (range.y >= 0 && bottom >= maxHeight) {\r\n renderable = false;\r\n }\r\n } else {\r\n width -= range.x;\r\n left += range.x;\r\n }\r\n\r\n if (range.y >= 0) {\r\n if (bottom < maxHeight) {\r\n height += range.y;\r\n }\r\n } else {\r\n height += range.y;\r\n }\r\n }\r\n\r\n if (width < 0 && height < 0) {\r\n action = ACTION_NORTH_EAST;\r\n height = -height;\r\n width = -width;\r\n top -= height;\r\n left -= width;\r\n } else if (width < 0) {\r\n action = ACTION_SOUTH_EAST;\r\n width = -width;\r\n left -= width;\r\n } else if (height < 0) {\r\n action = ACTION_NORTH_WEST;\r\n height = -height;\r\n top -= height;\r\n }\r\n\r\n break;\r\n\r\n case ACTION_SOUTH_EAST:\r\n if (aspectRatio) {\r\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n check(ACTION_EAST);\r\n width += range.x;\r\n height = width / aspectRatio;\r\n } else {\r\n check(ACTION_SOUTH);\r\n check(ACTION_EAST);\r\n\r\n if (range.x >= 0) {\r\n if (right < maxWidth) {\r\n width += range.x;\r\n } else if (range.y >= 0 && bottom >= maxHeight) {\r\n renderable = false;\r\n }\r\n } else {\r\n width += range.x;\r\n }\r\n\r\n if (range.y >= 0) {\r\n if (bottom < maxHeight) {\r\n height += range.y;\r\n }\r\n } else {\r\n height += range.y;\r\n }\r\n }\r\n\r\n if (width < 0 && height < 0) {\r\n action = ACTION_NORTH_WEST;\r\n height = -height;\r\n width = -width;\r\n top -= height;\r\n left -= width;\r\n } else if (width < 0) {\r\n action = ACTION_SOUTH_WEST;\r\n width = -width;\r\n left -= width;\r\n } else if (height < 0) {\r\n action = ACTION_NORTH_EAST;\r\n height = -height;\r\n top -= height;\r\n }\r\n\r\n break;\r\n // Move canvas\r\n\r\n case ACTION_MOVE:\r\n this.move(range.x, range.y);\r\n renderable = false;\r\n break;\r\n // Zoom canvas\r\n\r\n case ACTION_ZOOM:\r\n this.zoom(getMaxZoomRatio(pointers), event);\r\n renderable = false;\r\n break;\r\n // Create crop box\r\n\r\n case ACTION_CROP:\r\n if (!range.x || !range.y) {\r\n renderable = false;\r\n break;\r\n }\r\n\r\n offset = getOffset(this.cropper);\r\n left = pointer.startX - offset.left;\r\n top = pointer.startY - offset.top;\r\n width = cropBoxData.minWidth;\r\n height = cropBoxData.minHeight;\r\n\r\n if (range.x > 0) {\r\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\r\n } else if (range.x < 0) {\r\n left -= width;\r\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\r\n }\r\n\r\n if (range.y < 0) {\r\n top -= height;\r\n } // Show the crop box if is hidden\r\n\r\n\r\n if (!this.cropped) {\r\n removeClass$1(this.cropBox, CLASS_HIDDEN);\r\n this.cropped = true;\r\n\r\n if (this.limited) {\r\n this.limitCropBox(true, true);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (renderable) {\r\n cropBoxData.width = width;\r\n cropBoxData.height = height;\r\n cropBoxData.left = left;\r\n cropBoxData.top = top;\r\n this.action = action;\r\n this.renderCropBox();\r\n } // Override\r\n\r\n\r\n forEach(pointers, function (p) {\r\n p.startX = p.endX;\r\n p.startY = p.endY;\r\n });\r\n }\r\n };\r\n\r\n var methods = {\r\n // Show the crop box manually\r\n crop: function crop() {\r\n if (this.ready && !this.cropped && !this.disabled) {\r\n this.cropped = true;\r\n this.limitCropBox(true, true);\r\n\r\n if (this.options.modal) {\r\n addClass$1(this.dragBox, CLASS_MODAL);\r\n }\r\n\r\n removeClass$1(this.cropBox, CLASS_HIDDEN);\r\n this.setCropBoxData(this.initialCropBoxData);\r\n }\r\n\r\n return this;\r\n },\r\n // Reset the image and crop box to their initial states\r\n reset: function reset() {\r\n if (this.ready && !this.disabled) {\r\n this.imageData = assign({}, this.initialImageData);\r\n this.canvasData = assign({}, this.initialCanvasData);\r\n this.cropBoxData = assign({}, this.initialCropBoxData);\r\n this.renderCanvas();\r\n\r\n if (this.cropped) {\r\n this.renderCropBox();\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n // Clear the crop box\r\n clear: function clear() {\r\n if (this.cropped && !this.disabled) {\r\n assign(this.cropBoxData, {\r\n left: 0,\r\n top: 0,\r\n width: 0,\r\n height: 0\r\n });\r\n this.cropped = false;\r\n this.renderCropBox();\r\n this.limitCanvas(true, true); // Render canvas after crop box rendered\r\n\r\n this.renderCanvas();\r\n removeClass$1(this.dragBox, CLASS_MODAL);\r\n addClass$1(this.cropBox, CLASS_HIDDEN);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Replace the image's src and rebuild the cropper\r\n * @param {string} url - The new URL.\r\n * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\r\n * @returns {Cropper} this\r\n */\r\n replace: function replace(url) {\r\n var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n\r\n if (!this.disabled && url) {\r\n if (this.isImg) {\r\n this.element.src = url;\r\n }\r\n\r\n if (hasSameSize) {\r\n this.url = url;\r\n this.image.src = url;\r\n\r\n if (this.ready) {\r\n this.viewBoxImage.src = url;\r\n forEach(this.previews, function (element) {\r\n element.getElementsByTagName('img')[0].src = url;\r\n });\r\n }\r\n } else {\r\n if (this.isImg) {\r\n this.replaced = true;\r\n }\r\n\r\n this.options.data = null;\r\n this.uncreate();\r\n this.load(url);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n // Enable (unfreeze) the cropper\r\n enable: function enable() {\r\n if (this.ready && this.disabled) {\r\n this.disabled = false;\r\n removeClass$1(this.cropper, CLASS_DISABLED);\r\n }\r\n\r\n return this;\r\n },\r\n // Disable (freeze) the cropper\r\n disable: function disable() {\r\n if (this.ready && !this.disabled) {\r\n this.disabled = true;\r\n addClass$1(this.cropper, CLASS_DISABLED);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Destroy the cropper and remove the instance from the image\r\n * @returns {Cropper} this\r\n */\r\n destroy: function destroy() {\r\n var element = this.element;\r\n\r\n if (!element[NAMESPACE]) {\r\n return this;\r\n }\r\n\r\n element[NAMESPACE] = undefined;\r\n\r\n if (this.isImg && this.replaced) {\r\n element.src = this.originalUrl;\r\n }\r\n\r\n this.uncreate();\r\n return this;\r\n },\r\n\r\n /**\r\n * Move the canvas with relative offsets\r\n * @param {number} offsetX - The relative offset distance on the x-axis.\r\n * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\r\n * @returns {Cropper} this\r\n */\r\n move: function move(offsetX) {\r\n var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\r\n var _this$canvasData = this.canvasData,\r\n left = _this$canvasData.left,\r\n top = _this$canvasData.top;\r\n return this.moveTo(isUndefined$1(offsetX) ? offsetX : left + Number(offsetX), isUndefined$1(offsetY) ? offsetY : top + Number(offsetY));\r\n },\r\n\r\n /**\r\n * Move the canvas to an absolute point\r\n * @param {number} x - The x-axis coordinate.\r\n * @param {number} [y=x] - The y-axis coordinate.\r\n * @returns {Cropper} this\r\n */\r\n moveTo: function moveTo(x) {\r\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\r\n var canvasData = this.canvasData;\r\n var changed = false;\r\n x = Number(x);\r\n y = Number(y);\r\n\r\n if (this.ready && !this.disabled && this.options.movable) {\r\n if (isNumber$1(x)) {\r\n canvasData.left = x;\r\n changed = true;\r\n }\r\n\r\n if (isNumber$1(y)) {\r\n canvasData.top = y;\r\n changed = true;\r\n }\r\n\r\n if (changed) {\r\n this.renderCanvas(true);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Zoom the canvas with a relative ratio\r\n * @param {number} ratio - The target ratio.\r\n * @param {Event} _originalEvent - The original event if any.\r\n * @returns {Cropper} this\r\n */\r\n zoom: function zoom(ratio, _originalEvent) {\r\n var canvasData = this.canvasData;\r\n ratio = Number(ratio);\r\n\r\n if (ratio < 0) {\r\n ratio = 1 / (1 - ratio);\r\n } else {\r\n ratio = 1 + ratio;\r\n }\r\n\r\n return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\r\n },\r\n\r\n /**\r\n * Zoom the canvas to an absolute ratio\r\n * @param {number} ratio - The target ratio.\r\n * @param {Object} pivot - The zoom pivot point coordinate.\r\n * @param {Event} _originalEvent - The original event if any.\r\n * @returns {Cropper} this\r\n */\r\n zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\r\n var options = this.options,\r\n canvasData = this.canvasData;\r\n var width = canvasData.width,\r\n height = canvasData.height,\r\n naturalWidth = canvasData.naturalWidth,\r\n naturalHeight = canvasData.naturalHeight;\r\n ratio = Number(ratio);\r\n\r\n if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\r\n var newWidth = naturalWidth * ratio;\r\n var newHeight = naturalHeight * ratio;\r\n\r\n if (dispatchEvent(this.element, EVENT_ZOOM, {\r\n ratio: ratio,\r\n oldRatio: width / naturalWidth,\r\n originalEvent: _originalEvent\r\n }) === false) {\r\n return this;\r\n }\r\n\r\n if (_originalEvent) {\r\n var pointers = this.pointers;\r\n var offset = getOffset(this.cropper);\r\n var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\r\n pageX: _originalEvent.pageX,\r\n pageY: _originalEvent.pageY\r\n }; // Zoom from the triggering point of the event\r\n\r\n canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\r\n canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\r\n } else if (isPlainObject(pivot) && isNumber$1(pivot.x) && isNumber$1(pivot.y)) {\r\n canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\r\n canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\r\n } else {\r\n // Zoom from the center of the canvas\r\n canvasData.left -= (newWidth - width) / 2;\r\n canvasData.top -= (newHeight - height) / 2;\r\n }\r\n\r\n canvasData.width = newWidth;\r\n canvasData.height = newHeight;\r\n this.renderCanvas(true);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Rotate the canvas with a relative degree\r\n * @param {number} degree - The rotate degree.\r\n * @returns {Cropper} this\r\n */\r\n rotate: function rotate(degree) {\r\n return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\r\n },\r\n\r\n /**\r\n * Rotate the canvas to an absolute degree\r\n * @param {number} degree - The rotate degree.\r\n * @returns {Cropper} this\r\n */\r\n rotateTo: function rotateTo(degree) {\r\n degree = Number(degree);\r\n\r\n if (isNumber$1(degree) && this.ready && !this.disabled && this.options.rotatable) {\r\n this.imageData.rotate = degree % 360;\r\n this.renderCanvas(true, true);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Scale the image on the x-axis.\r\n * @param {number} scaleX - The scale ratio on the x-axis.\r\n * @returns {Cropper} this\r\n */\r\n scaleX: function scaleX(_scaleX) {\r\n var scaleY = this.imageData.scaleY;\r\n return this.scale(_scaleX, isNumber$1(scaleY) ? scaleY : 1);\r\n },\r\n\r\n /**\r\n * Scale the image on the y-axis.\r\n * @param {number} scaleY - The scale ratio on the y-axis.\r\n * @returns {Cropper} this\r\n */\r\n scaleY: function scaleY(_scaleY) {\r\n var scaleX = this.imageData.scaleX;\r\n return this.scale(isNumber$1(scaleX) ? scaleX : 1, _scaleY);\r\n },\r\n\r\n /**\r\n * Scale the image\r\n * @param {number} scaleX - The scale ratio on the x-axis.\r\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\r\n * @returns {Cropper} this\r\n */\r\n scale: function scale(scaleX) {\r\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\r\n var imageData = this.imageData;\r\n var transformed = false;\r\n scaleX = Number(scaleX);\r\n scaleY = Number(scaleY);\r\n\r\n if (this.ready && !this.disabled && this.options.scalable) {\r\n if (isNumber$1(scaleX)) {\r\n imageData.scaleX = scaleX;\r\n transformed = true;\r\n }\r\n\r\n if (isNumber$1(scaleY)) {\r\n imageData.scaleY = scaleY;\r\n transformed = true;\r\n }\r\n\r\n if (transformed) {\r\n this.renderCanvas(true, true);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the cropped area position and size data (base on the original image)\r\n * @param {boolean} [rounded=false] - Indicate if round the data values or not.\r\n * @returns {Object} The result cropped data.\r\n */\r\n getData: function getData() {\r\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\r\n var options = this.options,\r\n imageData = this.imageData,\r\n canvasData = this.canvasData,\r\n cropBoxData = this.cropBoxData;\r\n var data;\r\n\r\n if (this.ready && this.cropped) {\r\n data = {\r\n x: cropBoxData.left - canvasData.left,\r\n y: cropBoxData.top - canvasData.top,\r\n width: cropBoxData.width,\r\n height: cropBoxData.height\r\n };\r\n var ratio = imageData.width / imageData.naturalWidth;\r\n forEach(data, function (n, i) {\r\n data[i] = n / ratio;\r\n });\r\n\r\n if (rounded) {\r\n // In case rounding off leads to extra 1px in right or bottom border\r\n // we should round the top-left corner and the dimension (#343).\r\n var bottom = Math.round(data.y + data.height);\r\n var right = Math.round(data.x + data.width);\r\n data.x = Math.round(data.x);\r\n data.y = Math.round(data.y);\r\n data.width = right - data.x;\r\n data.height = bottom - data.y;\r\n }\r\n } else {\r\n data = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (options.rotatable) {\r\n data.rotate = imageData.rotate || 0;\r\n }\r\n\r\n if (options.scalable) {\r\n data.scaleX = imageData.scaleX || 1;\r\n data.scaleY = imageData.scaleY || 1;\r\n }\r\n\r\n return data;\r\n },\r\n\r\n /**\r\n * Set the cropped area position and size with new data\r\n * @param {Object} data - The new data.\r\n * @returns {Cropper} this\r\n */\r\n setData: function setData(data) {\r\n var options = this.options,\r\n imageData = this.imageData,\r\n canvasData = this.canvasData;\r\n var cropBoxData = {};\r\n\r\n if (this.ready && !this.disabled && isPlainObject(data)) {\r\n var transformed = false;\r\n\r\n if (options.rotatable) {\r\n if (isNumber$1(data.rotate) && data.rotate !== imageData.rotate) {\r\n imageData.rotate = data.rotate;\r\n transformed = true;\r\n }\r\n }\r\n\r\n if (options.scalable) {\r\n if (isNumber$1(data.scaleX) && data.scaleX !== imageData.scaleX) {\r\n imageData.scaleX = data.scaleX;\r\n transformed = true;\r\n }\r\n\r\n if (isNumber$1(data.scaleY) && data.scaleY !== imageData.scaleY) {\r\n imageData.scaleY = data.scaleY;\r\n transformed = true;\r\n }\r\n }\r\n\r\n if (transformed) {\r\n this.renderCanvas(true, true);\r\n }\r\n\r\n var ratio = imageData.width / imageData.naturalWidth;\r\n\r\n if (isNumber$1(data.x)) {\r\n cropBoxData.left = data.x * ratio + canvasData.left;\r\n }\r\n\r\n if (isNumber$1(data.y)) {\r\n cropBoxData.top = data.y * ratio + canvasData.top;\r\n }\r\n\r\n if (isNumber$1(data.width)) {\r\n cropBoxData.width = data.width * ratio;\r\n }\r\n\r\n if (isNumber$1(data.height)) {\r\n cropBoxData.height = data.height * ratio;\r\n }\r\n\r\n this.setCropBoxData(cropBoxData);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the container size data.\r\n * @returns {Object} The result container data.\r\n */\r\n getContainerData: function getContainerData() {\r\n return this.ready ? assign({}, this.containerData) : {};\r\n },\r\n\r\n /**\r\n * Get the image position and size data.\r\n * @returns {Object} The result image data.\r\n */\r\n getImageData: function getImageData() {\r\n return this.sized ? assign({}, this.imageData) : {};\r\n },\r\n\r\n /**\r\n * Get the canvas position and size data.\r\n * @returns {Object} The result canvas data.\r\n */\r\n getCanvasData: function getCanvasData() {\r\n var canvasData = this.canvasData;\r\n var data = {};\r\n\r\n if (this.ready) {\r\n forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\r\n data[n] = canvasData[n];\r\n });\r\n }\r\n\r\n return data;\r\n },\r\n\r\n /**\r\n * Set the canvas position and size with new data.\r\n * @param {Object} data - The new canvas data.\r\n * @returns {Cropper} this\r\n */\r\n setCanvasData: function setCanvasData(data) {\r\n var canvasData = this.canvasData;\r\n var aspectRatio = canvasData.aspectRatio;\r\n\r\n if (this.ready && !this.disabled && isPlainObject(data)) {\r\n if (isNumber$1(data.left)) {\r\n canvasData.left = data.left;\r\n }\r\n\r\n if (isNumber$1(data.top)) {\r\n canvasData.top = data.top;\r\n }\r\n\r\n if (isNumber$1(data.width)) {\r\n canvasData.width = data.width;\r\n canvasData.height = data.width / aspectRatio;\r\n } else if (isNumber$1(data.height)) {\r\n canvasData.height = data.height;\r\n canvasData.width = data.height * aspectRatio;\r\n }\r\n\r\n this.renderCanvas(true);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the crop box position and size data.\r\n * @returns {Object} The result crop box data.\r\n */\r\n getCropBoxData: function getCropBoxData() {\r\n var cropBoxData = this.cropBoxData;\r\n var data;\r\n\r\n if (this.ready && this.cropped) {\r\n data = {\r\n left: cropBoxData.left,\r\n top: cropBoxData.top,\r\n width: cropBoxData.width,\r\n height: cropBoxData.height\r\n };\r\n }\r\n\r\n return data || {};\r\n },\r\n\r\n /**\r\n * Set the crop box position and size with new data.\r\n * @param {Object} data - The new crop box data.\r\n * @returns {Cropper} this\r\n */\r\n setCropBoxData: function setCropBoxData(data) {\r\n var cropBoxData = this.cropBoxData;\r\n var aspectRatio = this.options.aspectRatio;\r\n var widthChanged;\r\n var heightChanged;\r\n\r\n if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\r\n if (isNumber$1(data.left)) {\r\n cropBoxData.left = data.left;\r\n }\r\n\r\n if (isNumber$1(data.top)) {\r\n cropBoxData.top = data.top;\r\n }\r\n\r\n if (isNumber$1(data.width) && data.width !== cropBoxData.width) {\r\n widthChanged = true;\r\n cropBoxData.width = data.width;\r\n }\r\n\r\n if (isNumber$1(data.height) && data.height !== cropBoxData.height) {\r\n heightChanged = true;\r\n cropBoxData.height = data.height;\r\n }\r\n\r\n if (aspectRatio) {\r\n if (widthChanged) {\r\n cropBoxData.height = cropBoxData.width / aspectRatio;\r\n } else if (heightChanged) {\r\n cropBoxData.width = cropBoxData.height * aspectRatio;\r\n }\r\n }\r\n\r\n this.renderCropBox();\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get a canvas drawn the cropped image.\r\n * @param {Object} [options={}] - The config options.\r\n * @returns {HTMLCanvasElement} - The result canvas.\r\n */\r\n getCroppedCanvas: function getCroppedCanvas() {\r\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n if (!this.ready || !window.HTMLCanvasElement) {\r\n return null;\r\n }\r\n\r\n var canvasData = this.canvasData;\r\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped.\r\n\r\n if (!this.cropped) {\r\n return source;\r\n }\r\n\r\n var _this$getData = this.getData(),\r\n initialX = _this$getData.x,\r\n initialY = _this$getData.y,\r\n initialWidth = _this$getData.width,\r\n initialHeight = _this$getData.height;\r\n\r\n var ratio = source.width / Math.floor(canvasData.naturalWidth);\r\n\r\n if (ratio !== 1) {\r\n initialX *= ratio;\r\n initialY *= ratio;\r\n initialWidth *= ratio;\r\n initialHeight *= ratio;\r\n }\r\n\r\n var aspectRatio = initialWidth / initialHeight;\r\n var maxSizes = getAdjustedSizes({\r\n aspectRatio: aspectRatio,\r\n width: options.maxWidth || Infinity,\r\n height: options.maxHeight || Infinity\r\n });\r\n var minSizes = getAdjustedSizes({\r\n aspectRatio: aspectRatio,\r\n width: options.minWidth || 0,\r\n height: options.minHeight || 0\r\n }, 'cover');\r\n\r\n var _getAdjustedSizes = getAdjustedSizes({\r\n aspectRatio: aspectRatio,\r\n width: options.width || (ratio !== 1 ? source.width : initialWidth),\r\n height: options.height || (ratio !== 1 ? source.height : initialHeight)\r\n }),\r\n width = _getAdjustedSizes.width,\r\n height = _getAdjustedSizes.height;\r\n\r\n width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\r\n height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.width = normalizeDecimalNumber(width);\r\n canvas.height = normalizeDecimalNumber(height);\r\n context.fillStyle = options.fillColor || 'transparent';\r\n context.fillRect(0, 0, width, height);\r\n var _options$imageSmoothi = options.imageSmoothingEnabled,\r\n imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\r\n imageSmoothingQuality = options.imageSmoothingQuality;\r\n context.imageSmoothingEnabled = imageSmoothingEnabled;\r\n\r\n if (imageSmoothingQuality) {\r\n context.imageSmoothingQuality = imageSmoothingQuality;\r\n } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\r\n\r\n\r\n var sourceWidth = source.width;\r\n var sourceHeight = source.height; // Source canvas parameters\r\n\r\n var srcX = initialX;\r\n var srcY = initialY;\r\n var srcWidth;\r\n var srcHeight; // Destination canvas parameters\r\n\r\n var dstX;\r\n var dstY;\r\n var dstWidth;\r\n var dstHeight;\r\n\r\n if (srcX <= -initialWidth || srcX > sourceWidth) {\r\n srcX = 0;\r\n srcWidth = 0;\r\n dstX = 0;\r\n dstWidth = 0;\r\n } else if (srcX <= 0) {\r\n dstX = -srcX;\r\n srcX = 0;\r\n srcWidth = Math.min(sourceWidth, initialWidth + srcX);\r\n dstWidth = srcWidth;\r\n } else if (srcX <= sourceWidth) {\r\n dstX = 0;\r\n srcWidth = Math.min(initialWidth, sourceWidth - srcX);\r\n dstWidth = srcWidth;\r\n }\r\n\r\n if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\r\n srcY = 0;\r\n srcHeight = 0;\r\n dstY = 0;\r\n dstHeight = 0;\r\n } else if (srcY <= 0) {\r\n dstY = -srcY;\r\n srcY = 0;\r\n srcHeight = Math.min(sourceHeight, initialHeight + srcY);\r\n dstHeight = srcHeight;\r\n } else if (srcY <= sourceHeight) {\r\n dstY = 0;\r\n srcHeight = Math.min(initialHeight, sourceHeight - srcY);\r\n dstHeight = srcHeight;\r\n }\r\n\r\n var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid \"IndexSizeError\"\r\n\r\n if (dstWidth > 0 && dstHeight > 0) {\r\n var scale = width / initialWidth;\r\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\r\n } // All the numerical parameters should be integer for `drawImage`\r\n // https://github.com/fengyuanchen/cropper/issues/476\r\n\r\n\r\n context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\r\n return Math.floor(normalizeDecimalNumber(param));\r\n }))));\r\n return canvas;\r\n },\r\n\r\n /**\r\n * Change the aspect ratio of the crop box.\r\n * @param {number} aspectRatio - The new aspect ratio.\r\n * @returns {Cropper} this\r\n */\r\n setAspectRatio: function setAspectRatio(aspectRatio) {\r\n var options = this.options;\r\n\r\n if (!this.disabled && !isUndefined$1(aspectRatio)) {\r\n // 0 -> NaN\r\n options.aspectRatio = Math.max(0, aspectRatio) || NaN;\r\n\r\n if (this.ready) {\r\n this.initCropBox();\r\n\r\n if (this.cropped) {\r\n this.renderCropBox();\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Change the drag mode.\r\n * @param {string} mode - The new drag mode.\r\n * @returns {Cropper} this\r\n */\r\n setDragMode: function setDragMode(mode) {\r\n var options = this.options,\r\n dragBox = this.dragBox,\r\n face = this.face;\r\n\r\n if (this.ready && !this.disabled) {\r\n var croppable = mode === DRAG_MODE_CROP;\r\n var movable = options.movable && mode === DRAG_MODE_MOVE;\r\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\r\n options.dragMode = mode;\r\n setData(dragBox, DATA_ACTION, mode);\r\n toggleClass(dragBox, CLASS_CROP, croppable);\r\n toggleClass(dragBox, CLASS_MOVE, movable);\r\n\r\n if (!options.cropBoxMovable) {\r\n // Sync drag mode to crop box when it is not movable\r\n setData(face, DATA_ACTION, mode);\r\n toggleClass(face, CLASS_CROP, croppable);\r\n toggleClass(face, CLASS_MOVE, movable);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n };\r\n\r\n var AnotherCropper = WINDOW.Cropper;\r\n\r\n var Cropper = /*#__PURE__*/function () {\r\n /**\r\n * Create a new Cropper.\r\n * @param {Element} element - The target element for cropping.\r\n * @param {Object} [options={}] - The configuration options.\r\n */\r\n function Cropper(element) {\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n\r\n _classCallCheck(this, Cropper);\r\n\r\n if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\r\n throw new Error('The first argument is required and must be an or element.');\r\n }\r\n\r\n this.element = element;\r\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\r\n this.cropped = false;\r\n this.disabled = false;\r\n this.pointers = {};\r\n this.ready = false;\r\n this.reloading = false;\r\n this.replaced = false;\r\n this.sized = false;\r\n this.sizing = false;\r\n this.init();\r\n }\r\n\r\n _createClass(Cropper, [{\r\n key: \"init\",\r\n value: function init() {\r\n var element = this.element;\r\n var tagName = element.tagName.toLowerCase();\r\n var url;\r\n\r\n if (element[NAMESPACE]) {\r\n return;\r\n }\r\n\r\n element[NAMESPACE] = this;\r\n\r\n if (tagName === 'img') {\r\n this.isImg = true; // e.g.: \"img/picture.jpg\"\r\n\r\n url = element.getAttribute('src') || '';\r\n this.originalUrl = url; // Stop when it's a blank image\r\n\r\n if (!url) {\r\n return;\r\n } // e.g.: \"https://example.com/img/picture.jpg\"\r\n\r\n\r\n url = element.src;\r\n } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\r\n url = element.toDataURL();\r\n }\r\n\r\n this.load(url);\r\n }\r\n }, {\r\n key: \"load\",\r\n value: function load(url) {\r\n var _this = this;\r\n\r\n if (!url) {\r\n return;\r\n }\r\n\r\n this.url = url;\r\n this.imageData = {};\r\n var element = this.element,\r\n options = this.options;\r\n\r\n if (!options.rotatable && !options.scalable) {\r\n options.checkOrientation = false;\r\n } // Only IE10+ supports Typed Arrays\r\n\r\n\r\n if (!options.checkOrientation || !window.ArrayBuffer) {\r\n this.clone();\r\n return;\r\n } // Detect the mime type of the image directly if it is a Data URL\r\n\r\n\r\n if (REGEXP_DATA_URL.test(url)) {\r\n // Read ArrayBuffer from Data URL of JPEG images directly for better performance\r\n if (REGEXP_DATA_URL_JPEG.test(url)) {\r\n this.read(dataURLToArrayBuffer(url));\r\n } else {\r\n // Only a JPEG image may contains Exif Orientation information,\r\n // the rest types of Data URLs are not necessary to check orientation at all.\r\n this.clone();\r\n }\r\n\r\n return;\r\n } // 1. Detect the mime type of the image by a XMLHttpRequest.\r\n // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\r\n\r\n\r\n var xhr = new XMLHttpRequest();\r\n var clone = this.clone.bind(this);\r\n this.reloading = true;\r\n this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes:\r\n // http, https, data, chrome, chrome-extension.\r\n // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\r\n // in some browsers as IE11 and Safari.\r\n\r\n xhr.onabort = clone;\r\n xhr.onerror = clone;\r\n xhr.ontimeout = clone;\r\n\r\n xhr.onprogress = function () {\r\n // Abort the request directly if it not a JPEG image for better performance\r\n if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\r\n xhr.abort();\r\n }\r\n };\r\n\r\n xhr.onload = function () {\r\n _this.read(xhr.response);\r\n };\r\n\r\n xhr.onloadend = function () {\r\n _this.reloading = false;\r\n _this.xhr = null;\r\n }; // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\r\n\r\n\r\n if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\r\n url = addTimestamp(url);\r\n } // The third parameter is required for avoiding side-effect (#682)\r\n\r\n\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.withCredentials = element.crossOrigin === 'use-credentials';\r\n xhr.send();\r\n }\r\n }, {\r\n key: \"read\",\r\n value: function read(arrayBuffer) {\r\n var options = this.options,\r\n imageData = this.imageData; // Reset the orientation value to its default value 1\r\n // as some iOS browsers will render image with its orientation\r\n\r\n var orientation = resetAndGetOrientation(arrayBuffer);\r\n var rotate = 0;\r\n var scaleX = 1;\r\n var scaleY = 1;\r\n\r\n if (orientation > 1) {\r\n // Generate a new URL which has the default orientation value\r\n this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\r\n\r\n var _parseOrientation = parseOrientation(orientation);\r\n\r\n rotate = _parseOrientation.rotate;\r\n scaleX = _parseOrientation.scaleX;\r\n scaleY = _parseOrientation.scaleY;\r\n }\r\n\r\n if (options.rotatable) {\r\n imageData.rotate = rotate;\r\n }\r\n\r\n if (options.scalable) {\r\n imageData.scaleX = scaleX;\r\n imageData.scaleY = scaleY;\r\n }\r\n\r\n this.clone();\r\n }\r\n }, {\r\n key: \"clone\",\r\n value: function clone() {\r\n var element = this.element,\r\n url = this.url;\r\n var crossOrigin = element.crossOrigin;\r\n var crossOriginUrl = url;\r\n\r\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\r\n if (!crossOrigin) {\r\n crossOrigin = 'anonymous';\r\n } // Bust cache when there is not a \"crossOrigin\" property (#519)\r\n\r\n\r\n crossOriginUrl = addTimestamp(url);\r\n }\r\n\r\n this.crossOrigin = crossOrigin;\r\n this.crossOriginUrl = crossOriginUrl;\r\n var image = document.createElement('img');\r\n\r\n if (crossOrigin) {\r\n image.crossOrigin = crossOrigin;\r\n }\r\n\r\n image.src = crossOriginUrl || url;\r\n image.alt = element.alt || 'The image to crop';\r\n this.image = image;\r\n image.onload = this.start.bind(this);\r\n image.onerror = this.stop.bind(this);\r\n addClass$1(image, CLASS_HIDE);\r\n element.parentNode.insertBefore(image, element.nextSibling);\r\n }\r\n }, {\r\n key: \"start\",\r\n value: function start() {\r\n var _this2 = this;\r\n\r\n var image = this.image;\r\n image.onload = null;\r\n image.onerror = null;\r\n this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices,\r\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\r\n\r\n var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\r\n\r\n var done = function done(naturalWidth, naturalHeight) {\r\n assign(_this2.imageData, {\r\n naturalWidth: naturalWidth,\r\n naturalHeight: naturalHeight,\r\n aspectRatio: naturalWidth / naturalHeight\r\n });\r\n _this2.initialImageData = assign({}, _this2.imageData);\r\n _this2.sizing = false;\r\n _this2.sized = true;\r\n\r\n _this2.build();\r\n }; // Most modern browsers (excepts iOS WebKit)\r\n\r\n\r\n if (image.naturalWidth && !isIOSWebKit) {\r\n done(image.naturalWidth, image.naturalHeight);\r\n return;\r\n }\r\n\r\n var sizingImage = document.createElement('img');\r\n var body = document.body || document.documentElement;\r\n this.sizingImage = sizingImage;\r\n\r\n sizingImage.onload = function () {\r\n done(sizingImage.width, sizingImage.height);\r\n\r\n if (!isIOSWebKit) {\r\n body.removeChild(sizingImage);\r\n }\r\n };\r\n\r\n sizingImage.src = image.src; // iOS WebKit will convert the image automatically\r\n // with its orientation once append it into DOM (#279)\r\n\r\n if (!isIOSWebKit) {\r\n sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\r\n body.appendChild(sizingImage);\r\n }\r\n }\r\n }, {\r\n key: \"stop\",\r\n value: function stop() {\r\n var image = this.image;\r\n image.onload = null;\r\n image.onerror = null;\r\n image.parentNode.removeChild(image);\r\n this.image = null;\r\n }\r\n }, {\r\n key: \"build\",\r\n value: function build() {\r\n if (!this.sized || this.ready) {\r\n return;\r\n }\r\n\r\n var element = this.element,\r\n options = this.options,\r\n image = this.image; // Create cropper elements\r\n\r\n var container = element.parentNode;\r\n var template = document.createElement('div');\r\n template.innerHTML = TEMPLATE;\r\n var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\r\n var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\r\n var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\r\n var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\r\n var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\r\n this.container = container;\r\n this.cropper = cropper;\r\n this.canvas = canvas;\r\n this.dragBox = dragBox;\r\n this.cropBox = cropBox;\r\n this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\r\n this.face = face;\r\n canvas.appendChild(image); // Hide the original image\r\n\r\n addClass$1(element, CLASS_HIDDEN); // Inserts the cropper after to the current image\r\n\r\n container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden\r\n\r\n if (!this.isImg) {\r\n removeClass$1(image, CLASS_HIDE);\r\n }\r\n\r\n this.initPreview();\r\n this.bind();\r\n options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\r\n options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\r\n options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\r\n addClass$1(cropBox, CLASS_HIDDEN);\r\n\r\n if (!options.guides) {\r\n addClass$1(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\r\n }\r\n\r\n if (!options.center) {\r\n addClass$1(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\r\n }\r\n\r\n if (options.background) {\r\n addClass$1(cropper, \"\".concat(NAMESPACE, \"-bg\"));\r\n }\r\n\r\n if (!options.highlight) {\r\n addClass$1(face, CLASS_INVISIBLE);\r\n }\r\n\r\n if (options.cropBoxMovable) {\r\n addClass$1(face, CLASS_MOVE);\r\n setData(face, DATA_ACTION, ACTION_ALL);\r\n }\r\n\r\n if (!options.cropBoxResizable) {\r\n addClass$1(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\r\n addClass$1(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\r\n }\r\n\r\n this.render();\r\n this.ready = true;\r\n this.setDragMode(options.dragMode);\r\n\r\n if (options.autoCrop) {\r\n this.crop();\r\n }\r\n\r\n this.setData(options.data);\r\n\r\n if (isFunction$1(options.ready)) {\r\n addListener(element, EVENT_READY, options.ready, {\r\n once: true\r\n });\r\n }\r\n\r\n dispatchEvent(element, EVENT_READY);\r\n }\r\n }, {\r\n key: \"unbuild\",\r\n value: function unbuild() {\r\n if (!this.ready) {\r\n return;\r\n }\r\n\r\n this.ready = false;\r\n this.unbind();\r\n this.resetPreview();\r\n this.cropper.parentNode.removeChild(this.cropper);\r\n removeClass$1(this.element, CLASS_HIDDEN);\r\n }\r\n }, {\r\n key: \"uncreate\",\r\n value: function uncreate() {\r\n if (this.ready) {\r\n this.unbuild();\r\n this.ready = false;\r\n this.cropped = false;\r\n } else if (this.sizing) {\r\n this.sizingImage.onload = null;\r\n this.sizing = false;\r\n this.sized = false;\r\n } else if (this.reloading) {\r\n this.xhr.onabort = null;\r\n this.xhr.abort();\r\n } else if (this.image) {\r\n this.stop();\r\n }\r\n }\r\n /**\r\n * Get the no conflict cropper class.\r\n * @returns {Cropper} The cropper class.\r\n */\r\n\r\n }], [{\r\n key: \"noConflict\",\r\n value: function noConflict() {\r\n window.Cropper = AnotherCropper;\r\n return Cropper;\r\n }\r\n /**\r\n * Change the default options.\r\n * @param {Object} options - The new default options.\r\n */\r\n\r\n }, {\r\n key: \"setDefaults\",\r\n value: function setDefaults(options) {\r\n assign(DEFAULTS, isPlainObject(options) && options);\r\n }\r\n }]);\r\n\r\n return Cropper;\r\n }();\r\n\r\n assign(Cropper.prototype, render$1, preview, events, handlers, change, methods);\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: framework-utils\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/framework-utils.git\r\n version: 0.3.4\r\n */\r\n function prefixNames(prefix) {\r\n var classNames = [];\r\n\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n classNames[_i - 1] = arguments[_i];\r\n }\r\n\r\n return classNames.map(function (className) {\r\n return className.split(\" \").map(function (name) {\r\n return name ? \"\" + prefix + name : \"\";\r\n }).join(\" \");\r\n }).join(\" \");\r\n }\r\n function prefixCSS(prefix, css) {\r\n return css.replace(/([^}{]*){/mg, function (_, selector) {\r\n return selector.replace(/\\.([^{,\\s\\d.]+)/g, \".\" + prefix + \"$1\") + \"{\";\r\n });\r\n }\r\n /* react */\r\n\r\n function ref(target, name) {\r\n return function (e) {\r\n e && (target[name] = e);\r\n };\r\n }\r\n function refs(target, name, i) {\r\n return function (e) {\r\n e && (target[name][i] = e);\r\n };\r\n }\r\n /* Class Decorator */\r\n\r\n function Properties(properties, action) {\r\n return function (component) {\r\n var prototype = component.prototype;\r\n properties.forEach(function (property) {\r\n action(prototype, property);\r\n });\r\n };\r\n }\r\n /* Property Decorator */\r\n\r\n function withMethods(methods, duplicate) {\r\n if (duplicate === void 0) {\r\n duplicate = {};\r\n }\r\n\r\n return function (prototype, propertyName) {\r\n methods.forEach(function (name) {\r\n var methodName = duplicate[name] || name;\r\n\r\n if (prototype[methodName]) {\r\n return;\r\n }\r\n\r\n prototype[methodName] = function () {\r\n var _a;\r\n\r\n var args = [];\r\n\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n\r\n var result = (_a = this[propertyName])[name].apply(_a, args);\r\n\r\n if (result === this[propertyName]) {\r\n return this;\r\n } else {\r\n return result;\r\n }\r\n };\r\n });\r\n };\r\n }\r\n\r\n /*\r\n Copyright (c) 2019-present NAVER Corp.\r\n name: @egjs/list-differ\r\n license: MIT\r\n author: NAVER Corp.\r\n repository: https://github.com/naver/egjs-list-differ\r\n version: 1.0.0\r\n */\r\n /*\r\n egjs-list-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n var PolyMap =\r\n /*#__PURE__*/\r\n function () {\r\n function PolyMap() {\r\n this.keys = [];\r\n this.values = [];\r\n }\r\n\r\n var __proto = PolyMap.prototype;\r\n\r\n __proto.get = function (key) {\r\n return this.values[this.keys.indexOf(key)];\r\n };\r\n\r\n __proto.set = function (key, value) {\r\n var keys = this.keys;\r\n var values = this.values;\r\n var prevIndex = keys.indexOf(key);\r\n var index = prevIndex === -1 ? keys.length : prevIndex;\r\n keys[index] = key;\r\n values[index] = value;\r\n };\r\n\r\n return PolyMap;\r\n }();\r\n\r\n /*\r\n egjs-list-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n var HashMap =\r\n /*#__PURE__*/\r\n function () {\r\n function HashMap() {\r\n this.object = {};\r\n }\r\n\r\n var __proto = HashMap.prototype;\r\n\r\n __proto.get = function (key) {\r\n return this.object[key];\r\n };\r\n\r\n __proto.set = function (key, value) {\r\n this.object[key] = value;\r\n };\r\n\r\n return HashMap;\r\n }();\r\n\r\n /*\r\n egjs-list-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n var SUPPORT_MAP = typeof Map === \"function\";\r\n\r\n /*\r\n egjs-list-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n var Link =\r\n /*#__PURE__*/\r\n function () {\r\n function Link() {}\r\n\r\n var __proto = Link.prototype;\r\n\r\n __proto.connect = function (prevLink, nextLink) {\r\n this.prev = prevLink;\r\n this.next = nextLink;\r\n prevLink && (prevLink.next = this);\r\n nextLink && (nextLink.prev = this);\r\n };\r\n\r\n __proto.disconnect = function () {\r\n // In double linked list, diconnect the interconnected relationship.\r\n var prevLink = this.prev;\r\n var nextLink = this.next;\r\n prevLink && (prevLink.next = nextLink);\r\n nextLink && (nextLink.prev = prevLink);\r\n };\r\n\r\n __proto.getIndex = function () {\r\n var link = this;\r\n var index = -1;\r\n\r\n while (link) {\r\n link = link.prev;\r\n ++index;\r\n }\r\n\r\n return index;\r\n };\r\n\r\n return Link;\r\n }();\r\n\r\n /*\r\n egjs-list-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n\r\n function orderChanged(changed, fixed) {\r\n // It is roughly in the order of these examples.\r\n // 4, 6, 0, 2, 1, 3, 5, 7\r\n var fromLinks = []; // 0, 1, 2, 3, 4, 5, 6, 7\r\n\r\n var toLinks = [];\r\n changed.forEach(function (_a) {\r\n var from = _a[0],\r\n to = _a[1];\r\n var link = new Link();\r\n fromLinks[from] = link;\r\n toLinks[to] = link;\r\n }); // `fromLinks` are connected to each other by double linked list.\r\n\r\n fromLinks.forEach(function (link, i) {\r\n link.connect(fromLinks[i - 1]);\r\n });\r\n return changed.filter(function (_, i) {\r\n return !fixed[i];\r\n }).map(function (_a, i) {\r\n var from = _a[0],\r\n to = _a[1];\r\n\r\n if (from === to) {\r\n return [0, 0];\r\n }\r\n\r\n var fromLink = fromLinks[from];\r\n var toLink = toLinks[to - 1];\r\n var fromIndex = fromLink.getIndex(); // Disconnect the link connected to `fromLink`.\r\n\r\n fromLink.disconnect(); // Connect `fromLink` to the right of `toLink`.\r\n\r\n if (!toLink) {\r\n fromLink.connect(undefined, fromLinks[0]);\r\n } else {\r\n fromLink.connect(toLink, toLink.next);\r\n }\r\n\r\n var toIndex = fromLink.getIndex();\r\n return [fromIndex, toIndex];\r\n });\r\n }\r\n\r\n var Result =\r\n /*#__PURE__*/\r\n function () {\r\n function Result(prevList, list, added, removed, changed, maintained, changedBeforeAdded, fixed) {\r\n this.prevList = prevList;\r\n this.list = list;\r\n this.added = added;\r\n this.removed = removed;\r\n this.changed = changed;\r\n this.maintained = maintained;\r\n this.changedBeforeAdded = changedBeforeAdded;\r\n this.fixed = fixed;\r\n }\r\n\r\n var __proto = Result.prototype;\r\n Object.defineProperty(__proto, \"ordered\", {\r\n get: function () {\r\n if (!this.cacheOrdered) {\r\n this.caculateOrdered();\r\n }\r\n\r\n return this.cacheOrdered;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(__proto, \"pureChanged\", {\r\n get: function () {\r\n if (!this.cachePureChanged) {\r\n this.caculateOrdered();\r\n }\r\n\r\n return this.cachePureChanged;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n __proto.caculateOrdered = function () {\r\n var ordered = orderChanged(this.changedBeforeAdded, this.fixed);\r\n var changed = this.changed;\r\n var pureChanged = [];\r\n this.cacheOrdered = ordered.filter(function (_a, i) {\r\n var from = _a[0],\r\n to = _a[1];\r\n var _b = changed[i],\r\n fromBefore = _b[0],\r\n toBefore = _b[1];\r\n\r\n if (from !== to) {\r\n pureChanged.push([fromBefore, toBefore]);\r\n return true;\r\n }\r\n });\r\n this.cachePureChanged = pureChanged;\r\n };\r\n\r\n return Result;\r\n }();\r\n\r\n /**\r\n *\r\n * @memberof eg.ListDiffer\r\n * @static\r\n * @function\r\n * @param - Previous List 이전 목록 \r\n * @param - List to Update 업데이트 할 목록 \r\n * @param - This callback function returns the key of the item. 아이템의 키를 반환하는 콜백 함수입니다.\r\n * @return - Returns the diff between `prevList` and `list` `prevList`와 `list`의 다른 점을 반환한다.\r\n * @example\r\n * import { diff } from \"@egjs/list-differ\";\r\n * // script => eg.ListDiffer.diff\r\n * const result = diff([0, 1, 2, 3, 4, 5], [7, 8, 0, 4, 3, 6, 2, 1], e => e);\r\n * // List before update\r\n * // [1, 2, 3, 4, 5]\r\n * console.log(result.prevList);\r\n * // Updated list\r\n * // [4, 3, 6, 2, 1]\r\n * console.log(result.list);\r\n * // Index array of values added to `list`\r\n * // [0, 1, 5]\r\n * console.log(result.added);\r\n * // Index array of values removed in `prevList`\r\n * // [5]\r\n * console.log(result.removed);\r\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`\r\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\r\n * console.log(result.changed);\r\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\r\n * // [[4, 3], [3, 4], [2, 6]]\r\n * console.log(result.pureChanged);\r\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\r\n * // [[4, 1], [4, 2], [4, 3]]\r\n * console.log(result.ordered);\r\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved\r\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\r\n * console.log(result.maintained);\r\n */\r\n\r\n function diff$1(prevList, list, findKeyCallback) {\r\n var mapClass = SUPPORT_MAP ? Map : findKeyCallback ? HashMap : PolyMap;\r\n\r\n var callback = findKeyCallback || function (e) {\r\n return e;\r\n };\r\n\r\n var added = [];\r\n var removed = [];\r\n var maintained = [];\r\n var prevKeys = prevList.map(callback);\r\n var keys = list.map(callback);\r\n var prevKeyMap = new mapClass();\r\n var keyMap = new mapClass();\r\n var changedBeforeAdded = [];\r\n var fixed = [];\r\n var removedMap = {};\r\n var changed = [];\r\n var addedCount = 0;\r\n var removedCount = 0; // Add prevKeys and keys to the hashmap.\r\n\r\n prevKeys.forEach(function (key, prevListIndex) {\r\n prevKeyMap.set(key, prevListIndex);\r\n });\r\n keys.forEach(function (key, listIndex) {\r\n keyMap.set(key, listIndex);\r\n }); // Compare `prevKeys` and `keys` and add them to `removed` if they are not in `keys`.\r\n\r\n prevKeys.forEach(function (key, prevListIndex) {\r\n var listIndex = keyMap.get(key); // In prevList, but not in list, it is removed.\r\n\r\n if (typeof listIndex === \"undefined\") {\r\n ++removedCount;\r\n removed.push(prevListIndex);\r\n } else {\r\n removedMap[listIndex] = removedCount;\r\n }\r\n }); // Compare `prevKeys` and `keys` and add them to `added` if they are not in `prevKeys`.\r\n\r\n keys.forEach(function (key, listIndex) {\r\n var prevListIndex = prevKeyMap.get(key); // In list, but not in prevList, it is added.\r\n\r\n if (typeof prevListIndex === \"undefined\") {\r\n added.push(listIndex);\r\n ++addedCount;\r\n } else {\r\n maintained.push([prevListIndex, listIndex]);\r\n removedCount = removedMap[listIndex] || 0;\r\n changedBeforeAdded.push([prevListIndex - removedCount, listIndex - addedCount]);\r\n fixed.push(listIndex === prevListIndex);\r\n\r\n if (prevListIndex !== listIndex) {\r\n changed.push([prevListIndex, listIndex]);\r\n }\r\n }\r\n }); // Sort by ascending order of 'to(list's index).\r\n\r\n removed.reverse();\r\n return new Result(prevList, list, added, removed, changed, maintained, changedBeforeAdded, fixed);\r\n }\r\n\r\n /**\r\n * A module that checks diff when values are added, removed, or changed in an array.\r\n * @ko 배열 또는 오브젝트에서 값이 추가되거나 삭제되거나 순서가 변경사항을 체크하는 모듈입니다.\r\n * @memberof eg\r\n */\r\n\r\n var ListDiffer =\r\n /*#__PURE__*/\r\n function () {\r\n /**\r\n * @param - Initializing Data Array. 초기 설정할 데이터 배열.\r\n * @param - This callback function returns the key of the item. 아이템의 키를 반환하는 콜백 함수입니다.\r\n * @example\r\n * import ListDiffer from \"@egjs/list-differ\";\r\n * // script => eg.ListDiffer\r\n * const differ = new ListDiffer([0, 1, 2, 3, 4, 5], e => e);\r\n * const result = differ.update([7, 8, 0, 4, 3, 6, 2, 1]);\r\n * // List before update\r\n * // [1, 2, 3, 4, 5]\r\n * console.log(result.prevList);\r\n * // Updated list\r\n * // [4, 3, 6, 2, 1]\r\n * console.log(result.list);\r\n * // Index array of values added to `list`.\r\n * // [0, 1, 5]\r\n * console.log(result.added);\r\n * // Index array of values removed in `prevList`.\r\n * // [5]\r\n * console.log(result.removed);\r\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`.\r\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\r\n * console.log(result.changed);\r\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\r\n * // [[4, 3], [3, 4], [2, 6]]\r\n * console.log(result.pureChanged);\r\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\r\n * // [[4, 1], [4, 2], [4, 3]]\r\n * console.log(result.ordered);\r\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved.\r\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\r\n * console.log(result.maintained);\r\n */\r\n function ListDiffer(list, findKeyCallback) {\r\n if (list === void 0) {\r\n list = [];\r\n }\r\n\r\n this.findKeyCallback = findKeyCallback;\r\n this.list = [].slice.call(list);\r\n }\r\n /**\r\n * Update list.\r\n * @ko 리스트를 업데이트를 합니다.\r\n * @param - List to update 업데이트할 리스트 \r\n * @return - Returns the results of an update from `prevList` to `list`. `prevList`에서 `list`로 업데이트한 결과를 반환한다. \r\n */\r\n\r\n\r\n var __proto = ListDiffer.prototype;\r\n\r\n __proto.update = function (list) {\r\n var newData = [].slice.call(list);\r\n var result = diff$1(this.list, newData, this.findKeyCallback);\r\n this.list = newData;\r\n return result;\r\n };\r\n\r\n return ListDiffer;\r\n }();\r\n\r\n /*\r\n Copyright (c) 2018 Daybrush\r\n @name: @daybrush/utils\r\n license: MIT\r\n author: Daybrush\r\n repository: https://github.com/daybrush/utils\r\n @version 1.4.0\r\n */\r\n /**\r\n * get string \"function\"\r\n * @memberof Consts\r\n * @example\r\n import {FUNCTION} from \"@daybrush/utils\";\r\n\r\n console.log(FUNCTION); // \"function\"\r\n */\r\n\r\n var FUNCTION = \"function\";\r\n /**\r\n * get string \"object\"\r\n * @memberof Consts\r\n * @example\r\n import {OBJECT} from \"@daybrush/utils\";\r\n\r\n console.log(OBJECT); // \"object\"\r\n */\r\n\r\n var OBJECT = \"object\";\r\n /**\r\n * get string \"string\"\r\n * @memberof Consts\r\n * @example\r\n import {STRING} from \"@daybrush/utils\";\r\n\r\n console.log(STRING); // \"string\"\r\n */\r\n\r\n var STRING = \"string\";\r\n /**\r\n * get string \"number\"\r\n * @memberof Consts\r\n * @example\r\n import {NUMBER} from \"@daybrush/utils\";\r\n\r\n console.log(NUMBER); // \"number\"\r\n */\r\n\r\n var NUMBER = \"number\";\r\n /**\r\n * get string \"undefined\"\r\n * @memberof Consts\r\n * @example\r\n import {UNDEFINED} from \"@daybrush/utils\";\r\n\r\n console.log(UNDEFINED); // \"undefined\"\r\n */\r\n\r\n var UNDEFINED = \"undefined\";\r\n var OPEN_CLOSED_CHARACTER = [\"\\\"\", \"'\", \"\\\\\\\"\", \"\\\\'\"];\r\n var TINY_NUM$1 = 0.0000001;\r\n var DEFAULT_UNIT_PRESETS = {\r\n \"cm\": function (pos) {\r\n return pos * 96 / 2.54;\r\n },\r\n \"mm\": function (pos) {\r\n return pos * 96 / 254;\r\n },\r\n \"in\": function (pos) {\r\n return pos * 96;\r\n },\r\n \"pt\": function (pos) {\r\n return pos * 96 / 72;\r\n },\r\n \"pc\": function (pos) {\r\n return pos * 96 / 6;\r\n },\r\n \"%\": function (pos, size) {\r\n return pos * size / 100;\r\n },\r\n \"vw\": function (pos, size) {\r\n if (size === void 0) {\r\n size = window.innerWidth;\r\n }\r\n\r\n return pos / 100 * size;\r\n },\r\n \"vh\": function (pos, size) {\r\n if (size === void 0) {\r\n size = window.innerHeight;\r\n }\r\n\r\n return pos / 100 * size;\r\n },\r\n \"vmax\": function (pos, size) {\r\n if (size === void 0) {\r\n size = Math.max(window.innerWidth, window.innerHeight);\r\n }\r\n\r\n return pos / 100 * size;\r\n },\r\n \"vmin\": function (pos, size) {\r\n if (size === void 0) {\r\n size = Math.min(window.innerWidth, window.innerHeight);\r\n }\r\n\r\n return pos / 100 * size;\r\n }\r\n };\r\n\r\n /**\r\n * @namespace\r\n * @name Utils\r\n */\r\n\r\n /**\r\n * Returns the inner product of two numbers(`a1`, `a2`) by two criteria(`b1`, `b2`).\r\n * @memberof Utils\r\n * @param - The first number\r\n * @param - The second number\r\n * @param - The first number to base on the inner product\r\n * @param - The second number to base on the inner product\r\n * @return - Returns the inner product\r\n import { dot } from \"@daybrush/utils\";\r\n\r\n console.log(dot(0, 15, 2, 3)); // 6\r\n console.log(dot(5, 15, 2, 3)); // 9\r\n console.log(dot(5, 15, 1, 1)); // 10\r\n */\r\n\r\n function dot(a1, a2, b1, b2) {\r\n return (a1 * b2 + a2 * b1) / (b1 + b2);\r\n }\r\n /**\r\n * Check the type that the value is undefined.\r\n * @memberof Utils\r\n * @param {string} value - Value to check the type\r\n * @return {boolean} true if the type is correct, false otherwise\r\n * @example\r\n import {isUndefined} from \"@daybrush/utils\";\r\n\r\n console.log(isUndefined(undefined)); // true\r\n console.log(isUndefined(\"\")); // false\r\n console.log(isUndefined(1)); // false\r\n console.log(isUndefined(null)); // false\r\n */\r\n\r\n function isUndefined(value) {\r\n return typeof value === UNDEFINED;\r\n }\r\n /**\r\n * Check the type that the value is object.\r\n * @memberof Utils\r\n * @param {string} value - Value to check the type\r\n * @return {} true if the type is correct, false otherwise\r\n * @example\r\n import {isObject} from \"@daybrush/utils\";\r\n\r\n console.log(isObject({})); // true\r\n console.log(isObject(undefined)); // false\r\n console.log(isObject(\"\")); // false\r\n console.log(isObject(null)); // false\r\n */\r\n\r\n function isObject(value) {\r\n return value && typeof value === OBJECT;\r\n }\r\n /**\r\n * Check the type that the value is isArray.\r\n * @memberof Utils\r\n * @param {string} value - Value to check the type\r\n * @return {} true if the type is correct, false otherwise\r\n * @example\r\n import {isArray} from \"@daybrush/utils\";\r\n\r\n console.log(isArray([])); // true\r\n console.log(isArray({})); // false\r\n console.log(isArray(undefined)); // false\r\n console.log(isArray(null)); // false\r\n */\r\n\r\n function isArray(value) {\r\n return Array.isArray(value);\r\n }\r\n /**\r\n * Check the type that the value is string.\r\n * @memberof Utils\r\n * @param {string} value - Value to check the type\r\n * @return {} true if the type is correct, false otherwise\r\n * @example\r\n import {isString} from \"@daybrush/utils\";\r\n\r\n console.log(isString(\"1234\")); // true\r\n console.log(isString(undefined)); // false\r\n console.log(isString(1)); // false\r\n console.log(isString(null)); // false\r\n */\r\n\r\n function isString(value) {\r\n return typeof value === STRING;\r\n }\r\n function isNumber(value) {\r\n return typeof value === NUMBER;\r\n }\r\n /**\r\n * Check the type that the value is function.\r\n * @memberof Utils\r\n * @param {string} value - Value to check the type\r\n * @return {} true if the type is correct, false otherwise\r\n * @example\r\n import {isFunction} from \"@daybrush/utils\";\r\n\r\n console.log(isFunction(function a() {})); // true\r\n console.log(isFunction(() => {})); // true\r\n console.log(isFunction(\"1234\")); // false\r\n console.log(isFunction(1)); // false\r\n console.log(isFunction(null)); // false\r\n */\r\n\r\n function isFunction(value) {\r\n return typeof value === FUNCTION;\r\n }\r\n\r\n function findClosed(closedCharacter, texts, index, length) {\r\n for (var i = index; i < length; ++i) {\r\n var character = texts[i].trim();\r\n\r\n if (character === closedCharacter) {\r\n return i;\r\n }\r\n\r\n var nextIndex = i;\r\n\r\n if (character === \"(\") {\r\n nextIndex = findClosed(\")\", texts, i + 1, length);\r\n } else if (OPEN_CLOSED_CHARACTER.indexOf(character) > -1) {\r\n nextIndex = findClosed(character, texts, i + 1, length);\r\n }\r\n\r\n if (nextIndex === -1) {\r\n break;\r\n }\r\n\r\n i = nextIndex;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n function splitText(text, separator) {\r\n var regexText = \"(\\\\s*\" + (separator || \",\") + \"\\\\s*|\\\\(|\\\\)|\\\"|'|\\\\\\\\\\\"|\\\\\\\\'|\\\\s+)\";\r\n var regex = new RegExp(regexText, \"g\");\r\n var texts = text.split(regex).filter(Boolean);\r\n var length = texts.length;\r\n var values = [];\r\n var tempValues = [];\r\n\r\n for (var i = 0; i < length; ++i) {\r\n var character = texts[i].trim();\r\n var nextIndex = i;\r\n\r\n if (character === \"(\") {\r\n nextIndex = findClosed(\")\", texts, i + 1, length);\r\n } else if (character === \")\") {\r\n throw new Error(\"invalid format\");\r\n } else if (OPEN_CLOSED_CHARACTER.indexOf(character) > -1) {\r\n nextIndex = findClosed(character, texts, i + 1, length);\r\n } else if (character === separator) {\r\n if (tempValues.length) {\r\n values.push(tempValues.join(\"\"));\r\n tempValues = [];\r\n }\r\n\r\n continue;\r\n }\r\n\r\n if (nextIndex === -1) {\r\n nextIndex = length - 1;\r\n }\r\n\r\n tempValues.push(texts.slice(i, nextIndex + 1).join(\"\"));\r\n i = nextIndex;\r\n }\r\n\r\n if (tempValues.length) {\r\n values.push(tempValues.join(\"\"));\r\n }\r\n\r\n return values;\r\n }\r\n /**\r\n * divide text by space.\r\n * @memberof Utils\r\n * @param {string} text - text to divide\r\n * @return {Array} divided texts\r\n * @example\r\n import {spliceSpace} from \"@daybrush/utils\";\r\n\r\n console.log(splitSpace(\"a b c d e f g\"));\r\n // [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\"]\r\n console.log(splitSpace(\"'a,b' c 'd,e' f g\"));\r\n // [\"'a,b'\", \"c\", \"'d,e'\", \"f\", \"g\"]\r\n */\r\n\r\n function splitSpace(text) {\r\n // divide comma(,)\r\n return splitText(text, \"\");\r\n }\r\n /**\r\n * divide text by comma.\r\n * @memberof Utils\r\n * @param {string} text - text to divide\r\n * @return {Array} divided texts\r\n * @example\r\n import {splitComma} from \"@daybrush/utils\";\r\n\r\n console.log(splitComma(\"a,b,c,d,e,f,g\"));\r\n // [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\"]\r\n console.log(splitComma(\"'a,b',c,'d,e',f,g\"));\r\n // [\"'a,b'\", \"c\", \"'d,e'\", \"f\", \"g\"]\r\n */\r\n\r\n function splitComma(text) {\r\n // divide comma(,)\r\n // \"[^\"]*\"|'[^']*'\r\n return splitText(text, \",\");\r\n }\r\n /**\r\n * divide text by bracket \"(\", \")\".\r\n * @memberof Utils\r\n * @param {string} text - text to divide\r\n * @return {object} divided texts\r\n * @example\r\n import {splitBracket} from \"@daybrush/utils\";\r\n\r\n console.log(splitBracket(\"a(1, 2)\"));\r\n // {prefix: \"a\", value: \"1, 2\", suffix: \"\"}\r\n console.log(splitBracket(\"a(1, 2)b\"));\r\n // {prefix: \"a\", value: \"1, 2\", suffix: \"b\"}\r\n */\r\n\r\n function splitBracket(text) {\r\n var matches = /([^(]*)\\(([\\s\\S]*)\\)([\\s\\S]*)/g.exec(text);\r\n\r\n if (!matches || matches.length < 4) {\r\n return {};\r\n } else {\r\n return {\r\n prefix: matches[1],\r\n value: matches[2],\r\n suffix: matches[3]\r\n };\r\n }\r\n }\r\n /**\r\n * divide text by number and unit.\r\n * @memberof Utils\r\n * @param {string} text - text to divide\r\n * @return {} divided texts\r\n * @example\r\n import {splitUnit} from \"@daybrush/utils\";\r\n\r\n console.log(splitUnit(\"10px\"));\r\n // {prefix: \"\", value: 10, unit: \"px\"}\r\n console.log(splitUnit(\"-10px\"));\r\n // {prefix: \"\", value: -10, unit: \"px\"}\r\n console.log(splitUnit(\"a10%\"));\r\n // {prefix: \"a\", value: 10, unit: \"%\"}\r\n */\r\n\r\n function splitUnit(text) {\r\n var matches = /^([^\\d|e|\\-|\\+]*)((?:\\d|\\.|-|e-|e\\+)+)(\\S*)$/g.exec(text);\r\n\r\n if (!matches) {\r\n return {\r\n prefix: \"\",\r\n unit: \"\",\r\n value: NaN\r\n };\r\n }\r\n\r\n var prefix = matches[1];\r\n var value = matches[2];\r\n var unit = matches[3];\r\n return {\r\n prefix: prefix,\r\n unit: unit,\r\n value: parseFloat(value)\r\n };\r\n }\r\n /**\r\n * transform strings to camel-case\r\n * @memberof Utils\r\n * @param {String} text - string\r\n * @return {String} camel-case string\r\n * @example\r\n import {camelize} from \"@daybrush/utils\";\r\n\r\n console.log(camelize(\"transform-origin\")); // transformOrigin\r\n console.log(camelize(\"abcd_efg\")); // abcdEfg\r\n console.log(camelize(\"abcd efg\")); // abcdEfg\r\n */\r\n\r\n function camelize(str) {\r\n return str.replace(/[\\s-_]([a-z])/g, function (all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n }\r\n /**\r\n * transform a camelized string into a lowercased string.\r\n * @memberof Utils\r\n * @param {string} text - a camel-cased string\r\n * @param {string} [separator=\"-\"] - a separator\r\n * @return {string} a lowercased string\r\n * @example\r\n import {decamelize} from \"@daybrush/utils\";\r\n\r\n console.log(decamelize(\"transformOrigin\")); // transform-origin\r\n console.log(decamelize(\"abcdEfg\", \"_\")); // abcd_efg\r\n */\r\n\r\n function decamelize(str, separator) {\r\n if (separator === void 0) {\r\n separator = \"-\";\r\n }\r\n\r\n return str.replace(/([a-z])([A-Z])/g, function (all, letter, letter2) {\r\n return \"\" + letter + separator + letter2.toLowerCase();\r\n });\r\n }\r\n /**\r\n * Date.now() method\r\n * @memberof CrossBrowser\r\n * @return {number} milliseconds\r\n * @example\r\n import {now} from \"@daybrush/utils\";\r\n\r\n console.log(now()); // 12121324241(milliseconds)\r\n */\r\n\r\n function now() {\r\n return Date.now ? Date.now() : new Date().getTime();\r\n }\r\n /**\r\n * Returns the index of the first element in the array that satisfies the provided testing function.\r\n * @function\r\n * @memberof CrossBrowser\r\n * @param - The array `findIndex` was called upon.\r\n * @param - A function to execute on each value in the array until the function returns true, indicating that the satisfying element was found.\r\n * @param - Returns defaultIndex if not found by the function.\r\n * @example\r\n import { findIndex } from \"@daybrush/utils\";\r\n\r\n findIndex([{a: 1}, {a: 2}, {a: 3}, {a: 4}], ({ a }) => a === 2); // 1\r\n */\r\n\r\n function findIndex(arr, callback, defaultIndex) {\r\n if (defaultIndex === void 0) {\r\n defaultIndex = -1;\r\n }\r\n\r\n var length = arr.length;\r\n\r\n for (var i = 0; i < length; ++i) {\r\n if (callback(arr[i], i, arr)) {\r\n return i;\r\n }\r\n }\r\n\r\n return defaultIndex;\r\n }\r\n /**\r\n * Returns the value of the first element in the array that satisfies the provided testing function.\r\n * @function\r\n * @memberof CrossBrowser\r\n * @param - The array `find` was called upon.\r\n * @param - A function to execute on each value in the array,\r\n * @param - Returns defalutValue if not found by the function.\r\n * @example\r\n import { find } from \"@daybrush/utils\";\r\n\r\n find([{a: 1}, {a: 2}, {a: 3}, {a: 4}], ({ a }) => a === 2); // {a: 2}\r\n */\r\n\r\n function find$1(arr, callback, defalutValue) {\r\n var index = findIndex(arr, callback);\r\n return index > -1 ? arr[index] : defalutValue;\r\n }\r\n /**\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function getKeys(obj) {\r\n if (Object.keys) {\r\n return Object.keys(obj);\r\n }\r\n\r\n var keys = [];\r\n\r\n for (var name in keys) {\r\n keys.push(name);\r\n }\r\n\r\n return keys;\r\n }\r\n /**\r\n * convert unit size to px size\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function convertUnitSize(pos, size) {\r\n var _a = splitUnit(pos),\r\n value = _a.value,\r\n unit = _a.unit;\r\n\r\n if (isObject(size)) {\r\n var sizeFunction = size[unit];\r\n\r\n if (sizeFunction) {\r\n if (isFunction(sizeFunction)) {\r\n return sizeFunction(value);\r\n } else if (DEFAULT_UNIT_PRESETS[unit]) {\r\n return DEFAULT_UNIT_PRESETS[unit](value, sizeFunction);\r\n }\r\n }\r\n } else if (unit === \"%\") {\r\n return value * size / 100;\r\n }\r\n\r\n if (DEFAULT_UNIT_PRESETS[unit]) {\r\n return DEFAULT_UNIT_PRESETS[unit](value);\r\n }\r\n\r\n return value;\r\n }\r\n /**\r\n * calculate between min, max\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function between(value, min, max) {\r\n return Math.max(min, Math.min(value, max));\r\n }\r\n /**\r\n * throttle number\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function throttle$1(num, unit) {\r\n if (!unit) {\r\n return num;\r\n }\r\n\r\n return Math.round(num / unit) * unit;\r\n }\r\n function checkBoundSize(targetSize, compareSize, isMax) {\r\n return [[throttle$1(compareSize[0], TINY_NUM$1), throttle$1(compareSize[0] * targetSize[1] / targetSize[0], TINY_NUM$1)], [throttle$1(compareSize[1] * targetSize[0] / targetSize[1], TINY_NUM$1), throttle$1(compareSize[1], TINY_NUM$1)]].filter(function (size) {\r\n return size.every(function (value, i) {\r\n return isMax ? value <= compareSize[i] : value >= compareSize[i];\r\n });\r\n })[0] || targetSize;\r\n }\r\n /**\r\n * calculate bound size\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function calculateBoundSize(size, minSize, maxSize, keepRatio) {\r\n if (!keepRatio) {\r\n return size.map(function (value, i) {\r\n return between(value, minSize[i], maxSize[i]);\r\n });\r\n }\r\n\r\n var width = size[0],\r\n height = size[1]; // width : height = minWidth : minHeight;\r\n\r\n var _a = checkBoundSize(size, minSize, false),\r\n minWidth = _a[0],\r\n minHeight = _a[1];\r\n\r\n var _b = checkBoundSize(size, maxSize, true),\r\n maxWidth = _b[0],\r\n maxHeight = _b[1];\r\n\r\n if (width < minWidth || height < minHeight) {\r\n width = minWidth;\r\n height = minHeight;\r\n } else if (width > maxWidth || height > maxHeight) {\r\n width = maxWidth;\r\n height = maxHeight;\r\n }\r\n\r\n return [width, height];\r\n }\r\n /**\r\n * Add all the numbers.\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function sum(nums) {\r\n var length = nums.length;\r\n var total = 0;\r\n\r\n for (var i = length - 1; i >= 0; --i) {\r\n total += nums[i];\r\n }\r\n\r\n return total;\r\n }\r\n /**\r\n * Average all numbers.\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function average(nums) {\r\n var length = nums.length;\r\n var total = 0;\r\n\r\n for (var i = length - 1; i >= 0; --i) {\r\n total += nums[i];\r\n }\r\n\r\n return length ? total / length : 0;\r\n }\r\n /**\r\n * Get the angle of two points. (0 <= rad < 359)\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function getRad$1(pos1, pos2) {\r\n var distX = pos2[0] - pos1[0];\r\n var distY = pos2[1] - pos1[1];\r\n var rad = Math.atan2(distY, distX);\r\n return rad >= 0 ? rad : rad + Math.PI * 2;\r\n }\r\n /**\r\n * Get the average point of all points.\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function getCenterPoint(points) {\r\n return [0, 1].map(function (i) {\r\n return average(points.map(function (pos) {\r\n return pos[i];\r\n }));\r\n });\r\n }\r\n /**\r\n * Gets the direction of the shape.\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function getShapeDirection(points) {\r\n var center = getCenterPoint(points);\r\n var pos1Rad = getRad$1(center, points[0]);\r\n var pos2Rad = getRad$1(center, points[1]);\r\n return pos1Rad < pos2Rad && pos2Rad - pos1Rad < Math.PI || pos1Rad > pos2Rad && pos2Rad - pos1Rad < -Math.PI ? 1 : -1;\r\n }\r\n /**\r\n * Get the distance between two points.\r\n * @function\r\n * @memberof Utils\r\n */\r\n\r\n function getDist$2(a, b) {\r\n return Math.sqrt(Math.pow((b ? b[0] : 0) - a[0], 2) + Math.pow((b ? b[1] : 0) - a[1], 2));\r\n }\r\n /**\r\n * Checks if the specified class value exists in the element's class attribute.\r\n * @memberof DOM\r\n * @param element - target\r\n * @param className - the class name to search\r\n * @return {boolean} return false if the class is not found.\r\n * @example\r\n import {hasClass} from \"@daybrush/utils\";\r\n\r\n console.log(hasClass(element, \"start\")); // true or false\r\n */\r\n\r\n function hasClass(element, className) {\r\n if (element.classList) {\r\n return element.classList.contains(className);\r\n }\r\n\r\n return !!element.className.match(new RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\r\n }\r\n /**\r\n * Add the specified class value. If these classe already exist in the element's class attribute they are ignored.\r\n * @memberof DOM\r\n * @param element - target\r\n * @param className - the class name to add\r\n * @example\r\n import {addClass} from \"@daybrush/utils\";\r\n\r\n addClass(element, \"start\");\r\n */\r\n\r\n function addClass(element, className) {\r\n if (element.classList) {\r\n element.classList.add(className);\r\n } else {\r\n element.className += \" \" + className;\r\n }\r\n }\r\n /**\r\n * Removes the specified class value.\r\n * @memberof DOM\r\n * @param element - target\r\n * @param className - the class name to remove\r\n * @example\r\n import {removeClass} from \"@daybrush/utils\";\r\n\r\n removeClass(element, \"start\");\r\n */\r\n\r\n function removeClass(element, className) {\r\n if (element.classList) {\r\n element.classList.remove(className);\r\n } else {\r\n var reg = new RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\");\r\n element.className = element.className.replace(reg, \" \");\r\n }\r\n }\r\n /**\r\n * Sets up a function that will be called whenever the specified event is delivered to the target\r\n * @memberof DOM\r\n * @param - event target\r\n * @param - A case-sensitive string representing the event type to listen for.\r\n * @param - The object which receives a notification (an object that implements the Event interface) when an event of the specified type occurs\r\n * @param - An options object that specifies characteristics about the event listener. The available options are:\r\n * @example\r\n import {addEvent} from \"@daybrush/utils\";\r\n\r\n addEvent(el, \"click\", e => {\r\n console.log(e);\r\n });\r\n */\r\n\r\n function addEvent(el, type, listener, options) {\r\n el.addEventListener(type, listener, options);\r\n }\r\n /**\r\n * removes from the EventTarget an event listener previously registered with EventTarget.addEventListener()\r\n * @memberof DOM\r\n * @param - event target\r\n * @param - A case-sensitive string representing the event type to listen for.\r\n * @param - The EventListener function of the event handler to remove from the event target.\r\n * @example\r\n import {addEvent, removeEvent} from \"@daybrush/utils\";\r\n const listener = e => {\r\n console.log(e);\r\n };\r\n addEvent(el, \"click\", listener);\r\n removeEvent(el, \"click\", listener);\r\n */\r\n\r\n function removeEvent(el, type, listener) {\r\n el.removeEventListener(type, listener);\r\n }\r\n\r\n /*\r\n Copyright (c) Daybrush\r\n name: react-simple-compat\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/react-simple-compat.git\r\n version: 1.1.0\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n /* global Reflect, Promise */\r\n var extendStatics$6 = function (d, b) {\r\n extendStatics$6 = Object.setPrototypeOf || {\r\n __proto__: []\r\n } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n } || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n };\r\n\r\n return extendStatics$6(d, b);\r\n };\r\n\r\n function __extends$6(d, b) {\r\n extendStatics$6(d, b);\r\n\r\n function __() {\r\n this.constructor = d;\r\n }\r\n\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n var __assign$6 = function () {\r\n __assign$6 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n\r\n return t;\r\n };\r\n\r\n return __assign$6.apply(this, arguments);\r\n };\r\n function __rest$2(s, e) {\r\n var t = {};\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\r\n\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n }\r\n function __spreadArrays$4() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\r\n\r\n return r;\r\n }\r\n\r\n function isDiff(a, b) {\r\n if (a === b) {\r\n return false;\r\n }\r\n\r\n for (var i in a) {\r\n if (!(i in b)) {\r\n return true;\r\n }\r\n }\r\n\r\n for (var i in b) {\r\n if (a[i] !== b[i]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function diffObject(a, b) {\r\n var keys1 = Object.keys(a);\r\n var keys2 = Object.keys(b);\r\n var result = diff$1(keys1, keys2, function (key) {\r\n return key;\r\n });\r\n var added = {};\r\n var removed = {};\r\n var changed = {};\r\n result.added.forEach(function (index) {\r\n var name = keys2[index];\r\n added[name] = b[name];\r\n });\r\n result.removed.forEach(function (index) {\r\n var name = keys1[index];\r\n removed[name] = a[name];\r\n });\r\n result.maintained.forEach(function (_a) {\r\n var index = _a[0];\r\n var name = keys1[index];\r\n var values = [a[name], b[name]];\r\n\r\n if (a[name] !== b[name]) {\r\n changed[name] = values;\r\n }\r\n });\r\n return {\r\n added: added,\r\n removed: removed,\r\n changed: changed\r\n };\r\n }\r\n\r\n function executeHooks(hooks) {\r\n hooks.forEach(function (hook) {\r\n hook();\r\n });\r\n }\r\n\r\n function fillKeys(keys) {\r\n var index = 0;\r\n return keys.map(function (key) {\r\n return key == null ? \"$compat\" + ++index : \"\" + key;\r\n });\r\n }\r\n\r\n function createProvider(el, key, index, container) {\r\n if (isString(el) || isNumber(el)) {\r\n return new TextProvider(\"text_\" + el, key, index, container, null, {});\r\n }\r\n\r\n var providerClass = typeof el.type === \"string\" ? ElementProvider : el.type.prototype.render ? ComponentProvider : FunctionProvider;\r\n return new providerClass(el.type, key, index, container, el.ref, el.props);\r\n }\r\n\r\n function flat$1(arr) {\r\n var arr2 = [];\r\n arr.forEach(function (el) {\r\n arr2 = arr2.concat(isArray(el) ? flat$1(el) : el);\r\n });\r\n return arr2;\r\n }\r\n\r\n function getAttributes(props) {\r\n var className = props.className,\r\n otherProps = __rest$2(props, [\"className\"]);\r\n\r\n if (className != null) {\r\n otherProps.class = className;\r\n }\r\n\r\n delete otherProps.style;\r\n delete otherProps.children;\r\n return otherProps;\r\n }\r\n\r\n function fillProps(props, defaultProps) {\r\n if (!defaultProps) {\r\n return props;\r\n }\r\n\r\n for (var name in defaultProps) {\r\n if (isUndefined(props[name])) {\r\n props[name] = defaultProps[name];\r\n }\r\n }\r\n\r\n return props;\r\n }\r\n\r\n function createElement(type, props) {\r\n var children = [];\r\n\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n children[_i - 2] = arguments[_i];\r\n }\r\n\r\n var _a = props || {},\r\n key = _a.key,\r\n ref = _a.ref,\r\n otherProps = __rest$2(_a, [\"key\", \"ref\"]);\r\n\r\n return {\r\n type: type,\r\n key: key,\r\n ref: ref,\r\n props: __assign$6(__assign$6({}, otherProps), {\r\n children: flat$1(children).filter(function (child) {\r\n return child != null && child !== false;\r\n })\r\n })\r\n };\r\n }\r\n\r\n var Provider =\r\n /*#__PURE__*/\r\n function () {\r\n function Provider(type, key, index, container, ref, props) {\r\n if (props === void 0) {\r\n props = {};\r\n }\r\n\r\n this.type = type;\r\n this.key = key;\r\n this.index = index;\r\n this.container = container;\r\n this.ref = ref;\r\n this.props = props;\r\n this._providers = [];\r\n }\r\n\r\n var __proto = Provider.prototype;\r\n\r\n __proto._should = function (nextProps, nextState) {\r\n return true;\r\n };\r\n\r\n __proto._update = function (hooks, nextElement, nextState, isForceUpdate) {\r\n if (this.base && !isString(nextElement) && !isForceUpdate && !this._should(nextElement.props, nextState)) {\r\n return false;\r\n }\r\n\r\n this.original = nextElement;\r\n\r\n this._setState(nextState); // render\r\n\r\n\r\n var prevProps = this.props;\r\n\r\n if (!isString(nextElement)) {\r\n this.props = nextElement.props;\r\n this.ref = nextElement.ref;\r\n }\r\n\r\n this._render(hooks, this.base ? prevProps : {}, nextState);\r\n\r\n return true;\r\n };\r\n\r\n __proto._mounted = function () {\r\n var ref = this.ref;\r\n ref && ref(this.base);\r\n };\r\n\r\n __proto._setState = function (nextstate) {\r\n return;\r\n };\r\n\r\n __proto._updated = function () {\r\n var ref = this.ref;\r\n ref && ref(this.base);\r\n };\r\n\r\n __proto._destroy = function () {\r\n var ref = this.ref;\r\n ref && ref(null);\r\n };\r\n\r\n return Provider;\r\n }();\r\n\r\n function diffAttributes(attrs1, attrs2, el) {\r\n var _a = diffObject(attrs1, attrs2),\r\n added = _a.added,\r\n removed = _a.removed,\r\n changed = _a.changed;\r\n\r\n for (var name in added) {\r\n el.setAttribute(name, added[name]);\r\n }\r\n\r\n for (var name in changed) {\r\n el.setAttribute(name, changed[name][1]);\r\n }\r\n\r\n for (var name in removed) {\r\n el.removeAttribute(name);\r\n }\r\n }\r\n\r\n function diffEvents(events1, events2, provier) {\r\n var _a = diffObject(events1, events2),\r\n added = _a.added,\r\n removed = _a.removed,\r\n changed = _a.changed;\r\n\r\n for (var name in removed) {\r\n provier.removeEventListener(name);\r\n }\r\n\r\n for (var name in added) {\r\n provier.addEventListener(name, added[name]);\r\n }\r\n\r\n for (var name in changed) {\r\n provier.removeEventListener(name);\r\n provier.addEventListener(name, changed[name][1]);\r\n }\r\n\r\n for (var name in removed) {\r\n provier.removeEventListener(name);\r\n }\r\n }\r\n\r\n function diffStyle(style1, style2, el) {\r\n var style = el.style;\r\n\r\n var _a = diffObject(style1, style2),\r\n added = _a.added,\r\n removed = _a.removed,\r\n changed = _a.changed;\r\n\r\n for (var beforeName in added) {\r\n var name = decamelize(beforeName, \"-\");\r\n\r\n if (style.setProperty) {\r\n style.setProperty(name, added[beforeName]);\r\n } else {\r\n style[name] = added[beforeName];\r\n }\r\n }\r\n\r\n for (var beforeName in changed) {\r\n var name = decamelize(beforeName, \"-\");\r\n\r\n if (style.setProperty) {\r\n style.setProperty(name, changed[beforeName][1]);\r\n } else {\r\n style[name] = changed[beforeName][1];\r\n }\r\n }\r\n\r\n for (var beforeName in removed) {\r\n var name = decamelize(beforeName, \"-\");\r\n\r\n if (style.removeProperty) {\r\n style.removeProperty(name);\r\n } else {\r\n style[name] = \"\";\r\n }\r\n }\r\n }\r\n\r\n function splitProps(props) {\r\n var attributes = {};\r\n var events = {};\r\n\r\n for (var name in props) {\r\n if (name.indexOf(\"on\") === 0) {\r\n events[name.replace(\"on\", \"\").toLowerCase()] = props[name];\r\n } else {\r\n attributes[name] = props[name];\r\n }\r\n }\r\n\r\n return {\r\n attributes: attributes,\r\n events: events\r\n };\r\n }\r\n\r\n var TextProvider =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(TextProvider, _super);\r\n\r\n function TextProvider() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n\r\n var __proto = TextProvider.prototype;\r\n\r\n __proto._render = function (hooks) {\r\n var _this = this;\r\n\r\n var isMount = !this.base;\r\n\r\n if (isMount) {\r\n this.base = document.createTextNode(this.type.replace(\"text_\", \"\"));\r\n }\r\n\r\n hooks.push(function () {\r\n if (isMount) {\r\n _this._mounted();\r\n } else {\r\n _this._updated();\r\n }\r\n });\r\n return true;\r\n };\r\n\r\n __proto._unmount = function () {\r\n this.base.parentNode.removeChild(this.base);\r\n };\r\n\r\n return TextProvider;\r\n }(Provider);\r\n\r\n var ElementProvider =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(ElementProvider, _super);\r\n\r\n function ElementProvider() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.events = {};\r\n return _this;\r\n }\r\n\r\n var __proto = ElementProvider.prototype;\r\n\r\n __proto.addEventListener = function (name, callback) {\r\n var events = this.events;\r\n\r\n events[name] = function (e) {\r\n e.nativeEvent = e;\r\n callback(e);\r\n };\r\n\r\n this.base.addEventListener(name, events[name]);\r\n };\r\n\r\n __proto.removeEventListener = function (name) {\r\n var events = this.events;\r\n this.base.removeEventListener(name, events[name]);\r\n delete events[name];\r\n };\r\n\r\n __proto._should = function (nextProps) {\r\n return isDiff(this.props, nextProps);\r\n };\r\n\r\n __proto._render = function (hooks, prevProps) {\r\n var _this = this;\r\n\r\n var isMount = !this.base;\r\n\r\n if (isMount) {\r\n this.base = this.props.portalContainer || document.createElement(this.type);\r\n }\r\n\r\n renderProviders(this, this._providers, this.props.children, hooks, null);\r\n var base = this.base;\r\n\r\n var _a = splitProps(prevProps),\r\n prevAttributes = _a.attributes,\r\n prevEvents = _a.events;\r\n\r\n var _b = splitProps(this.props),\r\n nextAttributes = _b.attributes,\r\n nextEvents = _b.events;\r\n\r\n diffAttributes(getAttributes(prevAttributes), getAttributes(nextAttributes), base);\r\n diffEvents(prevEvents, nextEvents, this);\r\n diffStyle(prevProps.style || {}, this.props.style || {}, base);\r\n hooks.push(function () {\r\n if (isMount) {\r\n _this._mounted();\r\n } else {\r\n _this._updated();\r\n }\r\n });\r\n return true;\r\n };\r\n\r\n __proto._unmount = function () {\r\n var events = this.events;\r\n var base = this.base;\r\n\r\n for (var name in events) {\r\n base.removeEventListener(name, events[name]);\r\n }\r\n\r\n this._providers.forEach(function (provider) {\r\n provider._unmount();\r\n });\r\n\r\n this.events = {};\r\n\r\n if (!this.props.portalContainer) {\r\n base.parentNode.removeChild(base);\r\n }\r\n };\r\n\r\n return ElementProvider;\r\n }(Provider);\r\n\r\n function findContainerNode(provider) {\r\n if (!provider) {\r\n return null;\r\n }\r\n\r\n var base = provider.base;\r\n\r\n if (base instanceof Node) {\r\n return base;\r\n }\r\n\r\n return findContainerNode(provider.container);\r\n }\r\n\r\n function findDOMNode(comp) {\r\n if (!comp) {\r\n return null;\r\n }\r\n\r\n if (comp instanceof Node) {\r\n return comp;\r\n }\r\n\r\n var providers = comp._provider._providers;\r\n\r\n if (!providers.length) {\r\n return null;\r\n }\r\n\r\n return findDOMNode(providers[0].base);\r\n }\r\n\r\n var FunctionProvider =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(FunctionProvider, _super);\r\n\r\n function FunctionProvider() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n\r\n var __proto = FunctionProvider.prototype;\r\n\r\n __proto._render = function (hooks) {\r\n var template = this.type(this.props);\r\n renderProviders(this, this._providers, template ? [template] : [], hooks);\r\n return true;\r\n };\r\n\r\n __proto._unmount = function () {\r\n this._providers.forEach(function (provider) {\r\n provider._unmount();\r\n });\r\n };\r\n\r\n return FunctionProvider;\r\n }(Provider);\r\n\r\n var ContainerProvider =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(ContainerProvider, _super);\r\n\r\n function ContainerProvider(base) {\r\n var _this = _super.call(this, \"container\", \"container\", 0, null) || this;\r\n\r\n _this.base = base;\r\n return _this;\r\n }\r\n\r\n var __proto = ContainerProvider.prototype;\r\n\r\n __proto._render = function () {\r\n return true;\r\n };\r\n\r\n __proto._unmount = function () {\r\n return;\r\n };\r\n\r\n return ContainerProvider;\r\n }(Provider);\r\n\r\n var ComponentProvider =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(ComponentProvider, _super);\r\n\r\n function ComponentProvider(type, key, index, container, ref, props) {\r\n if (props === void 0) {\r\n props = {};\r\n }\r\n\r\n return _super.call(this, type, key, index, container, ref, fillProps(props, type.defaultProps)) || this;\r\n }\r\n\r\n var __proto = ComponentProvider.prototype;\r\n\r\n __proto._should = function (nextProps, nextState) {\r\n return this.base.shouldComponentUpdate(fillProps(nextProps, this.type.defaultProps), nextState || this.base.state);\r\n };\r\n\r\n __proto._render = function (hooks, prevProps, nextState) {\r\n var _this = this;\r\n\r\n this.props = fillProps(this.props, this.type.defaultProps);\r\n var isMount = !this.base;\r\n\r\n if (isMount) {\r\n this.base = new this.type(this.props);\r\n this.base._provider = this;\r\n } else {\r\n this.base.props = this.props;\r\n }\r\n\r\n var base = this.base;\r\n var prevState = base.state;\r\n var template = base.render();\r\n\r\n if (template && template.props && !template.props.children.length) {\r\n template.props.children = this.props.children;\r\n }\r\n\r\n renderProviders(this, this._providers, template ? [template] : [], hooks, nextState, null);\r\n hooks.push(function () {\r\n if (isMount) {\r\n _this._mounted();\r\n\r\n base.componentDidMount();\r\n } else {\r\n _this._updated();\r\n\r\n base.componentDidUpdate(prevProps, prevState);\r\n }\r\n });\r\n };\r\n\r\n __proto._setState = function (nextState) {\r\n if (!nextState) {\r\n return;\r\n }\r\n\r\n var base = this.base;\r\n base.state = nextState;\r\n };\r\n\r\n __proto._unmount = function () {\r\n this._providers.forEach(function (provider) {\r\n provider._unmount();\r\n });\r\n\r\n this.base.componentWillUnmount();\r\n };\r\n\r\n return ComponentProvider;\r\n }(Provider);\r\n\r\n var Component =\r\n /*#__PURE__*/\r\n function () {\r\n function Component(props) {\r\n if (props === void 0) {\r\n props = {};\r\n }\r\n\r\n this.props = props;\r\n this.state = {};\r\n }\r\n\r\n var __proto = Component.prototype;\r\n\r\n __proto.shouldComponentUpdate = function (props, state) {\r\n return true;\r\n };\r\n\r\n __proto.render = function () {\r\n return null;\r\n };\r\n\r\n __proto.setState = function (state, callback, isForceUpdate) {\r\n var hooks = [];\r\n var provider = this._provider;\r\n var isUpdate = renderProviders(provider.container, [provider], [provider.original], hooks, __assign$6(__assign$6({}, this.state), state), isForceUpdate);\r\n\r\n if (isUpdate) {\r\n if (callback) {\r\n hooks.push(callback);\r\n }\r\n\r\n executeHooks(hooks);\r\n }\r\n };\r\n\r\n __proto.forceUpdate = function (callback) {\r\n this.setState(this.state, callback, true);\r\n };\r\n\r\n __proto.componentDidMount = function () {};\r\n\r\n __proto.componentDidUpdate = function (prevProps, prevState) {};\r\n\r\n __proto.componentWillUnmount = function () {};\r\n\r\n return Component;\r\n }();\r\n\r\n var PureComponent =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(PureComponent, _super);\r\n\r\n function PureComponent() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n\r\n var __proto = PureComponent.prototype;\r\n\r\n __proto.shouldComponentUpdate = function (props, state) {\r\n return isDiff(this.props, props) || isDiff(this.state, state);\r\n };\r\n\r\n return PureComponent;\r\n }(Component);\r\n\r\n var _Portal =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$6(_Portal, _super);\r\n\r\n function _Portal() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n\r\n var __proto = _Portal.prototype;\r\n\r\n __proto.componentDidMount = function () {\r\n var _a = this.props,\r\n element = _a.element,\r\n container = _a.container;\r\n this._portalProvider = new ContainerProvider(container);\r\n renderProvider(element, container, this._portalProvider);\r\n };\r\n\r\n __proto.componentDidUpdate = function () {\r\n var _a = this.props,\r\n element = _a.element,\r\n container = _a.container;\r\n renderProvider(element, container, this._portalProvider);\r\n };\r\n\r\n __proto.componentWillUnmount = function () {\r\n var container = this.props.container;\r\n renderProvider(null, container, this._portalProvider);\r\n this._portalProvider = null;\r\n };\r\n\r\n return _Portal;\r\n }(PureComponent);\r\n\r\n function updateProvider(provider, children, nextState) {\r\n var hooks = [];\r\n renderProviders(provider, provider._providers, children, hooks, nextState);\r\n executeHooks(hooks);\r\n }\r\n\r\n function getNextSibiling(provider, childProvider) {\r\n var childProviders = provider._providers;\r\n var length = childProviders.length;\r\n\r\n for (var i = childProvider.index + 1; i < length; ++i) {\r\n var el = findDOMNode(childProviders[i].base);\r\n\r\n if (el) {\r\n return el;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function diffProviders(containerProvider, providers, children) {\r\n var childrenKeys = children.map(function (p) {\r\n return isString(p) ? null : p.key;\r\n });\r\n var keys1 = fillKeys(providers.map(function (p) {\r\n return p.key;\r\n }));\r\n var keys2 = fillKeys(childrenKeys);\r\n var result = diff$1(keys1, keys2, function (key) {\r\n return key;\r\n });\r\n result.removed.forEach(function (index) {\r\n providers.splice(index, 1)[0]._unmount();\r\n });\r\n result.ordered.forEach(function (_a) {\r\n var from = _a[0],\r\n to = _a[1];\r\n var childrenProvider = providers.splice(from, 1)[0];\r\n providers.splice(to, 0, childrenProvider);\r\n var el = findDOMNode(childrenProvider.base);\r\n var next = findDOMNode(providers[to + 1] && providers[to + 1].base);\r\n\r\n if (el) {\r\n el.parentNode.insertBefore(el, next);\r\n }\r\n });\r\n result.added.forEach(function (index) {\r\n providers.splice(index, 0, createProvider(children[index], childrenKeys[index], index, containerProvider));\r\n });\r\n var changed = result.maintained.filter(function (_a) {\r\n _a[0];\r\n var to = _a[1];\r\n var el = children[to];\r\n var childProvider = providers[to];\r\n var type = isString(el) ? \"text_\" + el : el.type;\r\n\r\n if (type !== childProvider.type) {\r\n childProvider._unmount();\r\n\r\n providers.splice(to, 1, createProvider(el, childrenKeys[to], to, containerProvider));\r\n return true;\r\n }\r\n\r\n childProvider.index = to;\r\n return false;\r\n });\r\n return __spreadArrays$4(result.added, changed.map(function (_a) {\r\n _a[0];\r\n var to = _a[1];\r\n return to;\r\n }));\r\n }\r\n\r\n function renderProviders(containerProvider, providers, children, updatedHooks, nextState, isForceUpdate) {\r\n var result = diffProviders(containerProvider, providers, children);\r\n var updated = providers.filter(function (childProvider, i) {\r\n return childProvider._update(updatedHooks, children[i], nextState, isForceUpdate);\r\n });\r\n var containerNode = findContainerNode(containerProvider);\r\n\r\n if (containerNode) {\r\n result.reverse().forEach(function (index) {\r\n var childProvider = providers[index];\r\n var el = findDOMNode(childProvider.base);\r\n\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (containerNode !== el && !el.parentNode) {\r\n var nextElement = getNextSibiling(containerProvider, childProvider);\r\n containerNode.insertBefore(el, nextElement);\r\n }\r\n });\r\n }\r\n\r\n return updated.length > 0;\r\n }\r\n\r\n function renderProvider(element, container, provider) {\r\n if (provider === void 0) {\r\n provider = container.__REACT_COMPAT__;\r\n }\r\n\r\n var isProvider = !!provider;\r\n\r\n if (!provider) {\r\n provider = new ContainerProvider(container);\r\n }\r\n\r\n updateProvider(provider, element ? [element] : []);\r\n\r\n if (!isProvider) {\r\n container.__REACT_COMPAT__ = provider;\r\n }\r\n\r\n return provider;\r\n }\r\n\r\n function render(element, container, callback) {\r\n var provider = container.__REACT_COMPAT__;\r\n\r\n if (element && !provider) {\r\n container.innerHTML = \"\";\r\n }\r\n\r\n renderProvider(element, container, provider);\r\n callback && callback();\r\n }\r\n function createPortal(el, container) {\r\n return createElement(_Portal, {\r\n element: el,\r\n container: container\r\n });\r\n }\r\n var version = \"simple-1.1.0\";\r\n\r\n /*\r\n Copyright (c) 2015 NAVER Corp.\r\n name: @egjs/agent\r\n license: MIT\r\n author: NAVER Corp.\r\n repository: git+https://github.com/naver/agent.git\r\n version: 2.3.0\r\n */\r\n function some(arr, callback) {\r\n var length = arr.length;\r\n\r\n for (var i = 0; i < length; ++i) {\r\n if (callback(arr[i], i)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n function find(arr, callback) {\r\n var length = arr.length;\r\n\r\n for (var i = 0; i < length; ++i) {\r\n if (callback(arr[i], i)) {\r\n return arr[i];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n function getUserAgent(agent) {\r\n var userAgent = agent;\r\n\r\n if (typeof userAgent === \"undefined\") {\r\n if (typeof navigator === \"undefined\" || !navigator) {\r\n return \"\";\r\n }\r\n\r\n userAgent = navigator.userAgent || \"\";\r\n }\r\n\r\n return userAgent.toLowerCase();\r\n }\r\n function execRegExp(pattern, text) {\r\n try {\r\n return new RegExp(pattern, \"g\").exec(text);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n function hasUserAgentData() {\r\n if (typeof navigator === \"undefined\" || !navigator || !navigator.userAgentData) {\r\n return false;\r\n }\r\n\r\n var userAgentData = navigator.userAgentData;\r\n var brands = userAgentData.brands || userAgentData.uaList;\r\n return !!(brands && brands.length);\r\n }\r\n function findVersion(versionTest, userAgent) {\r\n var result = execRegExp(\"(\" + versionTest + \")((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))\", userAgent);\r\n return result ? result[3] : \"\";\r\n }\r\n function convertVersion(text) {\r\n return text.replace(/_/g, \".\");\r\n }\r\n function findPreset(presets, userAgent) {\r\n var userPreset = null;\r\n var version = \"-1\";\r\n some(presets, function (preset) {\r\n var result = execRegExp(\"(\" + preset.test + \")((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))?\", userAgent);\r\n\r\n if (!result || preset.brand) {\r\n return false;\r\n }\r\n\r\n userPreset = preset;\r\n version = result[3] || \"-1\";\r\n\r\n if (preset.versionAlias) {\r\n version = preset.versionAlias;\r\n } else if (preset.versionTest) {\r\n version = findVersion(preset.versionTest.toLowerCase(), userAgent) || version;\r\n }\r\n\r\n version = convertVersion(version);\r\n return true;\r\n });\r\n return {\r\n preset: userPreset,\r\n version: version\r\n };\r\n }\r\n function findPresetBrand(presets, brands) {\r\n var brandInfo = {\r\n brand: \"\",\r\n version: \"-1\"\r\n };\r\n some(presets, function (preset) {\r\n var result = findBrand(brands, preset);\r\n\r\n if (!result) {\r\n return false;\r\n }\r\n\r\n brandInfo.brand = preset.id;\r\n brandInfo.version = preset.versionAlias || result.version;\r\n return brandInfo.version !== \"-1\";\r\n });\r\n return brandInfo;\r\n }\r\n function findBrand(brands, preset) {\r\n return find(brands, function (_a) {\r\n var brand = _a.brand;\r\n return execRegExp(\"\" + preset.test, brand.toLowerCase());\r\n });\r\n }\r\n\r\n var BROWSER_PRESETS = [{\r\n test: \"phantomjs\",\r\n id: \"phantomjs\"\r\n }, {\r\n test: \"whale\",\r\n id: \"whale\"\r\n }, {\r\n test: \"edgios|edge|edg\",\r\n id: \"edge\"\r\n }, {\r\n test: \"msie|trident|windows phone\",\r\n id: \"ie\",\r\n versionTest: \"iemobile|msie|rv\"\r\n }, {\r\n test: \"miuibrowser\",\r\n id: \"miui browser\"\r\n }, {\r\n test: \"samsungbrowser\",\r\n id: \"samsung internet\"\r\n }, {\r\n test: \"samsung\",\r\n id: \"samsung internet\",\r\n versionTest: \"version\"\r\n }, {\r\n test: \"chrome|crios\",\r\n id: \"chrome\"\r\n }, {\r\n test: \"firefox|fxios\",\r\n id: \"firefox\"\r\n }, {\r\n test: \"android\",\r\n id: \"android browser\",\r\n versionTest: \"version\"\r\n }, {\r\n test: \"safari|iphone|ipad|ipod\",\r\n id: \"safari\",\r\n versionTest: \"version\"\r\n }]; // chromium's engine(blink) is based on applewebkit 537.36.\r\n\r\n var CHROMIUM_PRESETS = [{\r\n test: \"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\\\schrome)\",\r\n id: \"chrome\",\r\n versionTest: \"chrome\"\r\n }, {\r\n test: \"chromium\",\r\n id: \"chrome\"\r\n }, {\r\n test: \"whale\",\r\n id: \"chrome\",\r\n versionAlias: \"-1\",\r\n brand: true\r\n }];\r\n var WEBKIT_PRESETS = [{\r\n test: \"applewebkit\",\r\n id: \"webkit\",\r\n versionTest: \"applewebkit|safari\"\r\n }];\r\n var WEBVIEW_PRESETS = [{\r\n test: \"(?=(iphone|ipad))(?!(.*version))\",\r\n id: \"webview\"\r\n }, {\r\n test: \"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))\",\r\n id: \"webview\"\r\n }, {\r\n // test webview\r\n test: \"webview\",\r\n id: \"webview\"\r\n }];\r\n var OS_PRESETS = [{\r\n test: \"windows phone\",\r\n id: \"windows phone\"\r\n }, {\r\n test: \"windows 2000\",\r\n id: \"window\",\r\n versionAlias: \"5.0\"\r\n }, {\r\n test: \"windows nt\",\r\n id: \"window\"\r\n }, {\r\n test: \"iphone|ipad|ipod\",\r\n id: \"ios\",\r\n versionTest: \"iphone os|cpu os\"\r\n }, {\r\n test: \"mac os x\",\r\n id: \"mac\"\r\n }, {\r\n test: \"android\",\r\n id: \"android\"\r\n }, {\r\n test: \"tizen\",\r\n id: \"tizen\"\r\n }, {\r\n test: \"webos|web0s\",\r\n id: \"webos\"\r\n }];\r\n\r\n function parseUserAgentData(osData) {\r\n var userAgentData = navigator.userAgentData;\r\n var brands = (userAgentData.uaList || userAgentData.brands).slice();\r\n var isMobile = userAgentData.mobile || false;\r\n var firstBrand = brands[0];\r\n var browser = {\r\n name: firstBrand.brand,\r\n version: firstBrand.version,\r\n majorVersion: -1,\r\n webkit: false,\r\n webkitVersion: \"-1\",\r\n chromium: false,\r\n chromiumVersion: \"-1\",\r\n webview: !!findPresetBrand(WEBVIEW_PRESETS, brands).brand\r\n };\r\n var os = {\r\n name: \"unknown\",\r\n version: \"-1\",\r\n majorVersion: -1\r\n };\r\n browser.webkit = !browser.chromium && some(WEBKIT_PRESETS, function (preset) {\r\n return findBrand(brands, preset);\r\n });\r\n var chromiumBrand = findPresetBrand(CHROMIUM_PRESETS, brands);\r\n browser.chromium = !!chromiumBrand.brand;\r\n browser.chromiumVersion = chromiumBrand.version;\r\n\r\n if (!browser.chromium) {\r\n var webkitBrand = findPresetBrand(WEBKIT_PRESETS, brands);\r\n browser.webkit = !!webkitBrand.brand;\r\n browser.webkitVersion = webkitBrand.version;\r\n }\r\n\r\n if (osData) {\r\n var platform_1 = osData.platform.toLowerCase();\r\n var result = find(OS_PRESETS, function (preset) {\r\n return new RegExp(\"\" + preset.test, \"g\").exec(platform_1);\r\n });\r\n os.name = result ? result.id : platform_1;\r\n os.version = osData.platformVersion;\r\n }\r\n\r\n var browserBrand = findPresetBrand(BROWSER_PRESETS, brands);\r\n\r\n if (browserBrand.brand) {\r\n browser.name = browserBrand.brand;\r\n browser.version = osData ? osData.uaFullVersion : browserBrand.version;\r\n }\r\n\r\n if (navigator.platform === \"Linux armv8l\") {\r\n os.name = \"android\";\r\n } else if (browser.webkit) {\r\n os.name = isMobile ? \"ios\" : \"mac\";\r\n }\r\n\r\n if (os.name === \"ios\" && browser.webview) {\r\n browser.version = \"-1\";\r\n }\r\n\r\n os.version = convertVersion(os.version);\r\n browser.version = convertVersion(browser.version);\r\n os.majorVersion = parseInt(os.version, 10);\r\n browser.majorVersion = parseInt(browser.version, 10);\r\n return {\r\n browser: browser,\r\n os: os,\r\n isMobile: isMobile,\r\n isHints: true\r\n };\r\n }\r\n\r\n function parseUserAgent(userAgent) {\r\n var nextAgent = getUserAgent(userAgent);\r\n var isMobile = !!/mobi/g.exec(nextAgent);\r\n var browser = {\r\n name: \"unknown\",\r\n version: \"-1\",\r\n majorVersion: -1,\r\n webview: !!findPreset(WEBVIEW_PRESETS, nextAgent).preset,\r\n chromium: false,\r\n chromiumVersion: \"-1\",\r\n webkit: false,\r\n webkitVersion: \"-1\"\r\n };\r\n var os = {\r\n name: \"unknown\",\r\n version: \"-1\",\r\n majorVersion: -1\r\n };\r\n\r\n var _a = findPreset(BROWSER_PRESETS, nextAgent),\r\n browserPreset = _a.preset,\r\n browserVersion = _a.version;\r\n\r\n var _b = findPreset(OS_PRESETS, nextAgent),\r\n osPreset = _b.preset,\r\n osVersion = _b.version;\r\n\r\n var chromiumPreset = findPreset(CHROMIUM_PRESETS, nextAgent);\r\n browser.chromium = !!chromiumPreset.preset;\r\n browser.chromiumVersion = chromiumPreset.version;\r\n\r\n if (!browser.chromium) {\r\n var webkitPreset = findPreset(WEBKIT_PRESETS, nextAgent);\r\n browser.webkit = !!webkitPreset.preset;\r\n browser.webkitVersion = webkitPreset.version;\r\n }\r\n\r\n if (osPreset) {\r\n os.name = osPreset.id;\r\n os.version = osVersion;\r\n os.majorVersion = parseInt(osVersion, 10);\r\n }\r\n\r\n if (browserPreset) {\r\n browser.name = browserPreset.id;\r\n browser.version = browserVersion;\r\n\r\n if (browser.webview && os.name === \"ios\" && browser.name !== \"safari\") {\r\n browser.webview = false;\r\n }\r\n }\r\n\r\n browser.majorVersion = parseInt(browser.version, 10);\r\n return {\r\n browser: browser,\r\n os: os,\r\n isMobile: isMobile,\r\n isHints: false\r\n };\r\n }\r\n /**\r\n * Extracts browser and operating system information from the user agent string.\r\n * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.\r\n * @function eg.agent#agent\r\n * @param - user agent string to parse 파싱할 유저에이전트 문자열\r\n * @return - agent Info 에이전트 정보 \r\n * @example\r\n import agent from \"@egjs/agent\";\r\n // eg.agent();\r\n const { os, browser, isMobile } = agent();\r\n */\r\n\r\n function agent$1(userAgent) {\r\n if (typeof userAgent === \"undefined\" && hasUserAgentData()) {\r\n return parseUserAgentData();\r\n } else {\r\n return parseUserAgent(userAgent);\r\n }\r\n }\r\n\r\n /*\r\n Copyright (c) 2020 Daybrush\r\n name: @scena/matrix\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/matrix\r\n version: 1.1.1\r\n */\r\n\r\n function add(matrix, inverseMatrix, startIndex, fromIndex, n, k) {\r\n for (var i = 0; i < n; ++i) {\r\n var x = startIndex + i * n;\r\n var fromX = fromIndex + i * n;\r\n matrix[x] += matrix[fromX] * k;\r\n inverseMatrix[x] += inverseMatrix[fromX] * k;\r\n }\r\n }\r\n\r\n function swap(matrix, inverseMatrix, startIndex, fromIndex, n) {\r\n for (var i = 0; i < n; ++i) {\r\n var x = startIndex + i * n;\r\n var fromX = fromIndex + i * n;\r\n var v = matrix[x];\r\n var iv = inverseMatrix[x];\r\n matrix[x] = matrix[fromX];\r\n matrix[fromX] = v;\r\n inverseMatrix[x] = inverseMatrix[fromX];\r\n inverseMatrix[fromX] = iv;\r\n }\r\n }\r\n\r\n function divide(matrix, inverseMatrix, startIndex, n, k) {\r\n for (var i = 0; i < n; ++i) {\r\n var x = startIndex + i * n;\r\n matrix[x] /= k;\r\n inverseMatrix[x] /= k;\r\n }\r\n }\r\n /**\r\n *\r\n * @namespace Matrix\r\n */\r\n\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n\r\n function ignoreDimension(matrix, m, n) {\r\n if (n === void 0) {\r\n n = Math.sqrt(matrix.length);\r\n }\r\n\r\n var newMatrix = matrix.slice();\r\n\r\n for (var i = 0; i < n; ++i) {\r\n newMatrix[i * n + m - 1] = 0;\r\n newMatrix[(m - 1) * n + i] = 0;\r\n }\r\n\r\n newMatrix[(m - 1) * (n + 1)] = 1;\r\n return newMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function invert(matrix, n) {\r\n if (n === void 0) {\r\n n = Math.sqrt(matrix.length);\r\n }\r\n\r\n var newMatrix = matrix.slice();\r\n var inverseMatrix = createIdentityMatrix(n);\r\n\r\n for (var i = 0; i < n; ++i) {\r\n // diagonal\r\n var identityIndex = n * i + i;\r\n\r\n if (!throttle$1(newMatrix[identityIndex], TINY_NUM$1)) {\r\n // newMatrix[identityIndex] = 0;\r\n for (var j = i + 1; j < n; ++j) {\r\n if (newMatrix[n * i + j]) {\r\n swap(newMatrix, inverseMatrix, i, j, n);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!throttle$1(newMatrix[identityIndex], TINY_NUM$1)) {\r\n // no inverse matrix\r\n return [];\r\n }\r\n\r\n divide(newMatrix, inverseMatrix, i, n, newMatrix[identityIndex]);\r\n\r\n for (var j = 0; j < n; ++j) {\r\n var targetStartIndex = j;\r\n var targetIndex = j + i * n;\r\n var target = newMatrix[targetIndex];\r\n\r\n if (!throttle$1(target, TINY_NUM$1) || i === j) {\r\n continue;\r\n }\r\n\r\n add(newMatrix, inverseMatrix, targetStartIndex, i, n, -target);\r\n }\r\n }\r\n\r\n return inverseMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function transpose(matrix, n) {\r\n if (n === void 0) {\r\n n = Math.sqrt(matrix.length);\r\n }\r\n\r\n var newMatrix = [];\r\n\r\n for (var i = 0; i < n; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n newMatrix[j * n + i] = matrix[n * i + j];\r\n }\r\n }\r\n\r\n return newMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function getOrigin(matrix, n) {\r\n if (n === void 0) {\r\n n = Math.sqrt(matrix.length);\r\n }\r\n\r\n var originMatrix = [];\r\n var w = matrix[n * n - 1];\r\n\r\n for (var i = 0; i < n - 1; ++i) {\r\n originMatrix[i] = matrix[n * (n - 1) + i] / w;\r\n }\r\n\r\n originMatrix[n - 1] = 0;\r\n return originMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function fromTranslation(pos, n) {\r\n var newMatrix = createIdentityMatrix(n);\r\n\r\n for (var i = 0; i < n - 1; ++i) {\r\n newMatrix[n * (n - 1) + i] = pos[i] || 0;\r\n }\r\n\r\n return newMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function convertPositionMatrix(matrix, n) {\r\n var newMatrix = matrix.slice();\r\n\r\n for (var i = matrix.length; i < n - 1; ++i) {\r\n newMatrix[i] = 0;\r\n }\r\n\r\n newMatrix[n - 1] = 1;\r\n return newMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function convertDimension(matrix, n, m) {\r\n if (n === void 0) {\r\n n = Math.sqrt(matrix.length);\r\n } // n < m\r\n\r\n\r\n if (n === m) {\r\n return matrix;\r\n }\r\n\r\n var newMatrix = createIdentityMatrix(m);\r\n var length = Math.min(n, m);\r\n\r\n for (var i = 0; i < length - 1; ++i) {\r\n for (var j = 0; j < length - 1; ++j) {\r\n newMatrix[i * m + j] = matrix[i * n + j];\r\n }\r\n\r\n newMatrix[(i + 1) * m - 1] = matrix[(i + 1) * n - 1];\r\n newMatrix[(m - 1) * m + i] = matrix[(n - 1) * n + i];\r\n }\r\n\r\n newMatrix[m * m - 1] = matrix[n * n - 1];\r\n return newMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function multiplies(n) {\r\n var matrixes = [];\r\n\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n matrixes[_i - 1] = arguments[_i];\r\n }\r\n\r\n var m = createIdentityMatrix(n);\r\n matrixes.forEach(function (matrix) {\r\n m = multiply(m, matrix, n);\r\n });\r\n return m;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function multiply(matrix, matrix2, n) {\r\n if (n === void 0) {\r\n n = Math.sqrt(matrix.length);\r\n }\r\n\r\n var newMatrix = []; // 1 y: n\r\n // 1 x: m\r\n // 2 x: m\r\n // 2 y: k\r\n // n * m X m * k\r\n\r\n var m = matrix.length / n;\r\n var k = matrix2.length / m;\r\n\r\n if (!m) {\r\n return matrix2;\r\n } else if (!k) {\r\n return matrix;\r\n }\r\n\r\n for (var i = 0; i < n; ++i) {\r\n for (var j = 0; j < k; ++j) {\r\n newMatrix[j * n + i] = 0;\r\n\r\n for (var l = 0; l < m; ++l) {\r\n // m1 x: m(l), y: n(i)\r\n // m2 x: k(j): y: m(l)\r\n // nw x: n(i), y: k(j)\r\n newMatrix[j * n + i] += matrix[l * n + i] * matrix2[j * m + l];\r\n }\r\n }\r\n } // n * k\r\n\r\n\r\n return newMatrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function plus(pos1, pos2) {\r\n var length = Math.min(pos1.length, pos2.length);\r\n var nextPos = pos1.slice();\r\n\r\n for (var i = 0; i < length; ++i) {\r\n nextPos[i] = nextPos[i] + pos2[i];\r\n }\r\n\r\n return nextPos;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function minus(pos1, pos2) {\r\n var length = Math.min(pos1.length, pos2.length);\r\n var nextPos = pos1.slice();\r\n\r\n for (var i = 0; i < length; ++i) {\r\n nextPos[i] = nextPos[i] - pos2[i];\r\n }\r\n\r\n return nextPos;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function convertCSStoMatrix(a, is2d) {\r\n if (is2d === void 0) {\r\n is2d = a.length === 6;\r\n }\r\n\r\n if (is2d) {\r\n return [a[0], a[1], 0, a[2], a[3], 0, a[4], a[5], 1];\r\n }\r\n\r\n return a;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function convertMatrixtoCSS(a, is2d) {\r\n if (is2d === void 0) {\r\n is2d = a.length === 9;\r\n }\r\n\r\n if (is2d) {\r\n return [a[0], a[1], a[3], a[4], a[6], a[7]];\r\n }\r\n\r\n return a;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function calculate(matrix, matrix2, n) {\r\n if (n === void 0) {\r\n n = matrix2.length;\r\n }\r\n\r\n var result = multiply(matrix, matrix2, n);\r\n var k = result[n - 1];\r\n return result.map(function (v) {\r\n return v / k;\r\n });\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function rotateX3d(matrix, rad) {\r\n return multiply(matrix, [1, 0, 0, 0, 0, Math.cos(rad), Math.sin(rad), 0, 0, -Math.sin(rad), Math.cos(rad), 0, 0, 0, 0, 1], 4);\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function rotateY3d(matrix, rad) {\r\n return multiply(matrix, [Math.cos(rad), 0, -Math.sin(rad), 0, 0, 1, 0, 0, Math.sin(rad), 0, Math.cos(rad), 0, 0, 0, 0, 1], 4);\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function rotateZ3d(matrix, rad) {\r\n return multiply(matrix, createRotateMatrix(rad, 4));\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function scale3d(matrix, _a) {\r\n var _b = _a[0],\r\n sx = _b === void 0 ? 1 : _b,\r\n _c = _a[1],\r\n sy = _c === void 0 ? 1 : _c,\r\n _d = _a[2],\r\n sz = _d === void 0 ? 1 : _d;\r\n return multiply(matrix, [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1], 4);\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function rotate(pos, rad) {\r\n return calculate(createRotateMatrix(rad, 3), convertPositionMatrix(pos, 3));\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function translate3d(matrix, _a) {\r\n var _b = _a[0],\r\n tx = _b === void 0 ? 0 : _b,\r\n _c = _a[1],\r\n ty = _c === void 0 ? 0 : _c,\r\n _d = _a[2],\r\n tz = _d === void 0 ? 0 : _d;\r\n return multiply(matrix, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1], 4);\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function matrix3d(matrix1, matrix2) {\r\n return multiply(matrix1, matrix2, 4);\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function createRotateMatrix(rad, n) {\r\n var cos = Math.cos(rad);\r\n var sin = Math.sin(rad);\r\n var m = createIdentityMatrix(n); // cos -sin\r\n // sin cos\r\n\r\n m[0] = cos;\r\n m[1] = sin;\r\n m[n] = -sin;\r\n m[n + 1] = cos;\r\n return m;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function createIdentityMatrix(n) {\r\n var length = n * n;\r\n var matrix = [];\r\n\r\n for (var i = 0; i < length; ++i) {\r\n matrix[i] = i % (n + 1) ? 0 : 1;\r\n }\r\n\r\n return matrix;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function createScaleMatrix(scale, n) {\r\n var m = createIdentityMatrix(n);\r\n var length = Math.min(scale.length, n - 1);\r\n\r\n for (var i = 0; i < length; ++i) {\r\n m[(n + 1) * i] = scale[i];\r\n }\r\n\r\n return m;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function createOriginMatrix(origin, n) {\r\n var m = createIdentityMatrix(n);\r\n var length = Math.min(origin.length, n - 1);\r\n\r\n for (var i = 0; i < length; ++i) {\r\n m[n * (n - 1) + i] = origin[i];\r\n }\r\n\r\n return m;\r\n }\r\n /**\r\n * @memberof Matrix\r\n */\r\n\r\n function createWarpMatrix(pos0, pos1, pos2, pos3, nextPos0, nextPos1, nextPos2, nextPos3) {\r\n var x0 = pos0[0],\r\n y0 = pos0[1];\r\n var x1 = pos1[0],\r\n y1 = pos1[1];\r\n var x2 = pos2[0],\r\n y2 = pos2[1];\r\n var x3 = pos3[0],\r\n y3 = pos3[1];\r\n var u0 = nextPos0[0],\r\n v0 = nextPos0[1];\r\n var u1 = nextPos1[0],\r\n v1 = nextPos1[1];\r\n var u2 = nextPos2[0],\r\n v2 = nextPos2[1];\r\n var u3 = nextPos3[0],\r\n v3 = nextPos3[1];\r\n var matrix = [x0, 0, x1, 0, x2, 0, x3, 0, y0, 0, y1, 0, y2, 0, y3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, x0, 0, x1, 0, x2, 0, x3, 0, y0, 0, y1, 0, y2, 0, y3, 0, 1, 0, 1, 0, 1, 0, 1, -u0 * x0, -v0 * x0, -u1 * x1, -v1 * x1, -u2 * x2, -v2 * x2, -u3 * x3, -v3 * x3, -u0 * y0, -v0 * y0, -u1 * y1, -v1 * y1, -u2 * y2, -v2 * y2, -u3 * y3, -v3 * y3];\r\n var inverseMatrix = invert(matrix, 8);\r\n\r\n if (!inverseMatrix.length) {\r\n return [];\r\n }\r\n\r\n var h = multiply(inverseMatrix, [u0, v0, u1, v1, u2, v2, u3, v3], 8);\r\n h[8] = 1;\r\n return convertDimension(transpose(h), 3, 4);\r\n }\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: css-to-mat\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/css-to-mat.git\r\n version: 1.0.3\r\n */\r\n\r\n function createMatrix() {\r\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\r\n }\r\n function parseMat(transform) {\r\n return toMat(parse(transform));\r\n }\r\n function toMat(matrixInfos) {\r\n var target = createMatrix();\r\n matrixInfos.forEach(function (info) {\r\n var matrixFunction = info.matrixFunction,\r\n functionValue = info.functionValue;\r\n\r\n if (!matrixFunction) {\r\n return;\r\n }\r\n\r\n target = matrixFunction(target, functionValue);\r\n });\r\n return target;\r\n }\r\n function parse(transform) {\r\n var transforms = isArray(transform) ? transform : splitSpace(transform);\r\n return transforms.map(function (t) {\r\n var _a = splitBracket(t),\r\n name = _a.prefix,\r\n value = _a.value;\r\n\r\n var matrixFunction = null;\r\n var functionName = name;\r\n var functionValue = \"\";\r\n\r\n if (name === \"translate\" || name === \"translateX\" || name === \"translate3d\") {\r\n var _b = splitComma(value).map(function (v) {\r\n return parseFloat(v);\r\n }),\r\n posX = _b[0],\r\n _c = _b[1],\r\n posY = _c === void 0 ? 0 : _c,\r\n _d = _b[2],\r\n posZ = _d === void 0 ? 0 : _d;\r\n\r\n matrixFunction = translate3d;\r\n functionValue = [posX, posY, posZ];\r\n } else if (name === \"translateY\") {\r\n var posY = parseFloat(value);\r\n matrixFunction = translate3d;\r\n functionValue = [0, posY, 0];\r\n } else if (name === \"translateZ\") {\r\n var posZ = parseFloat(value);\r\n matrixFunction = translate3d;\r\n functionValue = [0, 0, posZ];\r\n } else if (name === \"scale\" || name === \"scale3d\") {\r\n var _e = splitComma(value).map(function (v) {\r\n return parseFloat(v);\r\n }),\r\n sx = _e[0],\r\n _f = _e[1],\r\n sy = _f === void 0 ? sx : _f,\r\n _g = _e[2],\r\n sz = _g === void 0 ? 1 : _g;\r\n\r\n matrixFunction = scale3d;\r\n functionValue = [sx, sy, sz];\r\n } else if (name === \"scaleX\") {\r\n var sx = parseFloat(value);\r\n matrixFunction = scale3d;\r\n functionValue = [sx, 1, 1];\r\n } else if (name === \"scaleY\") {\r\n var sy = parseFloat(value);\r\n matrixFunction = scale3d;\r\n functionValue = [1, sy, 1];\r\n } else if (name === \"scaleZ\") {\r\n var sz = parseFloat(value);\r\n matrixFunction = scale3d;\r\n functionValue = [1, 1, sz];\r\n } else if (name === \"rotate\" || name === \"rotateZ\" || name === \"rotateX\" || name === \"rotateY\") {\r\n var _h = splitUnit(value),\r\n unit = _h.unit,\r\n unitValue = _h.value;\r\n\r\n var rad = unit === \"rad\" ? unitValue : unitValue * Math.PI / 180;\r\n\r\n if (name === \"rotate\" || name === \"rotateZ\") {\r\n functionName = \"rotateZ\";\r\n matrixFunction = rotateZ3d;\r\n } else if (name === \"rotateX\") {\r\n matrixFunction = rotateX3d;\r\n } else if (name === \"rotateY\") {\r\n matrixFunction = rotateY3d;\r\n }\r\n\r\n functionValue = rad;\r\n } else if (name === \"matrix3d\") {\r\n matrixFunction = matrix3d;\r\n functionValue = splitComma(value).map(function (v) {\r\n return parseFloat(v);\r\n });\r\n } else if (name === \"matrix\") {\r\n var m = splitComma(value).map(function (v) {\r\n return parseFloat(v);\r\n });\r\n matrixFunction = matrix3d;\r\n functionValue = [m[0], m[1], 0, 0, m[2], m[3], 0, 0, 0, 0, 1, 0, m[4], m[5], 0, 1];\r\n } else {\r\n functionName = \"\";\r\n }\r\n\r\n return {\r\n name: name,\r\n functionName: functionName,\r\n value: value,\r\n matrixFunction: matrixFunction,\r\n functionValue: functionValue\r\n };\r\n });\r\n }\r\n\r\n /*\r\n Copyright (c) 2020 Daybrush\r\n name: overlap-area\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/overlap-area.git\r\n version: 1.0.0\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n function __spreadArrays$3() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\r\n\r\n return r;\r\n }\r\n\r\n /**\r\n * @namespace OverlapArea\r\n */\r\n\r\n /**\r\n * Gets the size of a shape (polygon) made of points.\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getAreaSize(points) {\r\n if (points.length < 3) {\r\n return 0;\r\n }\r\n\r\n return Math.abs(sum(points.map(function (point, i) {\r\n var nextPoint = points[i + 1] || points[0];\r\n return point[0] * nextPoint[1] - nextPoint[0] * point[1];\r\n }))) / 2;\r\n }\r\n /**\r\n * Get points that fit the rect,\r\n * @memberof OverlapArea\r\n */\r\n\r\n function fitPoints(points, rect) {\r\n var width = rect.width,\r\n height = rect.height,\r\n left = rect.left,\r\n top = rect.top;\r\n\r\n var _a = getMinMaxs(points),\r\n minX = _a.minX,\r\n minY = _a.minY,\r\n maxX = _a.maxX,\r\n maxY = _a.maxY;\r\n\r\n var ratioX = width / (maxX - minX);\r\n var ratioY = height / (maxY - minY);\r\n return points.map(function (point) {\r\n return [left + (point[0] - minX) * ratioX, top + (point[1] - minY) * ratioY];\r\n });\r\n }\r\n /**\r\n * Get the minimum and maximum points of the points.\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getMinMaxs(points) {\r\n var xs = points.map(function (point) {\r\n return point[0];\r\n });\r\n var ys = points.map(function (point) {\r\n return point[1];\r\n });\r\n return {\r\n minX: Math.min.apply(Math, xs),\r\n minY: Math.min.apply(Math, ys),\r\n maxX: Math.max.apply(Math, xs),\r\n maxY: Math.max.apply(Math, ys)\r\n };\r\n }\r\n /**\r\n * Whether the point is in shape\r\n * @param - point pos\r\n * @param - shape points\r\n * @param - whether to check except line\r\n * @memberof OverlapArea\r\n */\r\n\r\n function isInside(pos, points, excludeLine) {\r\n var x = pos[0],\r\n y = pos[1];\r\n\r\n var _a = getMinMaxs(points),\r\n minX = _a.minX,\r\n minY = _a.minY,\r\n maxX = _a.maxX,\r\n maxY = _a.maxY;\r\n\r\n var xLine = [[minX, y], [maxX, y]];\r\n var yLine = [[x, minY], [x, maxY]];\r\n var xLinearConstants = getLinearConstants(xLine[0], xLine[1]);\r\n var yLinearConstants = getLinearConstants(yLine[0], yLine[1]);\r\n var lines = convertLines(points);\r\n var intersectionXPoints = [];\r\n var intersectionYPoints = [];\r\n lines.forEach(function (line) {\r\n var linearConstants = getLinearConstants(line[0], line[1]);\r\n var xPoints = getPointsOnLines(getIntersectionPointsByConstants(xLinearConstants, linearConstants), [xLine, line]);\r\n var yPoints = getPointsOnLines(getIntersectionPointsByConstants(yLinearConstants, linearConstants), [yLine, line]);\r\n\r\n if (xPoints.length === 1 ? line[0][1] !== y : true) {\r\n intersectionXPoints.push.apply(intersectionXPoints, xPoints);\r\n }\r\n\r\n if (yPoints.length === 1 ? line[0][0] !== x : true) {\r\n intersectionYPoints.push.apply(intersectionYPoints, yPoints);\r\n }\r\n\r\n if (!linearConstants[0]) {\r\n intersectionXPoints.push.apply(intersectionXPoints, xPoints);\r\n }\r\n\r\n if (!linearConstants[1]) {\r\n intersectionYPoints.push.apply(intersectionYPoints, yPoints);\r\n }\r\n });\r\n\r\n if (!excludeLine) {\r\n if (findIndex(intersectionXPoints, function (p) {\r\n return p[0] === x;\r\n }) > -1 || findIndex(intersectionYPoints, function (p) {\r\n return p[1] === y;\r\n }) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n if (intersectionXPoints.filter(function (p) {\r\n return p[0] > x;\r\n }).length % 2 && intersectionYPoints.filter(function (p) {\r\n return p[1] > y;\r\n }).length % 2) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n /**\r\n * Get the coefficient of the linear function. [a, b, c] (ax + by + c = 0)\r\n * @return [a, b, c]\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getLinearConstants(point1, point2) {\r\n var x1 = point1[0],\r\n y1 = point1[1];\r\n var x2 = point2[0],\r\n y2 = point2[1]; // ax + by + c = 0\r\n\r\n if (x1 === x2 && y1 === y2) {\r\n return [0, 0, 0];\r\n }\r\n\r\n if (x1 === x2) {\r\n // x = x1\r\n return [1, 0, -x1];\r\n } else if (y1 === y2) {\r\n // y = y1\r\n return [0, 1, -y1];\r\n } else {\r\n // x1 + a * y1 + b = 0\r\n // x2 + a * y2 + b = 0\r\n // (x1 -x2) + (y1 - y2) * a = 0\r\n // a = (x2 - x1) / (y1 - y2)\r\n // x1 + (x2 - x1) / (y1 - y2)\r\n var a_1 = (x2 - x1) / (y1 - y2);\r\n var b_1 = -x1 - a_1 * y1;\r\n return [1, a_1, b_1];\r\n }\r\n }\r\n /**\r\n * Get intersection points with linear functions.\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getIntersectionPointsByConstants(linearConstants1, linearConstants2) {\r\n var a1 = linearConstants1[0],\r\n b1 = linearConstants1[1],\r\n c1 = linearConstants1[2];\r\n var a2 = linearConstants2[0],\r\n b2 = linearConstants2[1],\r\n c2 = linearConstants2[2];\r\n var isZeroA = a1 === 0 && a2 === 0;\r\n var isZeroB = b1 === 0 && b2 === 0;\r\n\r\n if (isZeroA && isZeroB) {\r\n return [];\r\n } else if (isZeroA) {\r\n // b1 * y + c1 = 0\r\n // b2 * y + c2 = 0\r\n var y1 = -c1 / b1;\r\n var y2 = -c2 / b2;\r\n\r\n if (y1 !== y2) {\r\n return [];\r\n } else {\r\n return [[-Infinity, y1], [Infinity, y1]];\r\n }\r\n } else if (isZeroB) {\r\n // a1 * x + c1 = 0\r\n // a2 * x + c2 = 0\r\n var x1 = -c1 / a1;\r\n var x2 = -c2 / a2;\r\n\r\n if (x1 !== x2) {\r\n return [];\r\n } else {\r\n return [[x1, -Infinity], [x1, Infinity]];\r\n }\r\n } else if (a1 === 0) {\r\n // b1 * y + c1 = 0\r\n // y = - c1 / b1;\r\n // a2 * x + b2 * y + c2 = 0\r\n var y = -c1 / b1;\r\n var x = -(b2 * y + c2) / a2;\r\n return [[x, y]];\r\n } else if (a2 === 0) {\r\n // b2 * y + c2 = 0\r\n // y = - c2 / b2;\r\n // a1 * x + b1 * y + c1 = 0\r\n var y = -c2 / b2;\r\n var x = -(b1 * y + c1) / a1;\r\n return [[x, y]];\r\n } else if (b1 === 0) {\r\n // a1 * x + c1 = 0\r\n // x = - c1 / a1;\r\n // a2 * x + b2 * y + c2 = 0\r\n var x = -c1 / a1;\r\n var y = -(a2 * x + c2) / b2;\r\n return [[x, y]];\r\n } else if (b2 === 0) {\r\n // a2 * x + c2 = 0\r\n // x = - c2 / a2;\r\n // a1 * x + b1 * y + c1 = 0\r\n var x = -c2 / a2;\r\n var y = -(a1 * x + c1) / b1;\r\n return [[x, y]];\r\n } else {\r\n // a1 * x + b1 * y + c1 = 0\r\n // a2 * x + b2 * y + c2 = 0\r\n // b2 * a1 * x + b2 * b1 * y + b2 * c1 = 0\r\n // b1 * a2 * x + b1 * b2 * y + b1 * c2 = 0\r\n // (b2 * a1 - b1 * a2) * x = (b1 * c2 - b2 * c1)\r\n var x = (b1 * c2 - b2 * c1) / (b2 * a1 - b1 * a2);\r\n var y = -(a1 * x + c1) / b1;\r\n return [[x, y]];\r\n }\r\n }\r\n /**\r\n * Get the points on the lines (between two points).\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getPointsOnLines(points, lines) {\r\n var minMaxs = lines.map(function (line) {\r\n return [0, 1].map(function (order) {\r\n return [Math.min(line[0][order], line[1][order]), Math.max(line[0][order], line[1][order])];\r\n });\r\n });\r\n\r\n if (points.length === 2) {\r\n var _a = points[0],\r\n x = _a[0],\r\n y = _a[1];\r\n\r\n if (x === points[1][0]) {\r\n /// Math.max(minY1, minY2)\r\n var top = Math.max.apply(Math, minMaxs.map(function (minMax) {\r\n return minMax[1][0];\r\n })); /// Math.min(maxY1, miax2)\r\n\r\n var bottom = Math.min.apply(Math, minMaxs.map(function (minMax) {\r\n return minMax[1][1];\r\n }));\r\n\r\n if (top > bottom) {\r\n return [];\r\n }\r\n\r\n return [[x, top], [x, bottom]];\r\n } else if (y === points[1][1]) {\r\n /// Math.max(minY1, minY2)\r\n var left = Math.max.apply(Math, minMaxs.map(function (minMax) {\r\n return minMax[0][0];\r\n })); /// Math.min(maxY1, miax2)\r\n\r\n var right = Math.min.apply(Math, minMaxs.map(function (minMax) {\r\n return minMax[0][1];\r\n }));\r\n\r\n if (left > right) {\r\n return [];\r\n }\r\n\r\n return [[left, y], [right, y]];\r\n }\r\n }\r\n\r\n return points.filter(function (point) {\r\n return minMaxs.every(function (minMax) {\r\n return minMax[0][0] <= point[0] && point[0] <= minMax[0][1] && minMax[1][0] <= point[1] && point[1] <= minMax[1][1];\r\n });\r\n });\r\n }\r\n /**\r\n * Convert two points into lines.\r\n * @function\r\n * @memberof OverlapArea\r\n */\r\n\r\n function convertLines(points) {\r\n return __spreadArrays$3(points.slice(1), [points[0]]).map(function (point, i) {\r\n return [points[i], point];\r\n });\r\n }\r\n /**\r\n * Get the points of the overlapped part of two shapes.\r\n * @function\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getOverlapPoints(points1, points2) {\r\n var targetPoints1 = points1.slice();\r\n var targetPoints2 = points2.slice();\r\n\r\n if (getShapeDirection(targetPoints1) === -1) {\r\n targetPoints1.reverse();\r\n }\r\n\r\n if (getShapeDirection(targetPoints2) === -1) {\r\n targetPoints2.reverse();\r\n }\r\n\r\n var lines1 = convertLines(targetPoints1);\r\n var lines2 = convertLines(targetPoints2);\r\n var linearConstantss1 = lines1.map(function (line1) {\r\n return getLinearConstants(line1[0], line1[1]);\r\n });\r\n var linearConstantss2 = lines2.map(function (line2) {\r\n return getLinearConstants(line2[0], line2[1]);\r\n });\r\n var overlapInfos = [];\r\n linearConstantss1.forEach(function (linearConstants1, i) {\r\n var line1 = lines1[i];\r\n var linePointInfos = [];\r\n linearConstantss2.forEach(function (linearConstants2, j) {\r\n var intersectionPoints = getIntersectionPointsByConstants(linearConstants1, linearConstants2);\r\n var points = getPointsOnLines(intersectionPoints, [line1, lines2[j]]);\r\n linePointInfos.push.apply(linePointInfos, points.map(function (pos) {\r\n return {\r\n index1: i,\r\n index2: j,\r\n pos: pos\r\n };\r\n }));\r\n });\r\n linePointInfos.sort(function (a, b) {\r\n return getDist$2(line1[0], a.pos) - getDist$2(line1[0], b.pos);\r\n });\r\n overlapInfos.push.apply(overlapInfos, linePointInfos);\r\n\r\n if (isInside(line1[1], targetPoints2)) {\r\n overlapInfos.push({\r\n index1: i,\r\n index2: -1,\r\n pos: line1[1]\r\n });\r\n }\r\n });\r\n lines2.forEach(function (line2, i) {\r\n if (isInside(line2[1], targetPoints1)) {\r\n var isNext_1 = false;\r\n var index = findIndex(overlapInfos, function (_a) {\r\n var index2 = _a.index2;\r\n\r\n if (index2 === i) {\r\n isNext_1 = true;\r\n return false;\r\n }\r\n\r\n if (isNext_1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (index === -1) {\r\n isNext_1 = false;\r\n index = findIndex(overlapInfos, function (_a) {\r\n var index1 = _a.index1,\r\n index2 = _a.index2;\r\n\r\n if (index1 === -1 && index2 + 1 === i) {\r\n isNext_1 = true;\r\n return false;\r\n }\r\n\r\n if (isNext_1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (index === -1) {\r\n overlapInfos.push({\r\n index1: -1,\r\n index2: i,\r\n pos: line2[1]\r\n });\r\n } else {\r\n overlapInfos.splice(index, 0, {\r\n index1: -1,\r\n index2: i,\r\n pos: line2[1]\r\n });\r\n }\r\n }\r\n }); // console.log(overlapInfos);\r\n\r\n var overlapPoints = overlapInfos.map(function (_a) {\r\n var pos = _a.pos;\r\n return pos;\r\n });\r\n var pointMap = {};\r\n return overlapPoints.filter(function (point) {\r\n var key = point[0] + \"x\" + point[1];\r\n\r\n if (pointMap[key]) {\r\n return false;\r\n }\r\n\r\n pointMap[key] = true;\r\n return true;\r\n });\r\n }\r\n /**\r\n * Gets the size of the overlapped part of two shapes.\r\n * @function\r\n * @memberof OverlapArea\r\n */\r\n\r\n function getOverlapSize(points1, points2) {\r\n var points = getOverlapPoints(points1, points2);\r\n return getAreaSize(points);\r\n }\r\n\r\n /*\r\n Copyright (c) 2019-present NAVER Corp.\r\n name: @egjs/children-differ\r\n license: MIT\r\n author: NAVER Corp.\r\n repository: https://github.com/naver/egjs-children-differ\r\n version: 1.0.1\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n /* global Reflect, Promise */\r\n var extendStatics$5 = function (d, b) {\r\n extendStatics$5 = Object.setPrototypeOf || {\r\n __proto__: []\r\n } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n } || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n };\r\n\r\n return extendStatics$5(d, b);\r\n };\r\n\r\n function __extends$5(d, b) {\r\n extendStatics$5(d, b);\r\n\r\n function __() {\r\n this.constructor = d;\r\n }\r\n\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n /*\r\n egjs-children-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n var findKeyCallback = typeof Map === \"function\" ? undefined : function () {\r\n var childrenCount = 0;\r\n return function (el) {\r\n return el.__DIFF_KEY__ || (el.__DIFF_KEY__ = ++childrenCount);\r\n };\r\n }();\r\n\r\n /**\r\n * A module that checks diff when child are added, removed, or changed .\r\n * @ko 자식 노드들에서 자식 노드가 추가되거나 삭제되거나 순서가 변경된 사항을 체크하는 모듈입니다.\r\n * @memberof eg\r\n * @extends eg.ListDiffer\r\n */\r\n\r\n var ChildrenDiffer =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$5(ChildrenDiffer, _super);\r\n /**\r\n * @param - Initializing Children 초기 설정할 자식 노드들\r\n */\r\n\r\n\r\n function ChildrenDiffer(list) {\r\n if (list === void 0) {\r\n list = [];\r\n }\r\n\r\n return _super.call(this, list, findKeyCallback) || this;\r\n }\r\n\r\n return ChildrenDiffer;\r\n }(ListDiffer);\r\n\r\n /*\r\n egjs-children-differ\r\n Copyright (c) 2019-present NAVER Corp.\r\n MIT license\r\n */\r\n /**\r\n *\r\n * @memberof eg.ChildrenDiffer\r\n * @static\r\n * @function\r\n * @param - Previous List 이전 목록 \r\n * @param - List to Update 업데이트 할 목록 \r\n * @return - Returns the diff between `prevList` and `list` `prevList`와 `list`의 다른 점을 반환한다.\r\n * @example\r\n * import { diff } from \"@egjs/children-differ\";\r\n * // script => eg.ChildrenDiffer.diff\r\n * const result = diff([0, 1, 2, 3, 4, 5], [7, 8, 0, 4, 3, 6, 2, 1]);\r\n * // List before update\r\n * // [1, 2, 3, 4, 5]\r\n * console.log(result.prevList);\r\n * // Updated list\r\n * // [4, 3, 6, 2, 1]\r\n * console.log(result.list);\r\n * // Index array of values added to `list`\r\n * // [0, 1, 5]\r\n * console.log(result.added);\r\n * // Index array of values removed in `prevList`\r\n * // [5]\r\n * console.log(result.removed);\r\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`\r\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\r\n * console.log(result.changed);\r\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\r\n * // [[4, 3], [3, 4], [2, 6]]\r\n * console.log(result.pureChanged);\r\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\r\n * // [[4, 1], [4, 2], [4, 3]]\r\n * console.log(result.ordered);\r\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved\r\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\r\n * console.log(result.maintained);\r\n */\r\n\r\n function diff(prevList, list) {\r\n return diff$1(prevList, list, findKeyCallback);\r\n }\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: @scena/event-emitter\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/gesture.git\r\n version: 1.0.5\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n var __assign$5 = function () {\r\n __assign$5 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n\r\n return t;\r\n };\r\n\r\n return __assign$5.apply(this, arguments);\r\n };\r\n function __spreadArrays$2() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\r\n\r\n return r;\r\n }\r\n\r\n /**\r\n * Implement EventEmitter on object or component.\r\n */\r\n\r\n var EventEmitter$1 =\r\n /*#__PURE__*/\r\n function () {\r\n function EventEmitter() {\r\n this._events = {};\r\n }\r\n /**\r\n * Add a listener to the registered event.\r\n * @param - Name of the event to be added\r\n * @param - listener function of the event to be added\r\n * @example\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n * cosnt emitter = new EventEmitter();\r\n *\r\n * // Add listener in \"a\" event\r\n * emitter.on(\"a\", () => {\r\n * });\r\n * // Add listeners\r\n * emitter.on({\r\n * a: () => {},\r\n * b: () => {},\r\n * });\r\n */\r\n\r\n\r\n var __proto = EventEmitter.prototype;\r\n\r\n __proto.on = function (eventName, listener) {\r\n if (isObject(eventName)) {\r\n for (var name in eventName) {\r\n this.on(name, eventName[name]);\r\n }\r\n } else {\r\n this._addEvent(eventName, listener, {});\r\n }\r\n\r\n return this;\r\n };\r\n /**\r\n * Remove listeners registered in the event target.\r\n * @param - Name of the event to be removed\r\n * @param - listener function of the event to be removed\r\n * @example\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n * cosnt emitter = new EventEmitter();\r\n *\r\n * // Remove all listeners.\r\n * emitter.off();\r\n *\r\n * // Remove all listeners in \"A\" event.\r\n * emitter.off(\"a\");\r\n *\r\n *\r\n * // Remove \"listener\" listener in \"a\" event.\r\n * emitter.off(\"a\", listener);\r\n */\r\n\r\n\r\n __proto.off = function (eventName, listener) {\r\n if (!eventName) {\r\n this._events = {};\r\n } else if (isObject(eventName)) {\r\n for (var name in eventName) {\r\n this.off(name);\r\n }\r\n } else if (!listener) {\r\n this._events[eventName] = [];\r\n } else {\r\n var events = this._events[eventName];\r\n\r\n if (events) {\r\n var index = findIndex(events, function (e) {\r\n return e.listener === listener;\r\n });\r\n\r\n if (index > -1) {\r\n events.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n /**\r\n * Add a disposable listener and Use promise to the registered event.\r\n * @param - Name of the event to be added\r\n * @param - disposable listener function of the event to be added\r\n * @example\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n * cosnt emitter = new EventEmitter();\r\n *\r\n * // Add a disposable listener in \"a\" event\r\n * emitter.once(\"a\", () => {\r\n * });\r\n *\r\n * // Use Promise\r\n * emitter.once(\"a\").then(e => {\r\n * });\r\n */\r\n\r\n\r\n __proto.once = function (eventName, listener) {\r\n var _this = this;\r\n\r\n if (listener) {\r\n this._addEvent(eventName, listener, {\r\n once: true\r\n });\r\n }\r\n\r\n return new Promise(function (resolve) {\r\n _this._addEvent(eventName, resolve, {\r\n once: true\r\n });\r\n });\r\n };\r\n /**\r\n * Fires an event to call listeners.\r\n * @param - Event name\r\n * @param - Event parameter\r\n * @return If false, stop the event.\r\n * @example\r\n *\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n *\r\n *\r\n * const emitter = new EventEmitter();\r\n *\r\n * emitter.on(\"a\", e => {\r\n * });\r\n *\r\n *\r\n * emitter.emit(\"a\", {\r\n * a: 1,\r\n * });\r\n */\r\n\r\n\r\n __proto.emit = function (eventName, param) {\r\n var _this = this;\r\n\r\n if (param === void 0) {\r\n param = {};\r\n }\r\n\r\n var events = this._events[eventName];\r\n\r\n if (!eventName || !events) {\r\n return true;\r\n }\r\n\r\n var isStop = false;\r\n param.eventType = eventName;\r\n\r\n param.stop = function () {\r\n isStop = true;\r\n };\r\n\r\n param.currentTarget = this;\r\n\r\n __spreadArrays$2(events).forEach(function (info) {\r\n info.listener(param);\r\n\r\n if (info.once) {\r\n _this.off(eventName, info.listener);\r\n }\r\n });\r\n\r\n return !isStop;\r\n };\r\n /**\r\n * Fires an event to call listeners.\r\n * @param - Event name\r\n * @param - Event parameter\r\n * @return If false, stop the event.\r\n * @example\r\n *\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n *\r\n *\r\n * const emitter = new EventEmitter();\r\n *\r\n * emitter.on(\"a\", e => {\r\n * });\r\n *\r\n *\r\n * emitter.emit(\"a\", {\r\n * a: 1,\r\n * });\r\n */\r\n\r\n /**\r\n * Fires an event to call listeners.\r\n * @param - Event name\r\n * @param - Event parameter\r\n * @return If false, stop the event.\r\n * @example\r\n *\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n *\r\n *\r\n * const emitter = new EventEmitter();\r\n *\r\n * emitter.on(\"a\", e => {\r\n * });\r\n *\r\n * // emit\r\n * emitter.trigger(\"a\", {\r\n * a: 1,\r\n * });\r\n */\r\n\r\n\r\n __proto.trigger = function (eventName, param) {\r\n if (param === void 0) {\r\n param = {};\r\n }\r\n\r\n return this.emit(eventName, param);\r\n };\r\n\r\n __proto._addEvent = function (eventName, listener, options) {\r\n var events = this._events;\r\n events[eventName] = events[eventName] || [];\r\n var listeners = events[eventName];\r\n listeners.push(__assign$5({\r\n listener: listener\r\n }, options));\r\n };\r\n\r\n return EventEmitter;\r\n }();\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: @scena/dragscroll\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/dragscroll.git\r\n version: 1.0.1\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n /* global Reflect, Promise */\r\n var extendStatics$4 = function (d, b) {\r\n extendStatics$4 = Object.setPrototypeOf || {\r\n __proto__: []\r\n } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n } || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n };\r\n\r\n return extendStatics$4(d, b);\r\n };\r\n\r\n function __extends$4(d, b) {\r\n extendStatics$4(d, b);\r\n\r\n function __() {\r\n this.constructor = d;\r\n }\r\n\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n function getDefaultScrollPosition$1(e) {\r\n var container = e.container;\r\n return [container.scrollLeft, container.scrollTop];\r\n }\r\n\r\n var DragScroll =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$4(DragScroll, _super);\r\n\r\n function DragScroll() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.startRect = null;\r\n _this.startPos = [];\r\n _this.prevTime = 0;\r\n _this.timer = 0;\r\n return _this;\r\n }\r\n\r\n var __proto = DragScroll.prototype;\r\n\r\n __proto.dragStart = function (e, options) {\r\n var container = options.container;\r\n var top = 0;\r\n var left = 0;\r\n var width = 0;\r\n var height = 0;\r\n\r\n if (container === document.body) {\r\n width = window.innerWidth;\r\n height = window.innerHeight;\r\n } else {\r\n var rect = container.getBoundingClientRect();\r\n top = rect.top;\r\n left = rect.left;\r\n width = rect.width;\r\n height = rect.height;\r\n }\r\n\r\n this.startPos = [e.clientX, e.clientY];\r\n this.startRect = {\r\n top: top,\r\n left: left,\r\n width: width,\r\n height: height\r\n };\r\n };\r\n\r\n __proto.drag = function (e, options) {\r\n var _this = this;\r\n\r\n var clientX = e.clientX,\r\n clientY = e.clientY;\r\n var container = options.container,\r\n _a = options.threshold,\r\n threshold = _a === void 0 ? 0 : _a,\r\n _b = options.throttleTime,\r\n throttleTime = _b === void 0 ? 0 : _b,\r\n _c = options.getScrollPosition,\r\n getScrollPosition = _c === void 0 ? getDefaultScrollPosition$1 : _c;\r\n\r\n var _d = this,\r\n startRect = _d.startRect,\r\n startPos = _d.startPos;\r\n\r\n var nowTime = now();\r\n var distTime = Math.max(throttleTime + this.prevTime - nowTime, 0);\r\n var direction = [0, 0];\r\n\r\n if (startRect.top > clientY - threshold) {\r\n if (startPos[1] > startRect.top || clientY < startPos[1]) {\r\n direction[1] = -1;\r\n }\r\n } else if (startRect.top + startRect.height < clientY + threshold) {\r\n if (startPos[1] < startRect.top + startRect.height || clientY > startPos[1]) {\r\n direction[1] = 1;\r\n }\r\n }\r\n\r\n if (startRect.left > clientX - threshold) {\r\n if (startPos[0] > startRect.left || clientX < startPos[0]) {\r\n direction[0] = -1;\r\n }\r\n } else if (startRect.left + startRect.width < clientX + threshold) {\r\n if (startPos[0] < startRect.left + startRect.width || clientX > startPos[0]) {\r\n direction[0] = 1;\r\n }\r\n }\r\n\r\n clearTimeout(this.timer);\r\n\r\n if (!direction[0] && !direction[1]) {\r\n return false;\r\n }\r\n\r\n if (distTime > 0) {\r\n this.timer = window.setTimeout(function () {\r\n _this.drag(e, options);\r\n }, distTime);\r\n return false;\r\n }\r\n\r\n this.prevTime = nowTime;\r\n var prevPos = getScrollPosition({\r\n container: container,\r\n direction: direction\r\n });\r\n this.trigger(\"scroll\", {\r\n container: container,\r\n direction: direction,\r\n inputEvent: e\r\n });\r\n var nextPos = getScrollPosition({\r\n container: container,\r\n direction: direction\r\n });\r\n var offsetX = nextPos[0] - prevPos[0];\r\n var offsetY = nextPos[1] - prevPos[1];\r\n\r\n if (!offsetX && !offsetY) {\r\n return false;\r\n }\r\n\r\n this.trigger(\"move\", {\r\n offsetX: direction[0] ? offsetX : 0,\r\n offsetY: direction[1] ? offsetY : 0,\r\n inputEvent: e\r\n });\r\n\r\n if (throttleTime) {\r\n this.timer = window.setTimeout(function () {\r\n _this.drag(e, options);\r\n }, throttleTime);\r\n }\r\n\r\n return true;\r\n };\r\n\r\n __proto.dragEnd = function () {\r\n clearTimeout(this.timer);\r\n };\r\n\r\n return DragScroll;\r\n }(EventEmitter$1);\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: gesto\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/gesture.git\r\n version: 1.3.0\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n /* global Reflect, Promise */\r\n var extendStatics$3 = function (d, b) {\r\n extendStatics$3 = Object.setPrototypeOf || {\r\n __proto__: []\r\n } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n } || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n };\r\n\r\n return extendStatics$3(d, b);\r\n };\r\n\r\n function __extends$3(d, b) {\r\n extendStatics$3(d, b);\r\n\r\n function __() {\r\n this.constructor = d;\r\n }\r\n\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n var __assign$4 = function () {\r\n __assign$4 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n\r\n return t;\r\n };\r\n\r\n return __assign$4.apply(this, arguments);\r\n };\r\n\r\n function getRad(pos1, pos2) {\r\n var distX = pos2[0] - pos1[0];\r\n var distY = pos2[1] - pos1[1];\r\n var rad = Math.atan2(distY, distX);\r\n return rad >= 0 ? rad : rad + Math.PI * 2;\r\n }\r\n function getRotatiion(touches) {\r\n return getRad([touches[0].clientX, touches[0].clientY], [touches[1].clientX, touches[1].clientY]) / Math.PI * 180;\r\n }\r\n function isMultiTouch(e) {\r\n return e.touches && e.touches.length >= 2;\r\n }\r\n function getEventClients(e) {\r\n if (e.touches) {\r\n return getClients(e.touches);\r\n } else {\r\n return [getClient(e)];\r\n }\r\n }\r\n function getPosition(clients, prevClients, startClients) {\r\n var length = startClients.length;\r\n\r\n var _a = getAverageClient(clients, length),\r\n clientX = _a.clientX,\r\n clientY = _a.clientY,\r\n originalClientX = _a.originalClientX,\r\n originalClientY = _a.originalClientY;\r\n\r\n var _b = getAverageClient(prevClients, length),\r\n prevX = _b.clientX,\r\n prevY = _b.clientY;\r\n\r\n var _c = getAverageClient(startClients, length),\r\n startX = _c.clientX,\r\n startY = _c.clientY;\r\n\r\n var deltaX = clientX - prevX;\r\n var deltaY = clientY - prevY;\r\n var distX = clientX - startX;\r\n var distY = clientY - startY;\r\n return {\r\n clientX: originalClientX,\r\n clientY: originalClientY,\r\n deltaX: deltaX,\r\n deltaY: deltaY,\r\n distX: distX,\r\n distY: distY\r\n };\r\n }\r\n function getDist$1(clients) {\r\n return Math.sqrt(Math.pow(clients[0].clientX - clients[1].clientX, 2) + Math.pow(clients[0].clientY - clients[1].clientY, 2));\r\n }\r\n function getClients(touches) {\r\n var length = Math.min(touches.length, 2);\r\n var clients = [];\r\n\r\n for (var i = 0; i < length; ++i) {\r\n clients.push(getClient(touches[i]));\r\n }\r\n\r\n return clients;\r\n }\r\n function getClient(e) {\r\n return {\r\n clientX: e.clientX,\r\n clientY: e.clientY\r\n };\r\n }\r\n function getAverageClient(clients, length) {\r\n if (length === void 0) {\r\n length = clients.length;\r\n }\r\n\r\n var sumClient = {\r\n clientX: 0,\r\n clientY: 0,\r\n originalClientX: 0,\r\n originalClientY: 0\r\n };\r\n\r\n for (var i = 0; i < length; ++i) {\r\n var client = clients[i];\r\n sumClient.originalClientX += \"originalClientX\" in client ? client.originalClientX : client.clientX;\r\n sumClient.originalClientY += \"originalClientY\" in client ? client.originalClientY : client.clientY;\r\n sumClient.clientX += client.clientX;\r\n sumClient.clientY += client.clientY;\r\n }\r\n\r\n if (!length) {\r\n return sumClient;\r\n }\r\n\r\n return {\r\n clientX: sumClient.clientX / length,\r\n clientY: sumClient.clientY / length,\r\n originalClientX: sumClient.originalClientX / length,\r\n originalClientY: sumClient.originalClientY / length\r\n };\r\n }\r\n\r\n var ClientStore =\r\n /*#__PURE__*/\r\n function () {\r\n function ClientStore(clients) {\r\n this.prevClients = [];\r\n this.startClients = [];\r\n this.movement = 0;\r\n this.length = 0;\r\n this.startClients = clients;\r\n this.prevClients = clients;\r\n this.length = clients.length;\r\n }\r\n\r\n var __proto = ClientStore.prototype;\r\n\r\n __proto.addClients = function (clients) {\r\n if (clients === void 0) {\r\n clients = this.prevClients;\r\n }\r\n\r\n var position = this.getPosition(clients);\r\n var deltaX = position.deltaX,\r\n deltaY = position.deltaY;\r\n this.movement += Math.sqrt(deltaX * deltaX + deltaY * deltaY);\r\n this.prevClients = clients;\r\n return position;\r\n };\r\n\r\n __proto.getAngle = function (clients) {\r\n if (clients === void 0) {\r\n clients = this.prevClients;\r\n }\r\n\r\n return getRotatiion(clients);\r\n };\r\n\r\n __proto.getRotation = function (clients) {\r\n if (clients === void 0) {\r\n clients = this.prevClients;\r\n }\r\n\r\n return getRotatiion(clients) - getRotatiion(this.startClients);\r\n };\r\n\r\n __proto.getPosition = function (clients) {\r\n return getPosition(clients || this.prevClients, this.prevClients, this.startClients);\r\n };\r\n\r\n __proto.getPositions = function (clients) {\r\n if (clients === void 0) {\r\n clients = this.prevClients;\r\n }\r\n\r\n var prevClients = this.prevClients;\r\n return this.startClients.map(function (startClient, i) {\r\n return getPosition([clients[i]], [prevClients[i]], [startClient]);\r\n });\r\n };\r\n\r\n __proto.getMovement = function (clients) {\r\n var movement = this.movement;\r\n\r\n if (!clients) {\r\n return movement;\r\n }\r\n\r\n var currentClient = getAverageClient(clients, this.length);\r\n var prevClient = getAverageClient(this.prevClients, this.length);\r\n var deltaX = currentClient.clientX - prevClient.clientX;\r\n var deltaY = currentClient.clientY - prevClient.clientY;\r\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY) + movement;\r\n };\r\n\r\n __proto.getDistance = function (clients) {\r\n if (clients === void 0) {\r\n clients = this.prevClients;\r\n }\r\n\r\n return getDist$1(clients);\r\n };\r\n\r\n __proto.getScale = function (clients) {\r\n if (clients === void 0) {\r\n clients = this.prevClients;\r\n }\r\n\r\n return getDist$1(clients) / getDist$1(this.startClients);\r\n };\r\n\r\n __proto.move = function (deltaX, deltaY) {\r\n this.startClients.forEach(function (client) {\r\n client.clientX -= deltaX;\r\n client.clientY -= deltaY;\r\n });\r\n this.prevClients.forEach(function (client) {\r\n client.clientX -= deltaX;\r\n client.clientY -= deltaY;\r\n });\r\n };\r\n\r\n return ClientStore;\r\n }();\r\n\r\n var INPUT_TAGNAMES = [\"textarea\", \"input\"];\r\n /**\r\n * You can set up drag, pinch events in any browser.\r\n */\r\n\r\n var Gesto =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$3(Gesto, _super);\r\n /**\r\n *\r\n */\r\n\r\n\r\n function Gesto(targets, options) {\r\n if (options === void 0) {\r\n options = {};\r\n }\r\n\r\n var _this = _super.call(this) || this;\r\n\r\n _this.options = {};\r\n _this.flag = false;\r\n _this.pinchFlag = false;\r\n _this.datas = {};\r\n _this.isDrag = false;\r\n _this.isPinch = false;\r\n _this.isMouse = false;\r\n _this.isTouch = false;\r\n _this.clientStores = [];\r\n _this.targets = [];\r\n _this.prevTime = 0;\r\n _this.doubleFlag = false;\r\n\r\n _this.onDragStart = function (e, isTrusted) {\r\n if (isTrusted === void 0) {\r\n isTrusted = true;\r\n }\r\n\r\n if (!_this.flag && e.cancelable === false) {\r\n return;\r\n }\r\n\r\n var _a = _this.options,\r\n container = _a.container,\r\n pinchOutside = _a.pinchOutside,\r\n preventRightClick = _a.preventRightClick,\r\n preventDefault = _a.preventDefault,\r\n checkInput = _a.checkInput;\r\n var isTouch = _this.isTouch;\r\n var isDragStart = !_this.flag;\r\n\r\n if (isDragStart) {\r\n var activeElement = document.activeElement;\r\n var target = e.target;\r\n var tagName = target.tagName.toLowerCase();\r\n var hasInput = INPUT_TAGNAMES.indexOf(tagName) > -1;\r\n var hasContentEditable = target.isContentEditable;\r\n\r\n if (hasInput || hasContentEditable) {\r\n if (checkInput || activeElement === target) {\r\n // force false or already focused.\r\n return false;\r\n }\r\n\r\n if (activeElement && hasContentEditable && activeElement.isContentEditable && activeElement.contains(target)) {\r\n return false;\r\n }\r\n } else if ((preventDefault || e.type === \"touchstart\") && activeElement) {\r\n var activeTagName = activeElement.tagName;\r\n\r\n if (activeElement.isContentEditable || INPUT_TAGNAMES.indexOf(activeTagName) > -1) {\r\n activeElement.blur();\r\n }\r\n }\r\n\r\n _this.clientStores = [new ClientStore(getEventClients(e))];\r\n _this.flag = true;\r\n _this.isDrag = false;\r\n _this.datas = {};\r\n\r\n if (preventRightClick && (e.which === 3 || e.button === 2)) {\r\n _this.initDrag();\r\n\r\n return false;\r\n }\r\n\r\n _this.doubleFlag = now() - _this.prevTime < 200;\r\n\r\n var result = _this.emit(\"dragStart\", __assign$4({\r\n datas: _this.datas,\r\n inputEvent: e,\r\n isTrusted: isTrusted,\r\n isDouble: _this.doubleFlag\r\n }, _this.getCurrentStore().getPosition()));\r\n\r\n if (result === false) {\r\n _this.initDrag();\r\n }\r\n\r\n _this.flag && preventDefault && e.preventDefault();\r\n }\r\n\r\n if (!_this.flag) {\r\n return false;\r\n }\r\n\r\n var timer = 0;\r\n\r\n if (isDragStart && isTouch && pinchOutside) {\r\n timer = setTimeout(function () {\r\n addEvent(container, \"touchstart\", _this.onDragStart, {\r\n passive: false\r\n });\r\n });\r\n }\r\n\r\n if (!isDragStart && isTouch && pinchOutside) {\r\n removeEvent(container, \"touchstart\", _this.onDragStart);\r\n }\r\n\r\n if (_this.flag && isMultiTouch(e)) {\r\n clearTimeout(timer);\r\n\r\n if (isDragStart && e.touches.length !== e.changedTouches.length) {\r\n return;\r\n }\r\n\r\n if (!_this.pinchFlag) {\r\n _this.onPinchStart(e);\r\n }\r\n }\r\n };\r\n\r\n _this.onDrag = function (e, isScroll) {\r\n if (!_this.flag) {\r\n return;\r\n }\r\n\r\n var clients = getEventClients(e);\r\n\r\n var result = _this.moveClients(clients, e, false);\r\n\r\n if (_this.pinchFlag || result.deltaX || result.deltaY) {\r\n _this.emit(\"drag\", __assign$4({}, result, {\r\n isScroll: !!isScroll,\r\n inputEvent: e\r\n }));\r\n }\r\n\r\n if (_this.pinchFlag) {\r\n _this.onPinch(e, clients);\r\n }\r\n\r\n _this.getCurrentStore().addClients(clients);\r\n };\r\n\r\n _this.onDragEnd = function (e) {\r\n if (!_this.flag) {\r\n return;\r\n }\r\n\r\n var _a = _this.options,\r\n pinchOutside = _a.pinchOutside,\r\n container = _a.container;\r\n\r\n if (_this.isTouch && pinchOutside) {\r\n removeEvent(container, \"touchstart\", _this.onDragStart);\r\n }\r\n\r\n _this.flag = false;\r\n\r\n var position = _this.getCurrentStore().getPosition();\r\n\r\n var currentTime = now();\r\n var isDouble = !_this.isDrag && _this.doubleFlag;\r\n _this.prevTime = _this.isDrag || isDouble ? 0 : currentTime;\r\n\r\n _this.emit(\"dragEnd\", __assign$4({\r\n datas: _this.datas,\r\n isDouble: isDouble,\r\n isDrag: _this.isDrag,\r\n inputEvent: e\r\n }, position));\r\n\r\n if (_this.pinchFlag) {\r\n _this.onPinchEnd(e);\r\n }\r\n\r\n _this.clientStores = [];\r\n };\r\n\r\n _this.onBlur = function () {\r\n _this.onDragEnd();\r\n };\r\n\r\n var elements = [].concat(targets);\r\n _this.options = __assign$4({\r\n checkInput: false,\r\n container: elements.length > 1 ? window : elements[0],\r\n preventRightClick: true,\r\n preventDefault: true,\r\n checkWindowBlur: false,\r\n pinchThreshold: 0,\r\n events: [\"touch\", \"mouse\"]\r\n }, options);\r\n var _a = _this.options,\r\n container = _a.container,\r\n events = _a.events,\r\n checkWindowBlur = _a.checkWindowBlur;\r\n _this.isTouch = events.indexOf(\"touch\") > -1;\r\n _this.isMouse = events.indexOf(\"mouse\") > -1;\r\n _this.targets = elements;\r\n\r\n if (_this.isMouse) {\r\n elements.forEach(function (el) {\r\n addEvent(el, \"mousedown\", _this.onDragStart);\r\n });\r\n addEvent(container, \"mousemove\", _this.onDrag);\r\n addEvent(container, \"mouseup\", _this.onDragEnd);\r\n addEvent(container, \"contextmenu\", _this.onDragEnd);\r\n }\r\n\r\n if (checkWindowBlur) {\r\n addEvent(window, \"blur\", _this.onBlur);\r\n }\r\n\r\n if (_this.isTouch) {\r\n var passive_1 = {\r\n passive: false\r\n };\r\n elements.forEach(function (el) {\r\n addEvent(el, \"touchstart\", _this.onDragStart, passive_1);\r\n });\r\n addEvent(container, \"touchmove\", _this.onDrag, passive_1);\r\n addEvent(container, \"touchend\", _this.onDragEnd, passive_1);\r\n addEvent(container, \"touchcancel\", _this.onDragEnd, passive_1);\r\n }\r\n\r\n return _this;\r\n }\r\n /**\r\n * The total moved distance\r\n */\r\n\r\n\r\n var __proto = Gesto.prototype;\r\n\r\n __proto.getMovement = function (clients) {\r\n return this.getCurrentStore().getMovement(clients) + this.clientStores.slice(1).reduce(function (prev, cur) {\r\n return prev + cur.movement;\r\n }, 0);\r\n };\r\n /**\r\n * Whether to drag\r\n */\r\n\r\n\r\n __proto.isDragging = function () {\r\n return this.isDrag;\r\n };\r\n /**\r\n * Whether to start drag\r\n */\r\n\r\n\r\n __proto.isFlag = function () {\r\n return this.flag;\r\n };\r\n /**\r\n * Whether to start pinch\r\n */\r\n\r\n\r\n __proto.isPinchFlag = function () {\r\n return this.pinchFlag;\r\n };\r\n /**\r\n * Whether to start double click\r\n */\r\n\r\n\r\n __proto.isDoubleFlag = function () {\r\n return this.doubleFlag;\r\n };\r\n /**\r\n * Whether to pinch\r\n */\r\n\r\n\r\n __proto.isPinching = function () {\r\n return this.isPinch;\r\n };\r\n /**\r\n * If a scroll event occurs, it is corrected by the scroll distance.\r\n */\r\n\r\n\r\n __proto.scrollBy = function (deltaX, deltaY, e, isCallDrag) {\r\n if (isCallDrag === void 0) {\r\n isCallDrag = true;\r\n }\r\n\r\n if (!this.flag) {\r\n return;\r\n }\r\n\r\n this.clientStores[0].move(deltaX, deltaY);\r\n isCallDrag && this.onDrag(e, true);\r\n };\r\n /**\r\n * Create a virtual drag event.\r\n */\r\n\r\n\r\n __proto.move = function (_a, inputEvent) {\r\n var deltaX = _a[0],\r\n deltaY = _a[1];\r\n var store = this.getCurrentStore();\r\n var nextClients = store.prevClients;\r\n return this.moveClients(nextClients.map(function (_a) {\r\n var clientX = _a.clientX,\r\n clientY = _a.clientY;\r\n return {\r\n clientX: clientX + deltaX,\r\n clientY: clientY + deltaY,\r\n originalClientX: clientX,\r\n originalClientY: clientY\r\n };\r\n }), inputEvent, true);\r\n };\r\n /**\r\n * The dragStart event is triggered by an external event.\r\n */\r\n\r\n\r\n __proto.triggerDragStart = function (e) {\r\n this.onDragStart(e, false);\r\n };\r\n /**\r\n * Set the event data while dragging.\r\n */\r\n\r\n\r\n __proto.setEventDatas = function (datas) {\r\n var currentDatas = this.datas;\r\n\r\n for (var name in datas) {\r\n currentDatas[name] = datas[name];\r\n }\r\n\r\n return this;\r\n };\r\n /**\r\n * Set the event data while dragging.\r\n */\r\n\r\n\r\n __proto.getEventDatas = function () {\r\n return this.datas;\r\n };\r\n /**\r\n * Unset Gesto\r\n */\r\n\r\n\r\n __proto.unset = function () {\r\n var _this = this;\r\n\r\n var targets = this.targets;\r\n var container = this.options.container;\r\n this.off();\r\n removeEvent(window, \"blur\", this.onBlur);\r\n\r\n if (this.isMouse) {\r\n targets.forEach(function (target) {\r\n removeEvent(target, \"mousedown\", _this.onDragStart);\r\n });\r\n removeEvent(container, \"mousemove\", this.onDrag);\r\n removeEvent(container, \"mouseup\", this.onDragEnd);\r\n removeEvent(container, \"contextmenu\", this.onDragEnd);\r\n }\r\n\r\n if (this.isTouch) {\r\n targets.forEach(function (target) {\r\n removeEvent(target, \"touchstart\", _this.onDragStart);\r\n });\r\n removeEvent(container, \"touchstart\", this.onDragStart);\r\n removeEvent(container, \"touchmove\", this.onDrag);\r\n removeEvent(container, \"touchend\", this.onDragEnd);\r\n removeEvent(container, \"touchcancel\", this.onDragEnd);\r\n }\r\n };\r\n\r\n __proto.onPinchStart = function (e) {\r\n var pinchThreshold = this.options.pinchThreshold;\r\n\r\n if (this.isDrag && this.getMovement() > pinchThreshold) {\r\n return;\r\n }\r\n\r\n var store = new ClientStore(getEventClients(e));\r\n this.pinchFlag = true;\r\n this.clientStores.splice(0, 0, store);\r\n var result = this.emit(\"pinchStart\", __assign$4({\r\n datas: this.datas,\r\n angle: store.getAngle(),\r\n touches: this.getCurrentStore().getPositions()\r\n }, store.getPosition(), {\r\n inputEvent: e\r\n }));\r\n\r\n if (result === false) {\r\n this.pinchFlag = false;\r\n }\r\n };\r\n\r\n __proto.onPinch = function (e, clients) {\r\n if (!this.flag || !this.pinchFlag || clients.length < 2) {\r\n return;\r\n }\r\n\r\n var store = this.getCurrentStore();\r\n this.isPinch = true;\r\n this.emit(\"pinch\", __assign$4({\r\n datas: this.datas,\r\n movement: this.getMovement(clients),\r\n angle: store.getAngle(clients),\r\n rotation: store.getRotation(clients),\r\n touches: store.getPositions(clients),\r\n scale: store.getScale(clients),\r\n distance: store.getDistance(clients)\r\n }, store.getPosition(clients), {\r\n inputEvent: e\r\n }));\r\n };\r\n\r\n __proto.onPinchEnd = function (e) {\r\n if (!this.pinchFlag) {\r\n return;\r\n }\r\n\r\n var isPinch = this.isPinch;\r\n this.isPinch = false;\r\n this.pinchFlag = false;\r\n var store = this.getCurrentStore();\r\n this.emit(\"pinchEnd\", __assign$4({\r\n datas: this.datas,\r\n isPinch: isPinch,\r\n touches: store.getPositions()\r\n }, store.getPosition(), {\r\n inputEvent: e\r\n }));\r\n this.isPinch = false;\r\n this.pinchFlag = false;\r\n };\r\n\r\n __proto.initDrag = function () {\r\n this.clientStores = [];\r\n this.pinchFlag = false;\r\n this.doubleFlag = false;\r\n this.prevTime = 0;\r\n this.flag = false;\r\n };\r\n\r\n __proto.getCurrentStore = function () {\r\n return this.clientStores[0];\r\n };\r\n\r\n __proto.moveClients = function (clients, inputEvent, isAdd) {\r\n var store = this.getCurrentStore();\r\n var position = store[isAdd ? \"addClients\" : \"getPosition\"](clients);\r\n this.isDrag = true;\r\n return __assign$4({\r\n datas: this.datas\r\n }, position, {\r\n movement: this.getMovement(clients),\r\n isDrag: this.isDrag,\r\n isPinch: this.isPinch,\r\n isScroll: false,\r\n inputEvent: inputEvent\r\n });\r\n };\r\n\r\n return Gesto;\r\n }(EventEmitter$1);\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: css-styled\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/css-styled.git\r\n version: 1.0.0\r\n */\r\n\r\n function hash(str) {\r\n var hash = 5381,\r\n i = str.length;\r\n\r\n while(i) {\r\n hash = (hash * 33) ^ str.charCodeAt(--i);\r\n }\r\n\r\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\r\n * integers. Since we want the results to be always positive, convert the\r\n * signed int to an unsigned by doing an unsigned bitshift. */\r\n return hash >>> 0;\r\n }\r\n\r\n var stringHash = hash;\r\n\r\n function getHash(str) {\r\n return stringHash(str).toString(36);\r\n }\r\n function getShadowRoot(parentElement) {\r\n if (parentElement && parentElement.getRootNode) {\r\n var rootNode = parentElement.getRootNode();\r\n\r\n if (rootNode.nodeType === 11) {\r\n return rootNode;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n function replaceStyle(className, css, options) {\r\n if (options.original) {\r\n return css;\r\n }\r\n\r\n return css.replace(/([^};{\\s}][^};{]*|^\\s*){/mg, function (_, selector) {\r\n var trimmedSelector = selector.trim();\r\n return (trimmedSelector ? splitComma(trimmedSelector) : [\"\"]).map(function (subSelector) {\r\n var trimmedSubSelector = subSelector.trim();\r\n\r\n if (trimmedSubSelector.indexOf(\"@\") === 0) {\r\n return trimmedSubSelector;\r\n } else if (trimmedSubSelector.indexOf(\":global\") > -1) {\r\n return trimmedSubSelector.replace(/\\:global/g, \"\");\r\n } else if (trimmedSubSelector.indexOf(\":host\") > -1) {\r\n return \"\" + trimmedSubSelector.replace(/\\:host/g, \".\" + className);\r\n } else if (trimmedSubSelector) {\r\n return \".\" + className + \" \" + trimmedSubSelector;\r\n } else {\r\n return \".\" + className;\r\n }\r\n }).join(\", \") + \" {\";\r\n });\r\n }\r\n function injectStyle(className, css, options, shadowRoot) {\r\n var style = document.createElement(\"style\");\r\n style.setAttribute(\"type\", \"text/css\");\r\n style.setAttribute(\"data-styled-id\", className);\r\n\r\n if (options.nonce) {\r\n style.setAttribute(\"nonce\", options.nonce);\r\n }\r\n\r\n style.innerHTML = replaceStyle(className, css, options);\r\n (shadowRoot || document.head || document.body).appendChild(style);\r\n return style;\r\n }\r\n\r\n /**\r\n * Create an styled object that can be defined and inserted into the css.\r\n * @param - css styles\r\n */\r\n\r\n function styled$1(css) {\r\n var injectClassName = \"rCS\" + getHash(css);\r\n var injectCount = 0;\r\n var injectElement;\r\n return {\r\n className: injectClassName,\r\n inject: function (el, options) {\r\n if (options === void 0) {\r\n options = {};\r\n }\r\n\r\n var shadowRoot = getShadowRoot(el);\r\n var firstMount = injectCount === 0;\r\n var styleElement;\r\n\r\n if (shadowRoot || firstMount) {\r\n styleElement = injectStyle(injectClassName, css, options, shadowRoot);\r\n }\r\n\r\n if (firstMount) {\r\n injectElement = styleElement;\r\n }\r\n\r\n if (!shadowRoot) {\r\n ++injectCount;\r\n }\r\n\r\n return {\r\n destroy: function () {\r\n if (shadowRoot) {\r\n el.removeChild(styleElement);\r\n styleElement = null;\r\n } else {\r\n if (injectCount > 0) {\r\n --injectCount;\r\n }\r\n\r\n if (injectCount === 0 && injectElement) {\r\n injectElement.parentNode.removeChild(injectElement);\r\n injectElement = null;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n };\r\n }\r\n\r\n /*\r\n Copyright (c) Daybrush\r\n name: react-compat-css-styled\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/css-styled.git\r\n version: 1.0.6\r\n */\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: react-css-styled\r\n license: MIT\r\n author: Daybrush\r\n repository: https://github.com/daybrush/css-styled/tree/master/packages/react-css-styled\r\n version: 1.0.2\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n /* global Reflect, Promise */\r\n var extendStatics$2 = function (d, b) {\r\n extendStatics$2 = Object.setPrototypeOf || {\r\n __proto__: []\r\n } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n } || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n };\r\n\r\n return extendStatics$2(d, b);\r\n };\r\n\r\n function __extends$2(d, b) {\r\n extendStatics$2(d, b);\r\n\r\n function __() {\r\n this.constructor = d;\r\n }\r\n\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n var __assign$3 = function () {\r\n __assign$3 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n\r\n return t;\r\n };\r\n\r\n return __assign$3.apply(this, arguments);\r\n };\r\n function __rest$1(s, e) {\r\n var t = {};\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\r\n\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n }\r\n\r\n var StyledElement =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$2(StyledElement, _super);\r\n\r\n function StyledElement() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.injectResult = null;\r\n _this.tag = \"div\";\r\n return _this;\r\n }\r\n\r\n var __proto = StyledElement.prototype;\r\n\r\n __proto.render = function () {\r\n var _a = this.props,\r\n _b = _a.className,\r\n className = _b === void 0 ? \"\" : _b;\r\n _a.cspNonce;\r\n var portalContainer = _a.portalContainer,\r\n attributes = __rest$1(_a, [\"className\", \"cspNonce\", \"portalContainer\"]);\r\n\r\n var cssId = this.injector.className;\r\n var Tag = this.tag;\r\n var portalAttributes = {};\r\n\r\n if ((version ).indexOf(\"simple\") > -1 && portalContainer) {\r\n portalAttributes = {\r\n portalContainer: portalContainer\r\n };\r\n }\r\n\r\n return createElement(Tag, __assign$3({\r\n \"ref\": ref(this, \"element\"),\r\n \"data-styled-id\": cssId,\r\n \"className\": className + \" \" + cssId\r\n }, portalAttributes, attributes));\r\n };\r\n\r\n __proto.componentDidMount = function () {\r\n this.injectResult = this.injector.inject(this.element, {\r\n nonce: this.props.cspNonce\r\n });\r\n };\r\n\r\n __proto.componentWillUnmount = function () {\r\n this.injectResult.destroy();\r\n this.injectResult = null;\r\n };\r\n\r\n __proto.getElement = function () {\r\n return this.element;\r\n };\r\n\r\n return StyledElement;\r\n }(Component);\r\n\r\n function styled(tag, css) {\r\n var injector = styled$1(css);\r\n return (\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$2(Styled, _super);\r\n\r\n function Styled() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.injector = injector;\r\n _this.tag = tag;\r\n return _this;\r\n }\r\n\r\n return Styled;\r\n }(StyledElement)\r\n );\r\n }\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: react-compat-moveable\r\n license: MIT\r\n author: Daybrush\r\n repository: https://github.com/daybrush/moveable/blob/master/packages/react-compat-moveable\r\n version: 0.12.5\r\n */\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: react-moveable\r\n license: MIT\r\n author: Daybrush\r\n repository: https://github.com/daybrush/moveable/blob/master/packages/react-moveable\r\n version: 0.27.5\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n /* global Reflect, Promise */\r\n var extendStatics$1 = function (d, b) {\r\n extendStatics$1 = Object.setPrototypeOf || {\r\n __proto__: []\r\n } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n } || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n };\r\n\r\n return extendStatics$1(d, b);\r\n };\r\n\r\n function __extends$1(d, b) {\r\n extendStatics$1(d, b);\r\n\r\n function __() {\r\n this.constructor = d;\r\n }\r\n\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n var __assign$2 = function () {\r\n __assign$2 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n\r\n return t;\r\n };\r\n\r\n return __assign$2.apply(this, arguments);\r\n };\r\n function __rest(s, e) {\r\n var t = {};\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\r\n\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n }\r\n function __decorate$1(decorators, target, key, desc) {\r\n var c = arguments.length,\r\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\r\n d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n }\r\n function __spreadArrays$1() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\r\n\r\n return r;\r\n }\r\n\r\n function getSVGCursor(scale, degree) {\r\n return \"data:image/svg+xml;utf8,\";\r\n }\r\n\r\n function getCursorCSS(degree) {\r\n var x1 = getSVGCursor(1, degree);\r\n var x2 = getSVGCursor(2, degree);\r\n var degree45 = Math.round(degree / 45) * 45 % 180;\r\n var defaultCursor = \"ns-resize\";\r\n\r\n if (degree45 === 135) {\r\n defaultCursor = \"nwse-resize\";\r\n } else if (degree45 === 45) {\r\n defaultCursor = \"nesw-resize\";\r\n } else if (degree45 === 90) {\r\n defaultCursor = \"ew-resize\";\r\n } // tslint:disable-next-line: max-line-length\r\n\r\n\r\n return \"cursor:\" + defaultCursor + \";cursor: url('\" + x1 + \"') 16 16, \" + defaultCursor + \";cursor: -webkit-image-set(url('\" + x1 + \"') 1x, url('\" + x2 + \"') 2x) 16 16, \" + defaultCursor + \";\";\r\n }\r\n\r\n var agent = agent$1();\r\n var IS_WEBKIT = agent.browser.webkit;\r\n var IS_WEBKIT605 = IS_WEBKIT && function () {\r\n var res = /applewebkit\\/([^\\s]+)/g.exec(navigator.userAgent.toLowerCase());\r\n return res ? parseFloat(res[1]) < 605 : false;\r\n }();\r\n var PREFIX = \"moveable-\";\r\n var MOVEABLE_CSS = \"\\n{\\n\\tposition: absolute;\\n\\twidth: 1px;\\n\\theight: 1px;\\n\\tleft: 0;\\n\\ttop: 0;\\n z-index: 3000;\\n --moveable-color: #4af;\\n --zoom: 1;\\n --zoompx: 1px;\\n will-change: transform;\\n}\\n.control-box {\\n z-index: 0;\\n}\\n.line, .control {\\n position: absolute;\\n\\tleft: 0;\\n top: 0;\\n will-change: transform;\\n}\\n.control {\\n\\twidth: 14px;\\n\\theight: 14px;\\n\\tborder-radius: 50%;\\n\\tborder: 2px solid #fff;\\n\\tbox-sizing: border-box;\\n background: #4af;\\n background: var(--moveable-color);\\n\\tmargin-top: -7px;\\n margin-left: -7px;\\n border: 2px solid #fff;\\n z-index: 10;\\n}\\n.padding {\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: 100px;\\n height: 100px;\\n transform-origin: 0 0;\\n}\\n.line {\\n\\twidth: 1px;\\n height: 1px;\\n background: #4af;\\n background: var(--moveable-color);\\n\\ttransform-origin: 0px 50%;\\n}\\n.line.dashed {\\n box-sizing: border-box;\\n background: transparent;\\n}\\n.line.dashed.horizontal {\\n border-top: 1px dashed #4af;\\n border-top-color: #4af;\\n border-top-color: var(--moveable-color);\\n}\\n.line.dashed.vertical {\\n border-left: 1px dashed #4af;\\n border-left-color: #4af;\\n border-left-color: var(--moveable-color);\\n}\\n.line.vertical {\\n transform: translateX(-50%);\\n}\\n.line.horizontal {\\n transform: translateY(-50%);\\n}\\n.line.vertical.bold {\\n width: 2px;\\n}\\n.line.horizontal.bold {\\n height: 2px;\\n}\\n\\n.control.origin {\\n\\tborder-color: #f55;\\n\\tbackground: #fff;\\n\\twidth: 12px;\\n\\theight: 12px;\\n\\tmargin-top: -6px;\\n margin-left: -6px;\\n\\tpointer-events: none;\\n}\\n\" + [0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165].map(function (degree) {\r\n return \"\\n.direction[data-rotation=\\\"\" + degree + \"\\\"] {\\n\\t\" + getCursorCSS(degree) + \"\\n}\\n\";\r\n }).join(\"\\n\") + \"\\n.group {\\n z-index: -1;\\n}\\n.area {\\n position: absolute;\\n}\\n.area-pieces {\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: none;\\n}\\n.area.avoid, .area.pass {\\n pointer-events: none;\\n}\\n.area.avoid+.area-pieces {\\n display: block;\\n}\\n.area-piece {\\n position: absolute;\\n}\\n\\n\" + (IS_WEBKIT605 ? \":global svg *:before {\\n\\tcontent:\\\"\\\";\\n\\ttransform-origin: inherit;\\n}\" : \"\") + \"\\n\";\r\n var NEARBY_POS = [[0, 1, 2], [1, 0, 3], [2, 0, 3], [3, 1, 2]];\r\n var TINY_NUM = 0.0000001;\r\n var MIN_SCALE = 0.000000001;\r\n var MAX_NUM = Math.pow(10, 10);\r\n var MIN_NUM = -MAX_NUM;\r\n var DIRECTIONS = [\"n\", \"w\", \"s\", \"e\", \"nw\", \"ne\", \"sw\", \"se\"];\r\n var DIRECTION_INDEXES = {\r\n n: [0, 1],\r\n s: [2, 3],\r\n w: [2, 0],\r\n e: [1, 3],\r\n nw: [0],\r\n ne: [1],\r\n sw: [2],\r\n se: [3]\r\n };\r\n var DIRECTION_ROTATIONS = {\r\n n: 0,\r\n s: 180,\r\n w: 270,\r\n e: 90,\r\n nw: 315,\r\n ne: 45,\r\n sw: 225,\r\n se: 135\r\n };\r\n var MOVEABLE_METHODS = [\"isMoveableElement\", \"updateRect\", \"updateTarget\", \"destroy\", \"dragStart\", \"isInside\", \"hitTest\", \"setState\", \"getRect\", \"request\", \"isDragging\", \"getManager\"];\r\n\r\n function multiply2(pos1, pos2) {\r\n return [pos1[0] * pos2[0], pos1[1] * pos2[1]];\r\n }\r\n function prefix() {\r\n var classNames = [];\r\n\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n classNames[_i] = arguments[_i];\r\n }\r\n\r\n return prefixNames.apply(void 0, __spreadArrays$1([PREFIX], classNames));\r\n }\r\n function getTransformMatrix(transform) {\r\n if (!transform || transform === \"none\") {\r\n return [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n if (isObject(transform)) {\r\n return transform;\r\n }\r\n\r\n var value = splitBracket(transform).value;\r\n return value.split(/s*,\\s*/g).map(function (v) {\r\n return parseFloat(v);\r\n });\r\n }\r\n function getAbsoluteMatrix(matrix, n, origin) {\r\n return multiplies(n, createOriginMatrix(origin, n), matrix, createOriginMatrix(origin.map(function (a) {\r\n return -a;\r\n }), n));\r\n }\r\n function measureSVGSize(el, unit, isHorizontal) {\r\n if (unit === \"%\") {\r\n var viewBox = getSVGViewBox(el.ownerSVGElement);\r\n return viewBox[isHorizontal ? \"width\" : \"height\"] / 100;\r\n }\r\n\r\n return 1;\r\n }\r\n function getBeforeTransformOrigin(el) {\r\n var relativeOrigin = getTransformOrigin(getComputedStyle$1(el, \":before\"));\r\n return relativeOrigin.map(function (o, i) {\r\n var _a = splitUnit(o),\r\n value = _a.value,\r\n unit = _a.unit;\r\n\r\n return value * measureSVGSize(el, unit, i === 0);\r\n });\r\n }\r\n function getTransformOrigin(style) {\r\n var transformOrigin = style.transformOrigin;\r\n return transformOrigin ? transformOrigin.split(\" \") : [\"0\", \"0\"];\r\n }\r\n function getOffsetInfo(el, lastParent, isParent) {\r\n var body = document.body;\r\n var target = !el || isParent ? el : el.parentElement;\r\n var isEnd = el === lastParent || target === lastParent;\r\n var position = \"relative\";\r\n\r\n while (target && target !== body) {\r\n if (lastParent === target) {\r\n isEnd = true;\r\n }\r\n\r\n var style = getComputedStyle$1(target);\r\n var transform = style.transform;\r\n position = style.position;\r\n\r\n if (target.tagName.toLowerCase() === \"svg\" || position !== \"static\" || transform && transform !== \"none\") {\r\n break;\r\n }\r\n\r\n target = target.parentElement;\r\n position = \"relative\";\r\n }\r\n\r\n return {\r\n isStatic: position === \"static\",\r\n isEnd: isEnd || !target || target === body,\r\n offsetParent: target || body\r\n };\r\n }\r\n function getOffsetPosInfo(el, container, style, isFixed) {\r\n var _a;\r\n\r\n var tagName = el.tagName.toLowerCase();\r\n var offsetLeft = el.offsetLeft;\r\n var offsetTop = el.offsetTop;\r\n\r\n if (isFixed) {\r\n var containerClientRect = (container || document.documentElement).getBoundingClientRect();\r\n offsetLeft -= containerClientRect.left;\r\n offsetTop -= containerClientRect.top;\r\n } // svg\r\n\r\n\r\n var isSVG = isUndefined(offsetLeft);\r\n var hasOffset = !isSVG;\r\n var origin;\r\n var targetOrigin; // inner svg element\r\n\r\n if (!hasOffset && tagName !== \"svg\") {\r\n origin = IS_WEBKIT605 ? getBeforeTransformOrigin(el) : getTransformOrigin(style).map(function (pos) {\r\n return parseFloat(pos);\r\n });\r\n targetOrigin = origin.slice();\r\n hasOffset = true;\r\n _a = getSVGGraphicsOffset(el, origin), offsetLeft = _a[0], offsetTop = _a[1], origin[0] = _a[2], origin[1] = _a[3];\r\n } else {\r\n origin = getTransformOrigin(style).map(function (pos) {\r\n return parseFloat(pos);\r\n });\r\n targetOrigin = origin.slice();\r\n }\r\n\r\n return {\r\n tagName: tagName,\r\n isSVG: isSVG,\r\n hasOffset: hasOffset,\r\n offset: [offsetLeft || 0, offsetTop || 0],\r\n origin: origin,\r\n targetOrigin: targetOrigin\r\n };\r\n }\r\n function getBodyOffset(el, isSVG, style) {\r\n if (style === void 0) {\r\n style = window.getComputedStyle(el);\r\n }\r\n\r\n var bodyStyle = window.getComputedStyle(document.body);\r\n var bodyPosition = bodyStyle.position;\r\n\r\n if (!isSVG && (!bodyPosition || bodyPosition === \"static\")) {\r\n return [0, 0];\r\n }\r\n\r\n var marginLeft = parseInt(bodyStyle.marginLeft, 10);\r\n var marginTop = parseInt(bodyStyle.marginTop, 10);\r\n\r\n if (style.position === \"absolute\") {\r\n if (style.top !== \"auto\" || style.bottom !== \"auto\") {\r\n marginTop = 0;\r\n }\r\n\r\n if (style.left !== \"auto\" || style.right !== \"auto\") {\r\n marginLeft = 0;\r\n }\r\n }\r\n\r\n return [marginLeft, marginTop];\r\n }\r\n function getMatrixStackInfo(target, container) {\r\n var el = target;\r\n var matrixes = [];\r\n var isEnd = false;\r\n var is3d = false;\r\n var n = 3;\r\n var transformOrigin;\r\n var targetTransformOrigin;\r\n var targetMatrix;\r\n var offsetContainer = getOffsetInfo(container, container, true).offsetParent; // if (prevMatrix) {\r\n // isEnd = target === container;\r\n // if (prevMatrix.length > 10) {\r\n // is3d = true;\r\n // n = 4;\r\n // }\r\n // container = target.parentElement;\r\n // }\r\n\r\n while (el && !isEnd) {\r\n var style = getComputedStyle$1(el);\r\n var position = style.position;\r\n var isFixed = position === \"fixed\";\r\n var matrix = convertCSStoMatrix(getTransformMatrix(style.transform)); // convert 3 to 4\r\n\r\n var length = matrix.length;\r\n\r\n if (!is3d && length === 16) {\r\n is3d = true;\r\n n = 4;\r\n var matrixesLength = matrixes.length;\r\n\r\n for (var i = 0; i < matrixesLength; ++i) {\r\n matrixes[i] = convertDimension(matrixes[i], 3, 4);\r\n }\r\n }\r\n\r\n if (is3d && length === 9) {\r\n matrix = convertDimension(matrix, 3, 4);\r\n }\r\n\r\n var _a = getOffsetPosInfo(el, container, style, isFixed),\r\n tagName = _a.tagName,\r\n hasOffset = _a.hasOffset,\r\n isSVG = _a.isSVG,\r\n origin = _a.origin,\r\n targetOrigin = _a.targetOrigin,\r\n offsetPos = _a.offset;\r\n\r\n var offsetLeft = offsetPos[0],\r\n offsetTop = offsetPos[1];\r\n\r\n if (tagName === \"svg\" && targetMatrix) {\r\n matrixes.push( // scale matrix for svg's SVGElements.\r\n getSVGMatrix(el, n), createIdentityMatrix(n));\r\n } else if (tagName === \"g\" && target !== el) {\r\n offsetLeft = 0;\r\n offsetTop = 0;\r\n }\r\n\r\n var _b = getOffsetInfo(el, container),\r\n offsetParent = _b.offsetParent,\r\n isOffsetEnd = _b.isEnd,\r\n isStatic = _b.isStatic;\r\n\r\n if (IS_WEBKIT && hasOffset && !isSVG && isStatic && (position === \"relative\" || position === \"static\")) {\r\n offsetLeft -= offsetParent.offsetLeft;\r\n offsetTop -= offsetParent.offsetTop;\r\n isEnd = isEnd || isOffsetEnd;\r\n }\r\n\r\n var parentClientLeft = 0;\r\n var parentClientTop = 0;\r\n\r\n if (hasOffset && offsetContainer !== offsetParent) {\r\n // border\r\n parentClientLeft = offsetParent.clientLeft;\r\n parentClientTop = offsetParent.clientTop;\r\n }\r\n\r\n if (hasOffset && offsetParent === document.body) {\r\n var margin = getBodyOffset(el, false, style);\r\n offsetLeft += margin[0];\r\n offsetTop += margin[1];\r\n }\r\n\r\n matrixes.push( // absolute matrix\r\n getAbsoluteMatrix(matrix, n, origin), // offset matrix (offsetPos + clientPos(border))\r\n createOriginMatrix(hasOffset ? [offsetLeft - el.scrollLeft + parentClientLeft, offsetTop - el.scrollTop + parentClientTop] : [el, origin], n));\r\n\r\n if (!targetMatrix) {\r\n targetMatrix = matrix;\r\n }\r\n\r\n if (!transformOrigin) {\r\n transformOrigin = origin;\r\n }\r\n\r\n if (!targetTransformOrigin) {\r\n targetTransformOrigin = targetOrigin;\r\n }\r\n\r\n if (isEnd || isFixed) {\r\n break;\r\n } else {\r\n el = offsetParent;\r\n isEnd = isOffsetEnd;\r\n }\r\n }\r\n\r\n if (!targetMatrix) {\r\n targetMatrix = createIdentityMatrix(n);\r\n }\r\n\r\n if (!transformOrigin) {\r\n transformOrigin = [0, 0];\r\n }\r\n\r\n if (!targetTransformOrigin) {\r\n targetTransformOrigin = [0, 0];\r\n }\r\n\r\n return {\r\n offsetContainer: offsetContainer,\r\n matrixes: matrixes,\r\n targetMatrix: targetMatrix,\r\n transformOrigin: transformOrigin,\r\n targetOrigin: targetTransformOrigin,\r\n is3d: is3d\r\n };\r\n }\r\n function calculateElementInfo(target, container, rootContainer, isAbsolute3d) {\r\n var _a;\r\n\r\n if (rootContainer === void 0) {\r\n rootContainer = container;\r\n } // const prevMatrix = state ? state.beforeMatrix : undefined;\r\n // const prevRootMatrix = state ? state.rootMatrix : undefined;\r\n // const prevN = state ? (state.is3d ? 4 : 3) : undefined;\r\n\r\n\r\n var width = 0;\r\n var height = 0;\r\n var rotation = 0;\r\n var allResult = {};\r\n\r\n if (target) {\r\n var style = getComputedStyle$1(target);\r\n width = target.offsetWidth;\r\n height = target.offsetHeight;\r\n\r\n if (isUndefined(width)) {\r\n _a = getSize(target, style, true), width = _a[0], height = _a[1];\r\n }\r\n }\r\n\r\n if (target) {\r\n var result = calculateMatrixStack(target, container, rootContainer, isAbsolute3d);\r\n var position = calculateMoveablePosition(result.allMatrix, result.transformOrigin, width, height);\r\n allResult = __assign$2(__assign$2({}, result), position);\r\n var rotationPosition = calculateMoveablePosition(result.allMatrix, [50, 50], 100, 100);\r\n rotation = getRotationRad([rotationPosition.pos1, rotationPosition.pos2], rotationPosition.direction);\r\n }\r\n\r\n var n = isAbsolute3d ? 4 : 3;\r\n return __assign$2({\r\n width: width,\r\n height: height,\r\n rotation: rotation,\r\n // rootMatrix: number[];\r\n // beforeMatrix: number[];\r\n // offsetMatrix: number[];\r\n // allMatrix: number[];\r\n // targetMatrix: number[];\r\n // targetTransform: string;\r\n // transformOrigin: number[];\r\n // targetOrigin: number[];\r\n // is3d: boolean;\r\n rootMatrix: createIdentityMatrix(n),\r\n beforeMatrix: createIdentityMatrix(n),\r\n offsetMatrix: createIdentityMatrix(n),\r\n allMatrix: createIdentityMatrix(n),\r\n targetMatrix: createIdentityMatrix(n),\r\n targetTransform: \"\",\r\n transformOrigin: [0, 0],\r\n targetOrigin: [0, 0],\r\n is3d: !!isAbsolute3d,\r\n // left: number;\r\n // top: number;\r\n // right: number;\r\n // bottom: number;\r\n // origin: number[];\r\n // pos1: number[];\r\n // pos2: number[];\r\n // pos3: number[];\r\n // pos4: number[];\r\n // direction: 1 | -1;\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n origin: [0, 0],\r\n pos1: [0, 0],\r\n pos2: [0, 0],\r\n pos3: [0, 0],\r\n pos4: [0, 0],\r\n direction: 1\r\n }, allResult);\r\n }\r\n function calculateMatrixStack(target, container, rootContainer, isAbsolute3d) {\r\n if (rootContainer === void 0) {\r\n rootContainer = container;\r\n }\r\n\r\n var _a = getMatrixStackInfo(target, container),\r\n matrixes = _a.matrixes,\r\n is3d = _a.is3d,\r\n prevTargetMatrix = _a.targetMatrix,\r\n transformOrigin = _a.transformOrigin,\r\n targetOrigin = _a.targetOrigin,\r\n offsetContainer = _a.offsetContainer; // prevMatrix\r\n\r\n\r\n var _b = getMatrixStackInfo(offsetContainer, rootContainer),\r\n rootMatrixes = _b.matrixes,\r\n isRoot3d = _b.is3d; // prevRootMatrix\r\n // if (rootContainer === document.body) {\r\n // console.log(offsetContainer, rootContainer, rootMatrixes);\r\n // }\r\n\r\n\r\n var isNext3d = isAbsolute3d || isRoot3d || is3d;\r\n var n = isNext3d ? 4 : 3;\r\n var isSVGGraphicElement = target.tagName.toLowerCase() !== \"svg\" && \"ownerSVGElement\" in target;\r\n var originalContainer = container || document.body;\r\n var targetMatrix = prevTargetMatrix; // let allMatrix = prevMatrix ? convertDimension(prevMatrix, prevN!, n) : createIdentityMatrix(n);\r\n // let rootMatrix = prevRootMatrix ? convertDimension(prevRootMatrix, prevN!, n) : createIdentityMatrix(n);\r\n // let beforeMatrix = prevMatrix ? convertDimension(prevMatrix, prevN!, n) : createIdentityMatrix(n);\r\n\r\n var allMatrix = createIdentityMatrix(n);\r\n var rootMatrix = createIdentityMatrix(n);\r\n var beforeMatrix = createIdentityMatrix(n);\r\n var offsetMatrix = createIdentityMatrix(n);\r\n var length = matrixes.length;\r\n var endContainer = getOffsetInfo(originalContainer, originalContainer, true).offsetParent;\r\n rootMatrixes.reverse();\r\n matrixes.reverse();\r\n\r\n if (!is3d && isNext3d) {\r\n targetMatrix = convertDimension(targetMatrix, 3, 4);\r\n matrixes.forEach(function (matrix, i) {\r\n matrixes[i] = convertDimension(matrix, 3, 4);\r\n });\r\n }\r\n\r\n if (!isRoot3d && isNext3d) {\r\n rootMatrixes.forEach(function (matrix, i) {\r\n rootMatrixes[i] = convertDimension(matrix, 3, 4);\r\n });\r\n } // rootMatrix = (...) -> container -> offset -> absolute -> offset -> absolute(targetMatrix)\r\n // beforeMatrix = (... -> container -> offset -> absolute) -> offset -> absolute(targetMatrix)\r\n // offsetMatrix = (... -> container -> offset -> absolute -> offset) -> absolute(targetMatrix)\r\n // if (!prevRootMatrix) {\r\n\r\n\r\n rootMatrixes.forEach(function (matrix) {\r\n rootMatrix = multiply(rootMatrix, matrix, n);\r\n }); // }\r\n\r\n matrixes.forEach(function (matrix, i) {\r\n var _a;\r\n\r\n if (length - 2 === i) {\r\n // length - 3\r\n beforeMatrix = allMatrix.slice();\r\n }\r\n\r\n if (length - 1 === i) {\r\n // length - 2\r\n offsetMatrix = allMatrix.slice();\r\n } // calculate for SVGElement\r\n\r\n\r\n if (isObject(matrix[n * (n - 1)])) {\r\n _a = getSVGOffset(matrix[n * (n - 1)], endContainer, n, matrix[n * (n - 1) + 1], allMatrix, matrixes[i + 1]), matrix[n * (n - 1)] = _a[0], matrix[n * (n - 1) + 1] = _a[1];\r\n }\r\n\r\n allMatrix = multiply(allMatrix, matrix, n);\r\n });\r\n var isMatrix3d = !isSVGGraphicElement && is3d;\r\n\r\n if (!targetMatrix) {\r\n targetMatrix = createIdentityMatrix(isMatrix3d ? 4 : 3);\r\n }\r\n\r\n var targetTransform = makeMatrixCSS(isSVGGraphicElement && targetMatrix.length === 16 ? convertDimension(targetMatrix, 4, 3) : targetMatrix, isMatrix3d);\r\n rootMatrix = ignoreDimension(rootMatrix, n, n);\r\n return {\r\n rootMatrix: rootMatrix,\r\n beforeMatrix: beforeMatrix,\r\n offsetMatrix: offsetMatrix,\r\n allMatrix: allMatrix,\r\n targetMatrix: targetMatrix,\r\n targetTransform: targetTransform,\r\n transformOrigin: transformOrigin,\r\n targetOrigin: targetOrigin,\r\n is3d: isNext3d\r\n };\r\n }\r\n function makeMatrixCSS(matrix, is3d) {\r\n if (is3d === void 0) {\r\n is3d = matrix.length > 9;\r\n }\r\n\r\n return (is3d ? \"matrix3d\" : \"matrix\") + \"(\" + convertMatrixtoCSS(matrix, !is3d).join(\",\") + \")\";\r\n }\r\n function getSVGViewBox(el) {\r\n var clientWidth = el.clientWidth;\r\n var clientHeight = el.clientHeight;\r\n\r\n if (!el) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n clientWidth: clientWidth,\r\n clientHeight: clientHeight\r\n };\r\n }\r\n\r\n var viewBox = el.viewBox;\r\n var baseVal = viewBox && viewBox.baseVal || {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n return {\r\n x: baseVal.x,\r\n y: baseVal.y,\r\n width: baseVal.width || clientWidth,\r\n height: baseVal.height || clientHeight,\r\n clientWidth: clientWidth,\r\n clientHeight: clientHeight\r\n };\r\n }\r\n function getSVGMatrix(el, n) {\r\n var _a = getSVGViewBox(el),\r\n viewBoxWidth = _a.width,\r\n viewBoxHeight = _a.height,\r\n clientWidth = _a.clientWidth,\r\n clientHeight = _a.clientHeight;\r\n\r\n var scaleX = clientWidth / viewBoxWidth;\r\n var scaleY = clientHeight / viewBoxHeight;\r\n var preserveAspectRatio = el.preserveAspectRatio.baseVal; // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio\r\n\r\n var align = preserveAspectRatio.align; // 1 : meet 2: slice\r\n\r\n var meetOrSlice = preserveAspectRatio.meetOrSlice;\r\n var svgOrigin = [0, 0];\r\n var scale = [scaleX, scaleY];\r\n var translate = [0, 0];\r\n\r\n if (align !== 1) {\r\n var xAlign = (align - 2) % 3;\r\n var yAlign = Math.floor((align - 2) / 3);\r\n svgOrigin[0] = viewBoxWidth * xAlign / 2;\r\n svgOrigin[1] = viewBoxHeight * yAlign / 2;\r\n var scaleDimension = meetOrSlice === 2 ? Math.max(scaleY, scaleX) : Math.min(scaleX, scaleY);\r\n scale[0] = scaleDimension;\r\n scale[1] = scaleDimension;\r\n translate[0] = (clientWidth - viewBoxWidth) / 2 * xAlign;\r\n translate[1] = (clientHeight - viewBoxHeight) / 2 * yAlign;\r\n }\r\n\r\n var scaleMatrix = createScaleMatrix(scale, n);\r\n scaleMatrix[n * (n - 1)] = translate[0], scaleMatrix[n * (n - 1) + 1] = translate[1];\r\n return getAbsoluteMatrix(scaleMatrix, n, svgOrigin);\r\n }\r\n function getSVGGraphicsOffset(el, origin) {\r\n if (!el.getBBox) {\r\n return [0, 0];\r\n }\r\n\r\n var bbox = el.getBBox();\r\n var viewBox = getSVGViewBox(el.ownerSVGElement);\r\n var left = bbox.x - viewBox.x;\r\n var top = bbox.y - viewBox.y;\r\n return [left, top, origin[0] - left, origin[1] - top];\r\n }\r\n function calculatePosition(matrix, pos, n) {\r\n return calculate(matrix, convertPositionMatrix(pos, n), n);\r\n }\r\n function calculatePoses(matrix, width, height, n) {\r\n return [[0, 0], [width, 0], [0, height], [width, height]].map(function (pos) {\r\n return calculatePosition(matrix, pos, n);\r\n });\r\n }\r\n function getRect(poses) {\r\n var posesX = poses.map(function (pos) {\r\n return pos[0];\r\n });\r\n var posesY = poses.map(function (pos) {\r\n return pos[1];\r\n });\r\n var left = Math.min.apply(Math, posesX);\r\n var top = Math.min.apply(Math, posesY);\r\n var right = Math.max.apply(Math, posesX);\r\n var bottom = Math.max.apply(Math, posesY);\r\n var rectWidth = right - left;\r\n var rectHeight = bottom - top;\r\n return {\r\n left: left,\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n width: rectWidth,\r\n height: rectHeight\r\n };\r\n }\r\n function calculateRect(matrix, width, height, n) {\r\n var poses = calculatePoses(matrix, width, height, n);\r\n return getRect(poses);\r\n }\r\n function getSVGOffset(el, container, n, origin, beforeMatrix, absoluteMatrix) {\r\n var _a;\r\n\r\n var _b = getSize(el, undefined, true),\r\n width = _b[0],\r\n height = _b[1];\r\n\r\n var containerClientRect = container.getBoundingClientRect();\r\n var margin = [0, 0];\r\n\r\n if (container === document.body) {\r\n margin = getBodyOffset(el, true);\r\n }\r\n\r\n var rect = el.getBoundingClientRect();\r\n var rectLeft = rect.left - containerClientRect.left + container.scrollLeft - (container.clientLeft || 0) + margin[0];\r\n var rectTop = rect.top - containerClientRect.top + container.scrollTop - (container.clientTop || 0) + margin[1];\r\n var rectWidth = rect.width;\r\n var rectHeight = rect.height;\r\n var mat = multiplies(n, beforeMatrix, absoluteMatrix);\r\n\r\n var _c = calculateRect(mat, width, height, n),\r\n prevLeft = _c.left,\r\n prevTop = _c.top,\r\n prevWidth = _c.width,\r\n prevHeight = _c.height;\r\n\r\n var posOrigin = calculatePosition(mat, origin, n);\r\n var prevOrigin = minus(posOrigin, [prevLeft, prevTop]);\r\n var rectOrigin = [rectLeft + prevOrigin[0] * rectWidth / prevWidth, rectTop + prevOrigin[1] * rectHeight / prevHeight];\r\n var offset = [0, 0];\r\n var count = 0;\r\n\r\n while (++count < 10) {\r\n var inverseBeforeMatrix = invert(beforeMatrix, n);\r\n _a = minus(calculatePosition(inverseBeforeMatrix, rectOrigin, n), calculatePosition(inverseBeforeMatrix, posOrigin, n)), offset[0] = _a[0], offset[1] = _a[1];\r\n var mat2 = multiplies(n, beforeMatrix, createOriginMatrix(offset, n), absoluteMatrix);\r\n\r\n var _d = calculateRect(mat2, width, height, n),\r\n nextLeft = _d.left,\r\n nextTop = _d.top;\r\n\r\n var distLeft = nextLeft - rectLeft;\r\n var distTop = nextTop - rectTop;\r\n\r\n if (Math.abs(distLeft) < 2 && Math.abs(distTop) < 2) {\r\n break;\r\n }\r\n\r\n rectOrigin[0] -= distLeft;\r\n rectOrigin[1] -= distTop;\r\n }\r\n\r\n return offset.map(function (p) {\r\n return Math.round(p);\r\n });\r\n }\r\n function calculateMoveablePosition(matrix, origin, width, height) {\r\n var is3d = matrix.length === 16;\r\n var n = is3d ? 4 : 3;\r\n var poses = calculatePoses(matrix, width, height, n);\r\n var _a = poses[0],\r\n x1 = _a[0],\r\n y1 = _a[1],\r\n _b = poses[1],\r\n x2 = _b[0],\r\n y2 = _b[1],\r\n _c = poses[2],\r\n x3 = _c[0],\r\n y3 = _c[1],\r\n _d = poses[3],\r\n x4 = _d[0],\r\n y4 = _d[1];\r\n\r\n var _e = calculatePosition(matrix, origin, n),\r\n originX = _e[0],\r\n originY = _e[1];\r\n\r\n var left = Math.min(x1, x2, x3, x4);\r\n var top = Math.min(y1, y2, y3, y4);\r\n var right = Math.max(x1, x2, x3, x4);\r\n var bottom = Math.max(y1, y2, y3, y4);\r\n x1 = x1 - left || 0;\r\n x2 = x2 - left || 0;\r\n x3 = x3 - left || 0;\r\n x4 = x4 - left || 0;\r\n y1 = y1 - top || 0;\r\n y2 = y2 - top || 0;\r\n y3 = y3 - top || 0;\r\n y4 = y4 - top || 0;\r\n originX = originX - left || 0;\r\n originY = originY - top || 0;\r\n var direction = getShapeDirection(poses);\r\n return {\r\n left: left,\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n origin: [originX, originY],\r\n pos1: [x1, y1],\r\n pos2: [x2, y2],\r\n pos3: [x3, y3],\r\n pos4: [x4, y4],\r\n direction: direction\r\n };\r\n }\r\n function getDistSize(vec) {\r\n return Math.sqrt(vec[0] * vec[0] + vec[1] * vec[1]);\r\n }\r\n function getDiagonalSize(pos1, pos2) {\r\n return getDistSize([pos2[0] - pos1[0], pos2[1] - pos1[1]]);\r\n }\r\n function getLineStyle(pos1, pos2, zoom, rad) {\r\n if (zoom === void 0) {\r\n zoom = 1;\r\n }\r\n\r\n if (rad === void 0) {\r\n rad = getRad$1(pos1, pos2);\r\n }\r\n\r\n var width = getDiagonalSize(pos1, pos2);\r\n return {\r\n transform: \"translateY(-50%) translate(\" + pos1[0] + \"px, \" + pos1[1] + \"px) rotate(\" + rad + \"rad) scaleY(\" + zoom + \")\",\r\n width: width + \"px\"\r\n };\r\n }\r\n function getControlTransform(rotation, zoom) {\r\n var poses = [];\r\n\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n poses[_i - 2] = arguments[_i];\r\n }\r\n\r\n var length = poses.length;\r\n var x = poses.reduce(function (prev, pos) {\r\n return prev + pos[0];\r\n }, 0) / length;\r\n var y = poses.reduce(function (prev, pos) {\r\n return prev + pos[1];\r\n }, 0) / length;\r\n return {\r\n transform: \"translateZ(0px) translate(\" + x + \"px, \" + y + \"px) rotate(\" + rotation + \"rad) scale(\" + zoom + \")\"\r\n };\r\n }\r\n function getCSSSize(target) {\r\n var style = window.getComputedStyle(target);\r\n return [parseFloat(style.width), parseFloat(style.height)];\r\n }\r\n function getSize(target, style, isOffset, isBoxSizing) {\r\n if (style === void 0) {\r\n style = window.getComputedStyle(target);\r\n }\r\n\r\n if (isBoxSizing === void 0) {\r\n isBoxSizing = isOffset || style.boxSizing === \"border-box\";\r\n }\r\n\r\n var width = target.offsetWidth;\r\n var height = target.offsetHeight;\r\n var hasOffset = !isUndefined(width);\r\n\r\n if ((isOffset || isBoxSizing) && hasOffset) {\r\n return [width, height];\r\n }\r\n\r\n if (!hasOffset && target.tagName.toLowerCase() !== \"svg\") {\r\n var bbox = target.getBBox();\r\n return [bbox.width, bbox.height];\r\n }\r\n\r\n width = target.clientWidth;\r\n height = target.clientHeight;\r\n\r\n if (isOffset || isBoxSizing) {\r\n var borderLeft = parseFloat(style.borderLeftWidth) || 0;\r\n var borderRight = parseFloat(style.borderRightWidth) || 0;\r\n var borderTop = parseFloat(style.borderTopWidth) || 0;\r\n var borderBottom = parseFloat(style.borderBottomWidth) || 0;\r\n return [width + borderLeft + borderRight, height + borderTop + borderBottom];\r\n } else {\r\n var paddingLeft = parseFloat(style.paddingLeft) || 0;\r\n var paddingRight = parseFloat(style.paddingRight) || 0;\r\n var paddingTop = parseFloat(style.paddingTop) || 0;\r\n var paddingBottom = parseFloat(style.paddingBottom) || 0;\r\n return [width - paddingLeft - paddingRight, height - paddingTop - paddingBottom];\r\n }\r\n }\r\n function getRotationRad(poses, direction) {\r\n return getRad$1(direction > 0 ? poses[0] : poses[1], direction > 0 ? poses[1] : poses[0]);\r\n }\r\n function getTargetInfo(moveableElement, target, container, parentContainer, rootContainer) {\r\n var beforeDirection = 1;\r\n var beforeOrigin = [0, 0];\r\n var targetClientRect = resetClientRect();\r\n var containerClientRect = resetClientRect();\r\n var moveableClientRect = resetClientRect();\r\n var result = calculateElementInfo(target, container, rootContainer, false);\r\n\r\n if (target) {\r\n var n = result.is3d ? 4 : 3;\r\n var beforePosition = calculateMoveablePosition(result.offsetMatrix, plus(result.transformOrigin, getOrigin(result.targetMatrix, n)), result.width, result.height);\r\n beforeDirection = beforePosition.direction;\r\n beforeOrigin = plus(beforePosition.origin, [beforePosition.left - result.left, beforePosition.top - result.top]);\r\n targetClientRect = getClientRect(target);\r\n containerClientRect = getClientRect(getOffsetInfo(parentContainer, parentContainer, true).offsetParent || document.body, true);\r\n\r\n if (moveableElement) {\r\n moveableClientRect = getClientRect(moveableElement);\r\n }\r\n }\r\n\r\n return __assign$2({\r\n targetClientRect: targetClientRect,\r\n containerClientRect: containerClientRect,\r\n moveableClientRect: moveableClientRect,\r\n beforeDirection: beforeDirection,\r\n beforeOrigin: beforeOrigin,\r\n originalBeforeOrigin: beforeOrigin,\r\n target: target\r\n }, result);\r\n }\r\n function resetClientRect() {\r\n return {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n width: 0,\r\n height: 0,\r\n clientLeft: 0,\r\n clientTop: 0,\r\n clientWidth: 0,\r\n clientHeight: 0,\r\n scrollWidth: 0,\r\n scrollHeight: 0\r\n };\r\n }\r\n function getClientRect(el, isExtends) {\r\n var left = 0;\r\n var top = 0;\r\n var width = 0;\r\n var height = 0;\r\n\r\n if (el === document.body || el === document.documentElement) {\r\n width = window.innerWidth;\r\n height = window.innerHeight;\r\n left = -(document.documentElement.scrollLeft || document.body.scrollLeft);\r\n top = -(document.documentElement.scrollTop || document.body.scrollTop);\r\n } else {\r\n var clientRect = el.getBoundingClientRect();\r\n left = clientRect.left;\r\n top = clientRect.top;\r\n width = clientRect.width;\r\n height = clientRect.height;\r\n }\r\n\r\n var rect = {\r\n left: left,\r\n right: left + width,\r\n top: top,\r\n bottom: top + height,\r\n width: width,\r\n height: height\r\n };\r\n\r\n if (isExtends) {\r\n rect.clientLeft = el.clientLeft;\r\n rect.clientTop = el.clientTop;\r\n rect.clientWidth = el.clientWidth;\r\n rect.clientHeight = el.clientHeight;\r\n rect.scrollWidth = el.scrollWidth;\r\n rect.scrollHeight = el.scrollHeight;\r\n rect.overflow = getComputedStyle$1(el).overflow !== \"visible\";\r\n }\r\n\r\n return rect;\r\n }\r\n function getDirection(target) {\r\n if (!target) {\r\n return;\r\n }\r\n\r\n var direciton = target.getAttribute(\"data-direction\");\r\n\r\n if (!direciton) {\r\n return;\r\n }\r\n\r\n var dir = [0, 0];\r\n direciton.indexOf(\"w\") > -1 && (dir[0] = -1);\r\n direciton.indexOf(\"e\") > -1 && (dir[0] = 1);\r\n direciton.indexOf(\"n\") > -1 && (dir[1] = -1);\r\n direciton.indexOf(\"s\") > -1 && (dir[1] = 1);\r\n return dir;\r\n }\r\n function getAbsolutePoses(poses, dist) {\r\n return [plus(dist, poses[0]), plus(dist, poses[1]), plus(dist, poses[2]), plus(dist, poses[3])];\r\n }\r\n function getAbsolutePosesByState(_a) {\r\n var left = _a.left,\r\n top = _a.top,\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n pos3 = _a.pos3,\r\n pos4 = _a.pos4;\r\n return getAbsolutePoses([pos1, pos2, pos3, pos4], [left, top]);\r\n }\r\n function roundSign(num) {\r\n return Math.round(num % 1 === -0.5 ? num - 1 : num);\r\n }\r\n function throttle(num, unit) {\r\n if (!unit) {\r\n return num;\r\n }\r\n\r\n return Math.round(num / unit) * unit;\r\n }\r\n function throttleArray(nums, unit) {\r\n nums.forEach(function (_, i) {\r\n nums[i] = throttle(nums[i], unit);\r\n });\r\n return nums;\r\n }\r\n function unset(self, name) {\r\n if (self[name]) {\r\n self[name].unset();\r\n self[name] = null;\r\n }\r\n }\r\n function fillParams(moveable, e, params) {\r\n var datas = e.datas;\r\n\r\n if (!datas.datas) {\r\n datas.datas = {};\r\n }\r\n\r\n var nextParams = __assign$2(__assign$2({}, params), {\r\n target: moveable.state.target,\r\n clientX: e.clientX,\r\n clientY: e.clientY,\r\n inputEvent: e.inputEvent,\r\n currentTarget: moveable,\r\n moveable: moveable,\r\n datas: datas.datas\r\n });\r\n\r\n if (datas.isStartEvent) {\r\n datas.lastEvent = nextParams;\r\n } else {\r\n datas.isStartEvent = true;\r\n }\r\n\r\n return nextParams;\r\n }\r\n function fillEndParams(moveable, e, params) {\r\n var datas = e.datas;\r\n var isDrag = \"isDrag\" in params ? params.isDrag : e.isDrag;\r\n\r\n if (!datas.datas) {\r\n datas.datas = {};\r\n }\r\n\r\n return __assign$2(__assign$2({\r\n isDrag: isDrag\r\n }, params), {\r\n moveable: moveable,\r\n target: moveable.state.target,\r\n clientX: e.clientX,\r\n clientY: e.clientY,\r\n inputEvent: e.inputEvent,\r\n currentTarget: moveable,\r\n lastEvent: datas.lastEvent,\r\n isDouble: e.isDouble,\r\n datas: datas.datas\r\n });\r\n }\r\n function triggerEvent(moveable, name, params, isManager) {\r\n return moveable.triggerEvent(name, params, isManager);\r\n }\r\n function getComputedStyle$1(el, pseudoElt) {\r\n return window.getComputedStyle(el, pseudoElt);\r\n }\r\n function filterAbles(ables, methods, triggerAblesSimultaneously) {\r\n var enabledAbles = {};\r\n var ableGroups = {};\r\n return ables.filter(function (able) {\r\n var name = able.name;\r\n\r\n if (enabledAbles[name] || !methods.some(function (method) {\r\n return able[method];\r\n })) {\r\n return false;\r\n }\r\n\r\n if (!triggerAblesSimultaneously && able.ableGroup) {\r\n if (ableGroups[able.ableGroup]) {\r\n return false;\r\n }\r\n\r\n ableGroups[able.ableGroup] = true;\r\n }\r\n\r\n enabledAbles[name] = true;\r\n return true;\r\n });\r\n }\r\n function equals(a1, a2) {\r\n return a1 === a2 || a1 == null && a2 == null;\r\n }\r\n function selectValue() {\r\n var values = [];\r\n\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n values[_i] = arguments[_i];\r\n }\r\n\r\n var length = values.length - 1;\r\n\r\n for (var i = 0; i < length; ++i) {\r\n var value = values[i];\r\n\r\n if (!isUndefined(value)) {\r\n return value;\r\n }\r\n }\r\n\r\n return values[length];\r\n }\r\n function groupBy(arr, func) {\r\n var groups = [];\r\n var groupKeys = [];\r\n arr.forEach(function (el, index) {\r\n var groupKey = func(el, index, arr);\r\n var keyIndex = groupKeys.indexOf(groupKey);\r\n var group = groups[keyIndex] || [];\r\n\r\n if (keyIndex === -1) {\r\n groupKeys.push(groupKey);\r\n groups.push(group);\r\n }\r\n\r\n group.push(el);\r\n });\r\n return groups;\r\n }\r\n function groupByMap(arr, func) {\r\n var groups = [];\r\n var groupKeys = {};\r\n arr.forEach(function (el, index) {\r\n var groupKey = func(el, index, arr);\r\n var group = groupKeys[groupKey];\r\n\r\n if (!group) {\r\n group = [];\r\n groupKeys[groupKey] = group;\r\n groups.push(group);\r\n }\r\n\r\n group.push(el);\r\n });\r\n return groups;\r\n }\r\n function flat(arr) {\r\n return arr.reduce(function (prev, cur) {\r\n return prev.concat(cur);\r\n }, []);\r\n }\r\n function maxOffset() {\r\n var args = [];\r\n\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n\r\n args.sort(function (a, b) {\r\n return Math.abs(b) - Math.abs(a);\r\n });\r\n return args[0];\r\n }\r\n function minOffset() {\r\n var args = [];\r\n\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n\r\n args.sort(function (a, b) {\r\n return Math.abs(a) - Math.abs(b);\r\n });\r\n return args[0];\r\n }\r\n function calculateInversePosition(matrix, pos, n) {\r\n return calculate(invert(matrix, n), convertPositionMatrix(pos, n), n);\r\n }\r\n function convertDragDist(state, e) {\r\n var _a;\r\n\r\n var is3d = state.is3d,\r\n rootMatrix = state.rootMatrix;\r\n var n = is3d ? 4 : 3;\r\n _a = calculateInversePosition(rootMatrix, [e.distX, e.distY], n), e.distX = _a[0], e.distY = _a[1];\r\n return e;\r\n }\r\n function calculatePadding(matrix, pos, transformOrigin, origin, n) {\r\n return minus(calculatePosition(matrix, plus(transformOrigin, pos), n), origin);\r\n }\r\n function convertCSSSize(value, size, isRelative) {\r\n return isRelative ? value / size * 100 + \"%\" : value + \"px\";\r\n }\r\n function moveControlPos(controlPoses, index, dist, isRect) {\r\n var _a = controlPoses[index],\r\n direction = _a.direction,\r\n sub = _a.sub;\r\n var dists = controlPoses.map(function () {\r\n return [0, 0];\r\n });\r\n var directions = direction ? direction.split(\"\") : [];\r\n\r\n if (isRect && index < 8) {\r\n var verticalDirection_1 = directions.filter(function (dir) {\r\n return dir === \"w\" || dir === \"e\";\r\n })[0];\r\n var horizontalDirection_1 = directions.filter(function (dir) {\r\n return dir === \"n\" || dir === \"s\";\r\n })[0];\r\n dists[index] = dist;\r\n controlPoses.forEach(function (controlPose, i) {\r\n var controlDir = controlPose.direction;\r\n\r\n if (!controlDir) {\r\n return;\r\n }\r\n\r\n if (controlDir.indexOf(verticalDirection_1) > -1) {\r\n dists[i][0] = dist[0];\r\n }\r\n\r\n if (controlDir.indexOf(horizontalDirection_1) > -1) {\r\n dists[i][1] = dist[1];\r\n }\r\n });\r\n\r\n if (verticalDirection_1) {\r\n dists[1][0] = dist[0] / 2;\r\n dists[5][0] = dist[0] / 2;\r\n }\r\n\r\n if (horizontalDirection_1) {\r\n dists[3][1] = dist[1] / 2;\r\n dists[7][1] = dist[1] / 2;\r\n }\r\n } else if (direction && !sub) {\r\n directions.forEach(function (dir) {\r\n var isVertical = dir === \"n\" || dir === \"s\";\r\n controlPoses.forEach(function (controlPose, i) {\r\n var dirDir = controlPose.direction,\r\n dirHorizontal = controlPose.horizontal,\r\n dirVertical = controlPose.vertical;\r\n\r\n if (!dirDir || dirDir.indexOf(dir) === -1) {\r\n return;\r\n }\r\n\r\n dists[i] = [isVertical || !dirHorizontal ? 0 : dist[0], !isVertical || !dirVertical ? 0 : dist[1]];\r\n });\r\n });\r\n } else {\r\n dists[index] = dist;\r\n }\r\n\r\n return dists;\r\n }\r\n function getTinyDist(v) {\r\n return Math.abs(v) <= TINY_NUM ? 0 : v;\r\n }\r\n function directionCondition(e) {\r\n if (e.isRequest) {\r\n if (e.requestAble === \"resizable\" || e.requestAble === \"scalable\") {\r\n return e.parentDirection;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n return hasClass(e.inputEvent.target, prefix(\"direction\"));\r\n }\r\n function invertObject(obj) {\r\n var nextObj = {};\r\n\r\n for (var name in obj) {\r\n nextObj[obj[name]] = name;\r\n }\r\n\r\n return nextObj;\r\n }\r\n function getTransform(transforms, index) {\r\n var beforeFunctionTexts = transforms.slice(0, index < 0 ? undefined : index);\r\n var beforeFunctionTexts2 = transforms.slice(0, index < 0 ? undefined : index + 1);\r\n var targetFunctionText = transforms[index] || \"\";\r\n var afterFunctionTexts = index < 0 ? [] : transforms.slice(index);\r\n var afterFunctionTexts2 = index < 0 ? [] : transforms.slice(index + 1);\r\n var beforeFunctions = parse(beforeFunctionTexts);\r\n var beforeFunctions2 = parse(beforeFunctionTexts2);\r\n var targetFunctions = parse([targetFunctionText]);\r\n var afterFunctions = parse(afterFunctionTexts);\r\n var afterFunctions2 = parse(afterFunctionTexts2);\r\n var beforeFunctionMatrix = toMat(beforeFunctions);\r\n var beforeFunctionMatrix2 = toMat(beforeFunctions2);\r\n var afterFunctionMatrix = toMat(afterFunctions);\r\n var afterFunctionMatrix2 = toMat(afterFunctions2);\r\n var allFunctionMatrix = multiply(beforeFunctionMatrix, afterFunctionMatrix, 4);\r\n return {\r\n transforms: transforms,\r\n beforeFunctionMatrix: beforeFunctionMatrix,\r\n beforeFunctionMatrix2: beforeFunctionMatrix2,\r\n targetFunctionMatrix: toMat(targetFunctions),\r\n afterFunctionMatrix: afterFunctionMatrix,\r\n afterFunctionMatrix2: afterFunctionMatrix2,\r\n allFunctionMatrix: allFunctionMatrix,\r\n beforeFunctions: beforeFunctions,\r\n beforeFunctions2: beforeFunctions2,\r\n targetFunction: targetFunctions[0],\r\n afterFunctions: afterFunctions,\r\n afterFunctions2: afterFunctions2,\r\n beforeFunctionTexts: beforeFunctionTexts,\r\n beforeFunctionTexts2: beforeFunctionTexts2,\r\n targetFunctionText: targetFunctionText,\r\n afterFunctionTexts: afterFunctionTexts,\r\n afterFunctionTexts2: afterFunctionTexts2\r\n };\r\n }\r\n function isArrayFormat(arr) {\r\n if (!arr || !isObject(arr)) {\r\n return false;\r\n }\r\n\r\n return isArray(arr) || \"length\" in arr;\r\n }\r\n function getRefTarget(target, isSelector) {\r\n if (!target) {\r\n return null;\r\n }\r\n\r\n if (isString(target)) {\r\n if (isSelector) {\r\n return document.querySelector(target);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n if (isFunction(target)) {\r\n return target();\r\n }\r\n\r\n if (\"current\" in target) {\r\n return target.current;\r\n }\r\n\r\n return target;\r\n }\r\n function getRefTargets(targets, isSelector) {\r\n if (!targets) {\r\n return [];\r\n }\r\n\r\n var userTargets = isArrayFormat(targets) ? [].slice.call(targets) : [targets];\r\n return userTargets.reduce(function (prev, target) {\r\n if (isString(target) && isSelector) {\r\n return __spreadArrays$1(prev, [].slice.call(document.querySelectorAll(target)));\r\n }\r\n\r\n prev.push(getRefTarget(target, isSelector));\r\n return prev;\r\n }, []);\r\n }\r\n function getElementTargets(targets, selectorMap) {\r\n var elementTargets = [];\r\n targets.forEach(function (target) {\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (isString(target)) {\r\n if (selectorMap[target]) {\r\n elementTargets.push.apply(elementTargets, selectorMap[target]);\r\n }\r\n\r\n return;\r\n }\r\n\r\n elementTargets.push(target);\r\n });\r\n return elementTargets;\r\n }\r\n function getAbsoluteRotation(pos1, pos2, direction) {\r\n var deg = getRad$1(pos1, pos2) / Math.PI * 180;\r\n deg = direction >= 0 ? deg : 180 - deg;\r\n deg = deg >= 0 ? deg : 360 + deg;\r\n return deg;\r\n }\r\n function renderGuideline(info, React) {\r\n var _a;\r\n\r\n var direction = info.direction,\r\n classNames = info.classNames,\r\n size = info.size,\r\n pos = info.pos,\r\n zoom = info.zoom,\r\n key = info.key;\r\n var isHorizontal = direction === \"horizontal\";\r\n var scaleDirection = isHorizontal ? \"Y\" : \"X\"; // const scaleDirection2 = isHorizontal ? \"Y\" : \"X\";\r\n\r\n return React.createElement(\"div\", {\r\n key: key,\r\n className: classNames.join(\" \"),\r\n style: (_a = {}, _a[isHorizontal ? \"width\" : \"height\"] = \"\" + size, _a.transform = \"translate(\" + pos[0] + \", \" + pos[1] + \") translate\" + scaleDirection + \"(-50%) scale\" + scaleDirection + \"(\" + zoom + \")\", _a)\r\n });\r\n }\r\n function renderInnerGuideline(info, React) {\r\n return renderGuideline(__assign$2(__assign$2({}, info), {\r\n classNames: __spreadArrays$1([prefix(\"line\", \"guideline\", info.direction)], info.classNames).filter(function (className) {\r\n return className;\r\n }),\r\n size: info.size || info.sizeValue + \"px\",\r\n pos: info.pos || info.posValue.map(function (v) {\r\n return v + \"px\";\r\n })\r\n }), React);\r\n }\r\n\r\n /**\r\n * @namespace Moveable.Pinchable\r\n * @description Whether or not target can be pinched with draggable, resizable, scalable, rotatable (default: false)\r\n */\r\n\r\n var Pinchable = {\r\n name: \"pinchable\",\r\n updateRect: true,\r\n props: {\r\n pinchable: Boolean\r\n },\r\n events: {\r\n onPinchStart: \"pinchStart\",\r\n onPinch: \"pinch\",\r\n onPinchEnd: \"pinchEnd\",\r\n onPinchGroupStart: \"pinchGroupStart\",\r\n onPinchGroup: \"pinchGroup\",\r\n onPinchGroupEnd: \"pinchGroupEnd\"\r\n },\r\n dragStart: function () {\r\n return true;\r\n },\r\n pinchStart: function (moveable, e) {\r\n var datas = e.datas,\r\n targets = e.targets,\r\n angle = e.angle,\r\n originalDatas = e.originalDatas;\r\n var _a = moveable.props,\r\n pinchable = _a.pinchable,\r\n ables = _a.ables;\r\n\r\n if (!pinchable) {\r\n return false;\r\n }\r\n\r\n var eventName = \"onPinch\" + (targets ? \"Group\" : \"\") + \"Start\";\r\n var controlEventName = \"drag\" + (targets ? \"Group\" : \"\") + \"ControlStart\";\r\n var pinchAbles = (pinchable === true ? moveable.controlAbles : ables.filter(function (able) {\r\n return pinchable.indexOf(able.name) > -1;\r\n })).filter(function (able) {\r\n return able.canPinch && able[controlEventName];\r\n });\r\n var params = fillParams(moveable, e, {});\r\n\r\n if (targets) {\r\n params.targets = targets;\r\n }\r\n\r\n var result = triggerEvent(moveable, eventName, params);\r\n datas.isPinch = result !== false;\r\n datas.ables = pinchAbles;\r\n var isPinch = datas.isPinch;\r\n\r\n if (!isPinch) {\r\n return false;\r\n }\r\n\r\n pinchAbles.forEach(function (able) {\r\n originalDatas[able.name] = originalDatas[able.name] || {};\r\n\r\n if (!able[controlEventName]) {\r\n return;\r\n }\r\n\r\n var ableEvent = __assign$2(__assign$2({}, e), {\r\n datas: originalDatas[able.name],\r\n parentRotate: angle,\r\n isPinch: true\r\n });\r\n\r\n able[controlEventName](moveable, ableEvent);\r\n });\r\n moveable.state.snapRenderInfo = {\r\n request: e.isRequest,\r\n direction: [0, 0]\r\n };\r\n return isPinch;\r\n },\r\n pinch: function (moveable, e) {\r\n var datas = e.datas,\r\n pinchScale = e.scale,\r\n distance = e.distance,\r\n originalDatas = e.originalDatas,\r\n inputEvent = e.inputEvent,\r\n targets = e.targets,\r\n angle = e.angle;\r\n\r\n if (!datas.isPinch) {\r\n return;\r\n }\r\n\r\n var parentDistance = distance * (1 - 1 / pinchScale);\r\n var params = fillParams(moveable, e, {});\r\n\r\n if (targets) {\r\n params.targets = targets;\r\n }\r\n\r\n var eventName = \"onPinch\" + (targets ? \"Group\" : \"\");\r\n triggerEvent(moveable, eventName, params);\r\n var ables = datas.ables;\r\n var controlEventName = \"drag\" + (targets ? \"Group\" : \"\") + \"Control\";\r\n ables.forEach(function (able) {\r\n if (!able[controlEventName]) {\r\n return;\r\n }\r\n\r\n able[controlEventName](moveable, __assign$2(__assign$2({}, e), {\r\n datas: originalDatas[able.name],\r\n inputEvent: inputEvent,\r\n parentDistance: parentDistance,\r\n parentRotate: angle,\r\n isPinch: true\r\n }));\r\n });\r\n return params;\r\n },\r\n pinchEnd: function (moveable, e) {\r\n var datas = e.datas,\r\n isPinch = e.isPinch,\r\n inputEvent = e.inputEvent,\r\n targets = e.targets,\r\n originalDatas = e.originalDatas;\r\n\r\n if (!datas.isPinch) {\r\n return;\r\n }\r\n\r\n var eventName = \"onPinch\" + (targets ? \"Group\" : \"\") + \"End\";\r\n var params = fillEndParams(moveable, e, {\r\n isDrag: isPinch\r\n });\r\n\r\n if (targets) {\r\n params.targets = targets;\r\n }\r\n\r\n triggerEvent(moveable, eventName, params);\r\n var ables = datas.ables;\r\n var controlEventName = \"drag\" + (targets ? \"Group\" : \"\") + \"ControlEnd\";\r\n ables.forEach(function (able) {\r\n if (!able[controlEventName]) {\r\n return;\r\n }\r\n\r\n able[controlEventName](moveable, __assign$2(__assign$2({}, e), {\r\n isDrag: isPinch,\r\n datas: originalDatas[able.name],\r\n inputEvent: inputEvent,\r\n isPinch: true\r\n }));\r\n });\r\n return isPinch;\r\n },\r\n pinchGroupStart: function (moveable, e) {\r\n return this.pinchStart(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n pinchGroup: function (moveable, e) {\r\n return this.pinch(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n pinchGroupEnd: function (moveable, e) {\r\n return this.pinchEnd(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n }\r\n };\r\n /**\r\n * Whether or not target can be pinched with draggable, resizable, scalable, rotatable (default: false)\r\n * @name Moveable.Pinchable#pinchable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.pinchable = true;\r\n */\r\n\r\n /**\r\n * When the pinch starts, the pinchStart event is called with part of scaleStart, rotateStart, resizeStart\r\n * @memberof Moveable.Pinchable\r\n * @event pinchStart\r\n * @param {Moveable.Pinchable.OnPinchStart} - Parameters for the pinchStart event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * rotatable: true,\r\n * scalable: true,\r\n * pinchable: true, // [\"rotatable\", \"scalable\"]\r\n * });\r\n * moveable.on(\"pinchStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n * moveable.on(\"rotateStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n * moveable.on(\"scaleStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When pinching, the pinch event is called with part of scale, rotate, resize\r\n * @memberof Moveable.Pinchable\r\n * @event pinch\r\n * @param {Moveable.Pinchable.OnPinch} - Parameters for the pinch event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * rotatable: true,\r\n * scalable: true,\r\n * pinchable: true, // [\"rotatable\", \"scalable\"]\r\n * });\r\n * moveable.on(\"pinch\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n * moveable.on(\"rotate\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n * moveable.on(\"scale\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When the pinch finishes, the pinchEnd event is called.\r\n * @memberof Moveable.Pinchable\r\n * @event pinchEnd\r\n * @param {Moveable.Pinchable.OnPinchEnd} - Parameters for the pinchEnd event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * rotatable: true,\r\n * scalable: true,\r\n * pinchable: true, // [\"rotatable\", \"scalable\"]\r\n * });\r\n * moveable.on(\"pinchEnd\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n * moveable.on(\"rotateEnd\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n * moveable.on(\"scaleEnd\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group pinch starts, the `pinchGroupStart` event is called.\r\n * @memberof Moveable.Pinchable\r\n * @event pinchGroupStart\r\n * @param {Moveable.Pinchable.OnPinchGroupStart} - Parameters for the `pinchGroupStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * pinchable: true\r\n * });\r\n * moveable.on(\"pinchGroupStart\", ({ targets }) => {\r\n * console.log(\"onPinchGroupStart\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group pinch, the `pinchGroup` event is called.\r\n * @memberof Moveable.Pinchable\r\n * @event pinchGroup\r\n * @param {Moveable.Pinchable.OnPinchGroup} - Parameters for the `pinchGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * pinchable: true\r\n * });\r\n * moveable.on(\"pinchGroup\", ({ targets, events }) => {\r\n * console.log(\"onPinchGroup\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group pinch finishes, the `pinchGroupEnd` event is called.\r\n * @memberof Moveable.Pinchable\r\n * @event pinchGroupEnd\r\n * @param {Moveable.Pinchable.OnPinchGroupEnd} - Parameters for the `pinchGroupEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * pinchable: true\r\n * });\r\n * moveable.on(\"pinchGroupEnd\", ({ targets, isDrag }) => {\r\n * console.log(\"onPinchGroupEnd\", targets, isDrag);\r\n * });\r\n */\r\n\r\n function setCustomDrag(e, state, delta, isPinch, isConvert) {\r\n var result = state.gesto.move(delta, e.inputEvent);\r\n var datas = result.originalDatas || result.datas;\r\n var draggableDatas = datas.draggable || (datas.draggable = {});\r\n return __assign$2(__assign$2({}, isConvert ? convertDragDist(state, result) : result), {\r\n isDrag: true,\r\n isPinch: !!isPinch,\r\n parentEvent: true,\r\n datas: draggableDatas,\r\n originalDatas: e.originalDatas\r\n });\r\n }\r\n\r\n var CustomGesto =\r\n /*#__PURE__*/\r\n function () {\r\n function CustomGesto() {\r\n this.prevX = 0;\r\n this.prevY = 0;\r\n this.startX = 0;\r\n this.startY = 0;\r\n this.isDrag = false;\r\n this.isFlag = false;\r\n this.datas = {\r\n draggable: {}\r\n };\r\n }\r\n\r\n var __proto = CustomGesto.prototype;\r\n\r\n __proto.dragStart = function (client, e) {\r\n this.isDrag = false;\r\n this.isFlag = false;\r\n var originalDatas = e.originalDatas;\r\n this.datas = originalDatas;\r\n\r\n if (!originalDatas.draggable) {\r\n originalDatas.draggable = {};\r\n }\r\n\r\n return __assign$2(__assign$2({}, this.move(client, e.inputEvent)), {\r\n type: \"dragstart\"\r\n });\r\n };\r\n\r\n __proto.drag = function (client, inputEvent) {\r\n return this.move([client[0] - this.prevX, client[1] - this.prevY], inputEvent);\r\n };\r\n\r\n __proto.move = function (delta, inputEvent) {\r\n var clientX;\r\n var clientY;\r\n\r\n if (!this.isFlag) {\r\n this.prevX = delta[0];\r\n this.prevY = delta[1];\r\n this.startX = delta[0];\r\n this.startY = delta[1];\r\n clientX = delta[0];\r\n clientY = delta[1];\r\n this.isFlag = true;\r\n } else {\r\n clientX = this.prevX + delta[0];\r\n clientY = this.prevY + delta[1];\r\n this.isDrag = true;\r\n }\r\n\r\n this.prevX = clientX;\r\n this.prevY = clientY;\r\n return {\r\n type: \"drag\",\r\n clientX: clientX,\r\n clientY: clientY,\r\n inputEvent: inputEvent,\r\n isDrag: this.isDrag,\r\n distX: clientX - this.startX,\r\n distY: clientY - this.startY,\r\n deltaX: delta[0],\r\n deltaY: delta[1],\r\n datas: this.datas.draggable,\r\n originalDatas: this.datas,\r\n parentEvent: true,\r\n parentGesto: this\r\n };\r\n };\r\n\r\n return CustomGesto;\r\n }();\r\n\r\n function fillChildEvents(moveable, name, e) {\r\n var datas = e.originalDatas;\r\n datas.groupable = datas.groupable || {};\r\n var groupableDatas = datas.groupable;\r\n groupableDatas.childDatas = groupableDatas.childDatas || [];\r\n var childDatas = groupableDatas.childDatas;\r\n return moveable.moveables.map(function (_, i) {\r\n childDatas[i] = childDatas[i] || {};\r\n childDatas[i][name] = childDatas[i][name] || {};\r\n return __assign$2(__assign$2({}, e), {\r\n datas: childDatas[i][name],\r\n originalDatas: childDatas[i]\r\n });\r\n });\r\n }\r\n function triggerChildGesto(moveable, able, type, delta, e, isConvert) {\r\n var isStart = !!type.match(/Start$/g);\r\n var isEnd = !!type.match(/End$/g);\r\n var isPinch = e.isPinch;\r\n var datas = e.datas;\r\n var events = fillChildEvents(moveable, able.name, e);\r\n var moveables = moveable.moveables;\r\n var childs = events.map(function (ev, i) {\r\n var childMoveable = moveables[i];\r\n var childEvent = ev;\r\n\r\n if (isStart) {\r\n childEvent = new CustomGesto().dragStart(delta, ev);\r\n } else {\r\n if (!childMoveable.state.gesto) {\r\n childMoveable.state.gesto = datas.childGestos[i];\r\n }\r\n\r\n childEvent = setCustomDrag(ev, childMoveable.state, delta, isPinch, isConvert);\r\n }\r\n\r\n var result = able[type](childMoveable, __assign$2(__assign$2({}, childEvent), {\r\n parentFlag: true\r\n }));\r\n\r\n if (isEnd) {\r\n childMoveable.state.gesto = null;\r\n }\r\n\r\n return result;\r\n });\r\n\r\n if (isStart) {\r\n datas.childGestos = moveables.map(function (child) {\r\n return child.state.gesto;\r\n });\r\n }\r\n\r\n return childs;\r\n }\r\n function triggerChildAble(moveable, able, type, e, eachEvent, callback) {\r\n if (eachEvent === void 0) {\r\n eachEvent = function (_, ev) {\r\n return ev;\r\n };\r\n }\r\n\r\n var isEnd = !!type.match(/End$/g);\r\n var events = fillChildEvents(moveable, able.name, e);\r\n var moveables = moveable.moveables;\r\n var childs = events.map(function (ev, i) {\r\n var childMoveable = moveables[i];\r\n var childEvent = ev;\r\n childEvent = eachEvent(childMoveable, ev);\r\n var result = able[type](childMoveable, __assign$2(__assign$2({}, childEvent), {\r\n parentFlag: true\r\n }));\r\n result && callback && callback(childMoveable, ev, result, i);\r\n\r\n if (isEnd) {\r\n childMoveable.state.gesto = null;\r\n }\r\n\r\n return result;\r\n });\r\n return childs;\r\n }\r\n\r\n function calculatePointerDist(moveable, e) {\r\n var clientX = e.clientX,\r\n clientY = e.clientY,\r\n datas = e.datas;\r\n var _a = moveable.state,\r\n moveableClientRect = _a.moveableClientRect,\r\n rootMatrix = _a.rootMatrix,\r\n is3d = _a.is3d,\r\n pos1 = _a.pos1;\r\n var left = moveableClientRect.left,\r\n top = moveableClientRect.top;\r\n var n = is3d ? 4 : 3;\r\n\r\n var _b = minus(calculateInversePosition(rootMatrix, [clientX - left, clientY - top], n), pos1),\r\n posX = _b[0],\r\n posY = _b[1];\r\n\r\n var _c = getDragDist({\r\n datas: datas,\r\n distX: posX,\r\n distY: posY\r\n }),\r\n distX = _c[0],\r\n distY = _c[1];\r\n\r\n return [distX, distY];\r\n }\r\n function setDragStart(moveable, _a) {\r\n var datas = _a.datas;\r\n var _b = moveable.state,\r\n allMatrix = _b.allMatrix,\r\n beforeMatrix = _b.beforeMatrix,\r\n is3d = _b.is3d,\r\n left = _b.left,\r\n top = _b.top,\r\n origin = _b.origin,\r\n offsetMatrix = _b.offsetMatrix,\r\n targetMatrix = _b.targetMatrix,\r\n transformOrigin = _b.transformOrigin;\r\n var n = is3d ? 4 : 3;\r\n datas.is3d = is3d;\r\n datas.matrix = allMatrix;\r\n datas.targetMatrix = targetMatrix;\r\n datas.beforeMatrix = beforeMatrix;\r\n datas.offsetMatrix = offsetMatrix;\r\n datas.transformOrigin = transformOrigin;\r\n datas.inverseMatrix = invert(allMatrix, n);\r\n datas.inverseBeforeMatrix = invert(beforeMatrix, n);\r\n datas.absoluteOrigin = convertPositionMatrix(plus([left, top], origin), n);\r\n datas.startDragBeforeDist = calculate(datas.inverseBeforeMatrix, datas.absoluteOrigin, n);\r\n datas.startDragDist = calculate(datas.inverseMatrix, datas.absoluteOrigin, n);\r\n }\r\n function getTransformDirection(e) {\r\n return calculateMoveablePosition(e.datas.beforeTransform, [50, 50], 100, 100).direction;\r\n }\r\n function resolveTransformEvent(event, functionName) {\r\n var datas = event.datas,\r\n originalDatas = event.originalDatas.beforeRenderable;\r\n var index = datas.transformIndex;\r\n var nextTransforms = originalDatas.nextTransforms;\r\n var nextTransformAppendedIndexes = originalDatas.nextTransformAppendedIndexes;\r\n var nextIndex = index === -1 ? nextTransforms.length : index + nextTransformAppendedIndexes.filter(function (i) {\r\n return i < index;\r\n }).length;\r\n var result = getTransform(nextTransforms, nextIndex);\r\n var targetFunction = result.targetFunction;\r\n var matFunctionName = functionName === \"rotate\" ? \"rotateZ\" : functionName;\r\n datas.beforeFunctionTexts = result.beforeFunctionTexts;\r\n datas.afterFunctionTexts = result.afterFunctionTexts;\r\n datas.beforeTransform = result.beforeFunctionMatrix;\r\n datas.beforeTransform2 = result.beforeFunctionMatrix2;\r\n datas.targetTansform = result.targetFunctionMatrix;\r\n datas.afterTransform = result.afterFunctionMatrix;\r\n datas.afterTransform2 = result.afterFunctionMatrix2;\r\n datas.targetAllTransform = result.allFunctionMatrix;\r\n\r\n if (targetFunction.functionName === matFunctionName) {\r\n datas.afterFunctionTexts.splice(0, 1);\r\n datas.isAppendTransform = false;\r\n } else {\r\n datas.isAppendTransform = true;\r\n originalDatas.nextTransformAppendedIndexes = __spreadArrays$1(nextTransformAppendedIndexes, [nextIndex]);\r\n }\r\n }\r\n function convertTransformFormat(datas, value, dist) {\r\n return datas.beforeFunctionTexts.join(\" \") + \" \" + (datas.isAppendTransform ? dist : value) + \" \" + datas.afterFunctionTexts.join(\" \");\r\n }\r\n function getTransformDist(_a) {\r\n var datas = _a.datas,\r\n distX = _a.distX,\r\n distY = _a.distY;\r\n\r\n var _b = getBeforeDragDist({\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n }),\r\n bx = _b[0],\r\n by = _b[1]; // B * [tx, ty] * A = [bx, by] * targetMatrix;\r\n // [tx, ty] = B-1 * [bx, by] * targetMatrix * A-1 * [0, 0];\r\n\r\n\r\n var res = getTransfromMatrix(datas, fromTranslation([bx, by], 4));\r\n return calculate(res, convertPositionMatrix([0, 0, 0], 4), 4);\r\n }\r\n function getTransfromMatrix(datas, targetMatrix, isAfter) {\r\n var beforeTransform = datas.beforeTransform,\r\n afterTransform = datas.afterTransform,\r\n beforeTransform2 = datas.beforeTransform2,\r\n afterTransform2 = datas.afterTransform2,\r\n targetAllTransform = datas.targetAllTransform; // B * afterTargetMatrix * A = (targetMatrix * targetAllTransform)\r\n // afterTargetMatrix = B-1 * targetMatrix * targetAllTransform * A-1\r\n // nextTargetMatrix = (targetMatrix * targetAllTransform)\r\n\r\n var nextTargetMatrix = isAfter ? multiply(targetAllTransform, targetMatrix, 4) : multiply(targetMatrix, targetAllTransform, 4); // res1 = B-1 * nextTargetMatrix\r\n\r\n var res1 = multiply(invert(isAfter ? beforeTransform2 : beforeTransform, 4), nextTargetMatrix, 4); // res3 = res2 * A-1\r\n\r\n var afterTargetMatrix = multiply(res1, invert(isAfter ? afterTransform2 : afterTransform, 4), 4);\r\n return afterTargetMatrix;\r\n }\r\n function getBeforeDragDist(_a) {\r\n var datas = _a.datas,\r\n distX = _a.distX,\r\n distY = _a.distY; // TT = BT\r\n\r\n var inverseBeforeMatrix = datas.inverseBeforeMatrix,\r\n is3d = datas.is3d,\r\n startDragBeforeDist = datas.startDragBeforeDist,\r\n absoluteOrigin = datas.absoluteOrigin;\r\n var n = is3d ? 4 : 3; // ABS_ORIGIN * [distX, distY] = BM * (ORIGIN + [tx, ty])\r\n // BM -1 * ABS_ORIGIN * [distX, distY] - ORIGIN = [tx, ty]\r\n\r\n return minus(calculate(inverseBeforeMatrix, plus(absoluteOrigin, [distX, distY]), n), startDragBeforeDist);\r\n }\r\n function getDragDist(_a, isBefore) {\r\n var datas = _a.datas,\r\n distX = _a.distX,\r\n distY = _a.distY;\r\n var inverseBeforeMatrix = datas.inverseBeforeMatrix,\r\n inverseMatrix = datas.inverseMatrix,\r\n is3d = datas.is3d,\r\n startDragBeforeDist = datas.startDragBeforeDist,\r\n startDragDist = datas.startDragDist,\r\n absoluteOrigin = datas.absoluteOrigin;\r\n var n = is3d ? 4 : 3;\r\n return minus(calculate(isBefore ? inverseBeforeMatrix : inverseMatrix, plus(absoluteOrigin, [distX, distY]), n), isBefore ? startDragBeforeDist : startDragDist);\r\n }\r\n function getInverseDragDist(_a, isBefore) {\r\n var datas = _a.datas,\r\n distX = _a.distX,\r\n distY = _a.distY;\r\n var beforeMatrix = datas.beforeMatrix,\r\n matrix = datas.matrix,\r\n is3d = datas.is3d,\r\n startDragBeforeDist = datas.startDragBeforeDist,\r\n startDragDist = datas.startDragDist,\r\n absoluteOrigin = datas.absoluteOrigin;\r\n var n = is3d ? 4 : 3;\r\n return minus(calculate(isBefore ? beforeMatrix : matrix, plus(isBefore ? startDragBeforeDist : startDragDist, [distX, distY]), n), absoluteOrigin);\r\n }\r\n function calculateTransformOrigin(transformOrigin, width, height, prevWidth, prevHeight, prevOrigin) {\r\n if (prevWidth === void 0) {\r\n prevWidth = width;\r\n }\r\n\r\n if (prevHeight === void 0) {\r\n prevHeight = height;\r\n }\r\n\r\n if (prevOrigin === void 0) {\r\n prevOrigin = [0, 0];\r\n }\r\n\r\n if (!transformOrigin) {\r\n return prevOrigin;\r\n }\r\n\r\n return transformOrigin.map(function (pos, i) {\r\n var _a = splitUnit(pos),\r\n value = _a.value,\r\n unit = _a.unit;\r\n\r\n var prevSize = i ? prevHeight : prevWidth;\r\n var size = i ? height : width;\r\n\r\n if (pos === \"%\" || isNaN(value)) {\r\n // no value but %\r\n var measureRatio = prevSize ? prevOrigin[i] / prevSize : 0;\r\n return size * measureRatio;\r\n } else if (unit !== \"%\") {\r\n return value;\r\n }\r\n\r\n return size * value / 100;\r\n });\r\n }\r\n function getPosIndexesByDirection(direction) {\r\n var indexes = [];\r\n\r\n if (direction[1] >= 0) {\r\n if (direction[0] >= 0) {\r\n indexes.push(3);\r\n }\r\n\r\n if (direction[0] <= 0) {\r\n indexes.push(2);\r\n }\r\n }\r\n\r\n if (direction[1] <= 0) {\r\n if (direction[0] >= 0) {\r\n indexes.push(1);\r\n }\r\n\r\n if (direction[0] <= 0) {\r\n indexes.push(0);\r\n }\r\n }\r\n\r\n return indexes;\r\n }\r\n function getPosesByDirection(poses, direction) {\r\n /*\r\n [-1, -1](pos1) [0, -1](pos1,pos2) [1, -1](pos2)\r\n [-1, 0](pos1, pos3) [1, 0](pos2, pos4)\r\n [-1, 1](pos3) [0, 1](pos3, pos4) [1, 1](pos4)\r\n */\r\n return getPosIndexesByDirection(direction).map(function (index) {\r\n return poses[index];\r\n });\r\n }\r\n function getPosByDirection(poses, direction) {\r\n /*\r\n [-1, -1](pos1) [0, -1](pos1,pos2) [1, -1](pos2)\r\n [-1, 0](pos1, pos3) [1, 0](pos2, pos4)\r\n [-1, 1](pos3) [0, 1](pos3, pos4) [1, 1](pos4)\r\n */\r\n var nextPoses = getPosesByDirection(poses, direction);\r\n return [average(nextPoses.map(function (pos) {\r\n return pos[0];\r\n })), average(nextPoses.map(function (pos) {\r\n return pos[1];\r\n }))];\r\n }\r\n function getPosByReverseDirection(poses, direction) {\r\n /*\r\n [-1, -1](pos4) [0, -1](pos3,pos4) [1, -1](pos3)\r\n [-1, 0](pos2, pos4) [1, 0](pos3, pos1)\r\n [-1, 1](pos2) [0, 1](pos1, pos2) [1, 1](pos1)\r\n */\r\n return getPosByDirection(poses, direction.map(function (dir) {\r\n return -dir;\r\n }));\r\n }\r\n\r\n function getDist(startPos, matrix, width, height, n, fixedDirection) {\r\n var poses = calculatePoses(matrix, width, height, n);\r\n var fixedPos = getPosByDirection(poses, fixedDirection);\r\n var distX = startPos[0] - fixedPos[0];\r\n var distY = startPos[1] - fixedPos[1];\r\n return [distX, distY];\r\n }\r\n\r\n function getNextMatrix(offsetMatrix, targetMatrix, origin, n) {\r\n return multiply(offsetMatrix, getAbsoluteMatrix(targetMatrix, n, origin), n);\r\n }\r\n function getNextTransformMatrix(state, datas, transform) {\r\n var transformOrigin = state.transformOrigin,\r\n offsetMatrix = state.offsetMatrix,\r\n is3d = state.is3d;\r\n var beforeTransform = datas.beforeTransform,\r\n afterTransform = datas.afterTransform;\r\n var n = is3d ? 4 : 3;\r\n var targetTransform = parseMat([transform]);\r\n return getNextMatrix(offsetMatrix, convertDimension(multiply(multiply(beforeTransform, targetTransform, 4), afterTransform, 4), 4, n), transformOrigin, n);\r\n }\r\n function scaleMatrix(state, scale) {\r\n var transformOrigin = state.transformOrigin,\r\n offsetMatrix = state.offsetMatrix,\r\n is3d = state.is3d,\r\n targetMatrix = state.targetMatrix;\r\n var n = is3d ? 4 : 3;\r\n return getNextMatrix(offsetMatrix, multiply(targetMatrix, createScaleMatrix(scale, n), n), transformOrigin, n);\r\n }\r\n function fillTransformStartEvent(e) {\r\n var originalDatas = e.originalDatas.beforeRenderable;\r\n return {\r\n setTransform: function (transform, index) {\r\n if (index === void 0) {\r\n index = -1;\r\n }\r\n\r\n originalDatas.startTransforms = isArray(transform) ? transform : splitSpace(transform);\r\n setTransformIndex(e, index);\r\n },\r\n setTransformIndex: function (index) {\r\n setTransformIndex(e, index);\r\n }\r\n };\r\n }\r\n function setDefaultTransformIndex(e) {\r\n setTransformIndex(e, -1);\r\n }\r\n function setTransformIndex(e, index) {\r\n var originalDatas = e.originalDatas.beforeRenderable;\r\n var datas = e.datas;\r\n datas.transformIndex = index;\r\n\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n var transform = originalDatas.startTransforms[index];\r\n\r\n if (!transform) {\r\n return;\r\n }\r\n\r\n var info = parse([transform]);\r\n datas.startValue = info[0].functionValue;\r\n }\r\n function fillOriginalTransform(e, transform) {\r\n var originalDatas = e.originalDatas.beforeRenderable;\r\n originalDatas.nextTransforms = splitSpace(transform);\r\n }\r\n function fillTransformEvent(moveable, nextTransform, delta, isPinch, e) {\r\n fillOriginalTransform(e, nextTransform);\r\n return {\r\n transform: nextTransform,\r\n drag: Draggable.drag(moveable, setCustomDrag(e, moveable.state, delta, isPinch, false))\r\n };\r\n }\r\n function getTranslateDist(moveable, transform, fixedDirection, fixedPosition, datas) {\r\n var state = moveable.state;\r\n var left = state.left,\r\n top = state.top;\r\n var groupable = moveable.props.groupable;\r\n var nextMatrix = getNextTransformMatrix(moveable.state, datas, transform);\r\n var groupLeft = groupable ? left : 0;\r\n var groupTop = groupable ? top : 0;\r\n var nextFixedPosition = getDirectionOffset(moveable, fixedDirection, nextMatrix);\r\n var dist = minus(fixedPosition, nextFixedPosition);\r\n return minus(dist, [groupLeft, groupTop]);\r\n }\r\n function getScaleDist(moveable, scaleDist, fixedDirection, fixedPosition, datas) {\r\n return getTranslateDist(moveable, \"scale(\" + scaleDist.join(\", \") + \")\", fixedDirection, fixedPosition, datas);\r\n }\r\n function getOriginDirection(moveable) {\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height,\r\n transformOrigin = _a.transformOrigin;\r\n return [-1 + transformOrigin[0] / (width / 2), -1 + transformOrigin[1] / (height / 2)];\r\n }\r\n function getDirectionOffset(moveable, direction, nextMatrix) {\r\n if (nextMatrix === void 0) {\r\n nextMatrix = moveable.state.allMatrix;\r\n }\r\n\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height,\r\n is3d = _a.is3d;\r\n var n = is3d ? 4 : 3;\r\n var nextFixedOffset = [width / 2 * (1 + direction[0]), height / 2 * (1 + direction[1])];\r\n return calculatePosition(nextMatrix, nextFixedOffset, n);\r\n }\r\n function getRotateDist(moveable, rotateDist, fixedPosition, datas) {\r\n var fixedDirection = getOriginDirection(moveable);\r\n return getTranslateDist(moveable, \"rotate(\" + rotateDist + \"deg)\", fixedDirection, fixedPosition, datas);\r\n }\r\n function getResizeDist(moveable, width, height, fixedDirection, fixedPosition, transformOrigin) {\r\n var groupable = moveable.props.groupable;\r\n var _a = moveable.state,\r\n prevOrigin = _a.transformOrigin,\r\n targetMatrix = _a.targetMatrix,\r\n offsetMatrix = _a.offsetMatrix,\r\n is3d = _a.is3d,\r\n prevWidth = _a.width,\r\n prevHeight = _a.height,\r\n left = _a.left,\r\n top = _a.top;\r\n var n = is3d ? 4 : 3;\r\n var nextOrigin = calculateTransformOrigin(transformOrigin, width, height, prevWidth, prevHeight, prevOrigin);\r\n var groupLeft = groupable ? left : 0;\r\n var groupTop = groupable ? top : 0;\r\n var nextMatrix = getNextMatrix(offsetMatrix, targetMatrix, nextOrigin, n);\r\n var dist = getDist(fixedPosition, nextMatrix, width, height, n, fixedDirection);\r\n return minus(dist, [groupLeft, groupTop]);\r\n }\r\n function getAbsolutePosition(moveable, direction) {\r\n return getPosByDirection(getAbsolutePosesByState(moveable.state), direction);\r\n }\r\n\r\n function calculateContainerPos(rootMatrix, containerRect, n) {\r\n var clientPos = calculatePosition(rootMatrix, [containerRect.clientLeft, containerRect.clientTop], n);\r\n return [containerRect.left + clientPos[0], containerRect.top + clientPos[1]];\r\n }\r\n function getGapGuidelines(guidelines, type, snapThreshold, index, _a, _b) {\r\n var start = _a[0],\r\n end = _a[1];\r\n var otherStart = _b[0],\r\n otherEnd = _b[1];\r\n var totalGuidelines = [];\r\n var otherIndex = index ? 0 : 1;\r\n var otherType = type === \"vertical\" ? \"horizontal\" : \"vertical\";\r\n var elementGuidelines = groupBy(guidelines.filter(function (_a) {\r\n var guidelineType = _a.type;\r\n return guidelineType === type;\r\n }), function (_a) {\r\n var element = _a.element;\r\n return element;\r\n }).map(function (group) {\r\n return group[0];\r\n }).filter(function (_a) {\r\n var pos = _a.pos,\r\n sizes = _a.sizes;\r\n return pos[otherIndex] <= otherEnd && otherStart <= pos[otherIndex] + sizes[otherIndex];\r\n });\r\n elementGuidelines.forEach(function (guideline1) {\r\n var elementStart = guideline1.pos[index];\r\n var elementEnd = elementStart + guideline1.sizes[index];\r\n elementGuidelines.forEach(function (guideline2) {\r\n var guideline2Pos = guideline2.pos,\r\n guideline2Sizes = guideline2.sizes,\r\n guideline2Element = guideline2.element,\r\n guidline2ClassName = guideline2.className;\r\n var targetStart = guideline2Pos[index];\r\n var targetEnd = targetStart + guideline2Sizes[index];\r\n var pos = 0;\r\n var gap = 0;\r\n var canSnap = true;\r\n\r\n if (elementEnd <= targetStart) {\r\n // gap -\r\n gap = elementEnd - targetStart;\r\n pos = targetEnd - gap;\r\n\r\n if (start < pos - snapThreshold) {\r\n canSnap = false;\r\n } // element target moveable\r\n\r\n } else if (targetEnd <= elementStart) {\r\n // gap +\r\n gap = elementStart - targetEnd;\r\n pos = targetStart - gap;\r\n\r\n if (end > pos + snapThreshold) {\r\n canSnap = false;\r\n } // moveable target element\r\n\r\n } else {\r\n return;\r\n }\r\n\r\n if (canSnap) {\r\n totalGuidelines.push({\r\n pos: otherType === \"vertical\" ? [pos, guideline2Pos[1]] : [guideline2Pos[0], pos],\r\n element: guideline2Element,\r\n sizes: guideline2Sizes,\r\n size: 0,\r\n type: otherType,\r\n gap: gap,\r\n className: guidline2ClassName,\r\n gapGuidelines: elementGuidelines\r\n });\r\n }\r\n\r\n if (elementEnd <= start && end <= targetStart) {\r\n // elementEnd moveable target\r\n var centerPos = (targetStart + elementEnd - (end - start)) / 2;\r\n\r\n if (throttle(start - (centerPos - snapThreshold), 0.1) >= 0) {\r\n totalGuidelines.push({\r\n pos: otherType === \"vertical\" ? [centerPos, guideline2Pos[1]] : [guideline2Pos[0], centerPos],\r\n className: guidline2ClassName,\r\n element: guideline2Element,\r\n sizes: guideline2Sizes,\r\n size: 0,\r\n type: otherType,\r\n gap: elementEnd - start,\r\n gapGuidelines: elementGuidelines\r\n });\r\n }\r\n }\r\n });\r\n });\r\n return totalGuidelines;\r\n }\r\n function addGuidelines(totalGuidelines, width, height, horizontalGuidelines, verticalGuidelines, clientLeft, clientTop) {\r\n if (clientLeft === void 0) {\r\n clientLeft = 0;\r\n }\r\n\r\n if (clientTop === void 0) {\r\n clientTop = 0;\r\n }\r\n\r\n horizontalGuidelines && horizontalGuidelines.forEach(function (pos) {\r\n totalGuidelines.push({\r\n type: \"horizontal\",\r\n pos: [0, throttle(pos - clientTop, 0.1)],\r\n size: width\r\n });\r\n });\r\n verticalGuidelines && verticalGuidelines.forEach(function (pos) {\r\n totalGuidelines.push({\r\n type: \"vertical\",\r\n pos: [throttle(pos - clientLeft, 0.1), 0],\r\n size: height\r\n });\r\n });\r\n return totalGuidelines;\r\n }\r\n function caculateElementGuidelines(moveable, values) {\r\n var guidelines = [];\r\n\r\n if (!values.length) {\r\n return guidelines;\r\n }\r\n\r\n var state = moveable.state;\r\n var snapCenter = moveable.props.snapCenter;\r\n var containerClientRect = state.containerClientRect,\r\n _a = state.targetClientRect,\r\n clientTop = _a.top,\r\n clientLeft = _a.left,\r\n rootMatrix = state.rootMatrix,\r\n is3d = state.is3d;\r\n var n = is3d ? 4 : 3;\r\n\r\n var _b = calculateContainerPos(rootMatrix, containerClientRect, n),\r\n containerLeft = _b[0],\r\n containerTop = _b[1];\r\n\r\n var poses = getAbsolutePosesByState(state);\r\n\r\n var _c = getMinMaxs(poses),\r\n targetLeft = _c.minX,\r\n targetTop = _c.minY;\r\n\r\n var _d = minus([targetLeft, targetTop], calculateInversePosition(rootMatrix, [clientLeft - containerLeft, clientTop - containerTop], n)).map(function (pos) {\r\n return roundSign(pos);\r\n }),\r\n distLeft = _d[0],\r\n distTop = _d[1];\r\n\r\n values.forEach(function (value) {\r\n var element = value.element,\r\n topValue = value.top,\r\n leftValue = value.left,\r\n rightValue = value.right,\r\n bottomValue = value.bottom,\r\n className = value.className;\r\n var rect = element.getBoundingClientRect();\r\n var left = rect.left - containerLeft;\r\n var top = rect.top - containerTop;\r\n var bottom = top + rect.height;\r\n var right = left + rect.width;\r\n\r\n var _a = calculateInversePosition(rootMatrix, [left, top], n),\r\n elementLeft = _a[0],\r\n elementTop = _a[1];\r\n\r\n var _b = calculateInversePosition(rootMatrix, [right, bottom], n),\r\n elementRight = _b[0],\r\n elementBottom = _b[1];\r\n\r\n var width = elementRight - elementLeft;\r\n var height = elementBottom - elementTop;\r\n var sizes = [width, height]; //top\r\n\r\n if (topValue !== false) {\r\n guidelines.push({\r\n type: \"vertical\",\r\n element: element,\r\n pos: [throttle(elementLeft + distLeft, 0.1), elementTop],\r\n size: height,\r\n sizes: sizes,\r\n className: className\r\n });\r\n } // bottom\r\n\r\n\r\n if (bottomValue !== false) {\r\n guidelines.push({\r\n type: \"vertical\",\r\n element: element,\r\n pos: [throttle(elementRight + distLeft, 0.1), elementTop],\r\n size: height,\r\n sizes: sizes,\r\n className: className\r\n });\r\n } // left\r\n\r\n\r\n if (leftValue !== false) {\r\n guidelines.push({\r\n type: \"horizontal\",\r\n element: element,\r\n pos: [elementLeft, throttle(elementTop + distTop, 0.1)],\r\n size: width,\r\n sizes: sizes,\r\n className: className\r\n });\r\n } // right\r\n\r\n\r\n if (rightValue !== false) {\r\n guidelines.push({\r\n type: \"horizontal\",\r\n element: element,\r\n pos: [elementLeft, throttle(elementBottom + distTop, 0.1)],\r\n size: width,\r\n sizes: sizes,\r\n className: className\r\n });\r\n }\r\n\r\n if (snapCenter) {\r\n guidelines.push({\r\n type: \"vertical\",\r\n element: element,\r\n pos: [throttle((elementLeft + elementRight) / 2 + distLeft, 0.1), elementTop],\r\n size: height,\r\n sizes: sizes,\r\n center: true,\r\n className: className\r\n });\r\n guidelines.push({\r\n type: \"horizontal\",\r\n element: element,\r\n pos: [elementLeft, throttle((elementTop + elementBottom) / 2 + distTop, 0.1)],\r\n size: width,\r\n sizes: sizes,\r\n center: true,\r\n className: className\r\n });\r\n }\r\n });\r\n return guidelines;\r\n }\r\n function getElementGuidelines(moveable, isRefresh, prevGuidelines) {\r\n if (prevGuidelines === void 0) {\r\n prevGuidelines = [];\r\n }\r\n\r\n var guidelines = [];\r\n var state = moveable.state;\r\n\r\n if (isRefresh && state.guidelines && state.guidelines.length) {\r\n return guidelines;\r\n }\r\n\r\n var _a = moveable.props.elementGuidelines,\r\n elementGuidelines = _a === void 0 ? [] : _a;\r\n\r\n if (!elementGuidelines.length) {\r\n return guidelines;\r\n }\r\n\r\n var prevValues = state.elementGuidelineValues || [];\r\n var nextValues = elementGuidelines.map(function (el) {\r\n if (\"parentElement\" in el) {\r\n return {\r\n element: el\r\n };\r\n }\r\n\r\n return el;\r\n });\r\n state.elementGuidelineValues = nextValues;\r\n\r\n var _b = diff(prevValues.map(function (v) {\r\n return v.element;\r\n }), nextValues.map(function (v) {\r\n return v.element;\r\n })),\r\n added = _b.added,\r\n removed = _b.removed;\r\n\r\n var removedElements = removed.map(function (index) {\r\n return prevValues[index].element;\r\n });\r\n var addedGuidelines = caculateElementGuidelines(moveable, added.map(function (index) {\r\n return nextValues[index];\r\n }).filter(function (value) {\r\n return value.refresh && isRefresh || !value.refresh && !isRefresh;\r\n }));\r\n return __spreadArrays$1(prevGuidelines.filter(function (guideline) {\r\n return removedElements.indexOf(guideline.element) === -1;\r\n }), addedGuidelines);\r\n }\r\n function getTotalGuidelines(moveable) {\r\n var _a = moveable.state,\r\n staticGuidelines = _a.staticGuidelines,\r\n _b = _a.containerClientRect,\r\n containerHeight = _b.scrollHeight,\r\n containerWidth = _b.scrollWidth,\r\n containerClientHeight = _b.clientHeight,\r\n containerClientWidth = _b.clientWidth,\r\n overflow = _b.overflow,\r\n clientLeft = _b.clientLeft,\r\n clientTop = _b.clientTop;\r\n var props = moveable.props;\r\n var _c = props.snapHorizontal,\r\n snapHorizontal = _c === void 0 ? true : _c,\r\n _d = props.snapVertical,\r\n snapVertical = _d === void 0 ? true : _d,\r\n _e = props.snapGap,\r\n snapGap = _e === void 0 ? true : _e,\r\n verticalGuidelines = props.verticalGuidelines,\r\n horizontalGuidelines = props.horizontalGuidelines,\r\n _f = props.snapThreshold,\r\n snapThreshold = _f === void 0 ? 5 : _f;\r\n\r\n var totalGuidelines = __spreadArrays$1(staticGuidelines, getElementGuidelines(moveable, true));\r\n\r\n if (snapGap) {\r\n var _g = getRect(getAbsolutePosesByState(moveable.state)),\r\n top = _g.top,\r\n left = _g.left,\r\n bottom = _g.bottom,\r\n right = _g.right;\r\n\r\n var elementGuidelines = staticGuidelines.filter(function (_a) {\r\n var element = _a.element;\r\n return element;\r\n });\r\n totalGuidelines.push.apply(totalGuidelines, __spreadArrays$1(getGapGuidelines(elementGuidelines, \"horizontal\", snapThreshold, 0, [left, right], [top, bottom]), getGapGuidelines(elementGuidelines, \"vertical\", snapThreshold, 1, [top, bottom], [left, right])));\r\n }\r\n\r\n addGuidelines(totalGuidelines, overflow ? containerWidth : containerClientWidth, overflow ? containerHeight : containerClientHeight, snapHorizontal && horizontalGuidelines, snapVertical && verticalGuidelines, clientLeft, clientTop);\r\n return totalGuidelines;\r\n }\r\n function checkMoveableSnapPoses(moveable, posesX, posesY, snapCenter, customSnapThreshold) {\r\n var props = moveable.props;\r\n var _a = props.snapElement,\r\n snapElement = _a === void 0 ? true : _a;\r\n var snapThreshold = selectValue(customSnapThreshold, props.snapThreshold, 5);\r\n return checkSnapPoses(moveable.state.guidelines, posesX, posesY, {\r\n snapThreshold: snapThreshold,\r\n snapCenter: snapCenter,\r\n snapElement: snapElement\r\n });\r\n }\r\n function checkSnapPoses(guidelines, posesX, posesY, options) {\r\n return {\r\n vertical: checkSnap(guidelines, \"vertical\", posesX, options),\r\n horizontal: checkSnap(guidelines, \"horizontal\", posesY, options)\r\n };\r\n }\r\n function checkSnapKeepRatio(moveable, startPos, endPos) {\r\n var endX = endPos[0],\r\n endY = endPos[1];\r\n var startX = startPos[0],\r\n startY = startPos[1];\r\n\r\n var _a = minus(endPos, startPos),\r\n dx = _a[0],\r\n dy = _a[1];\r\n\r\n var isBottom = dy > 0;\r\n var isRight = dx > 0;\r\n dx = getTinyDist(dx);\r\n dy = getTinyDist(dy);\r\n var verticalInfo = {\r\n isSnap: false,\r\n offset: 0,\r\n pos: 0\r\n };\r\n var horizontalInfo = {\r\n isSnap: false,\r\n offset: 0,\r\n pos: 0\r\n };\r\n\r\n if (dx === 0 && dy === 0) {\r\n return {\r\n vertical: verticalInfo,\r\n horizontal: horizontalInfo\r\n };\r\n }\r\n\r\n var _b = checkMoveableSnapPoses(moveable, dx ? [endX] : [], dy ? [endY] : []),\r\n verticalSnapInfo = _b.vertical,\r\n horizontalSnapInfo = _b.horizontal;\r\n\r\n verticalSnapInfo.posInfos.filter(function (_a) {\r\n var pos = _a.pos;\r\n return isRight ? pos >= startX : pos <= startX;\r\n });\r\n horizontalSnapInfo.posInfos.filter(function (_a) {\r\n var pos = _a.pos;\r\n return isBottom ? pos >= startY : pos <= startY;\r\n });\r\n verticalSnapInfo.isSnap = verticalSnapInfo.posInfos.length > 0;\r\n horizontalSnapInfo.isSnap = horizontalSnapInfo.posInfos.length > 0;\r\n\r\n var _c = getNearestSnapGuidelineInfo(verticalSnapInfo),\r\n isVerticalSnap = _c.isSnap,\r\n verticalGuideline = _c.guideline;\r\n\r\n var _d = getNearestSnapGuidelineInfo(horizontalSnapInfo),\r\n isHorizontalSnap = _d.isSnap,\r\n horizontalGuideline = _d.guideline;\r\n\r\n var horizontalPos = isHorizontalSnap ? horizontalGuideline.pos[1] : 0;\r\n var verticalPos = isVerticalSnap ? verticalGuideline.pos[0] : 0;\r\n\r\n if (dx === 0) {\r\n if (isHorizontalSnap) {\r\n horizontalInfo.isSnap = true;\r\n horizontalInfo.pos = horizontalGuideline.pos[1];\r\n horizontalInfo.offset = endY - horizontalInfo.pos;\r\n }\r\n } else if (dy === 0) {\r\n if (isVerticalSnap) {\r\n verticalInfo.isSnap = true;\r\n verticalInfo.pos = verticalPos;\r\n verticalInfo.offset = endX - verticalPos;\r\n }\r\n } else {\r\n // y - y1 = a * (x - x1)\r\n var a = dy / dx;\r\n var b = endPos[1] - a * endX;\r\n var y = 0;\r\n var x = 0;\r\n var isSnap = false;\r\n\r\n if (isVerticalSnap) {\r\n x = verticalPos;\r\n y = a * x + b;\r\n isSnap = true;\r\n } else if (isHorizontalSnap) {\r\n y = horizontalPos;\r\n x = (y - b) / a;\r\n isSnap = true;\r\n }\r\n\r\n if (isSnap) {\r\n verticalInfo.isSnap = true;\r\n verticalInfo.pos = x;\r\n verticalInfo.offset = endX - x;\r\n horizontalInfo.isSnap = true;\r\n horizontalInfo.pos = y;\r\n horizontalInfo.offset = endY - y;\r\n }\r\n }\r\n\r\n return {\r\n vertical: verticalInfo,\r\n horizontal: horizontalInfo\r\n };\r\n }\r\n function checkSnaps(moveable, rect, isCenter, customSnapThreshold) {\r\n var snapCenter = moveable.props.snapCenter;\r\n var isSnapCenter = snapCenter && isCenter;\r\n var verticalNames = [\"left\", \"right\"];\r\n var horizontalNames = [\"top\", \"bottom\"];\r\n\r\n if (isSnapCenter) {\r\n verticalNames.push(\"center\");\r\n horizontalNames.push(\"middle\");\r\n }\r\n\r\n verticalNames = verticalNames.filter(function (name) {\r\n return name in rect;\r\n });\r\n horizontalNames = horizontalNames.filter(function (name) {\r\n return name in rect;\r\n });\r\n return checkMoveableSnapPoses(moveable, verticalNames.map(function (name) {\r\n return rect[name];\r\n }), horizontalNames.map(function (name) {\r\n return rect[name];\r\n }), isSnapCenter, customSnapThreshold);\r\n }\r\n function getNearestSnapGuidelineInfo(snapInfo) {\r\n var isSnap = snapInfo.isSnap;\r\n\r\n if (!isSnap) {\r\n return {\r\n isSnap: false,\r\n offset: 0,\r\n dist: -1,\r\n pos: 0,\r\n guideline: null\r\n };\r\n }\r\n\r\n var posInfo = snapInfo.posInfos[0];\r\n var guidelineInfo = posInfo.guidelineInfos[0];\r\n var offset = guidelineInfo.offset;\r\n var dist = guidelineInfo.dist;\r\n var guideline = guidelineInfo.guideline;\r\n return {\r\n isSnap: isSnap,\r\n offset: offset,\r\n dist: dist,\r\n pos: posInfo.pos,\r\n guideline: guideline\r\n };\r\n }\r\n\r\n function checkSnap(guidelines, targetType, targetPoses, _a) {\r\n var _b = _a === void 0 ? {} : _a,\r\n _c = _b.snapThreshold,\r\n snapThreshold = _c === void 0 ? 5 : _c,\r\n snapElement = _b.snapElement,\r\n snapCenter = _b.snapCenter;\r\n\r\n if (!guidelines || !guidelines.length) {\r\n return {\r\n isSnap: false,\r\n index: -1,\r\n posInfos: []\r\n };\r\n }\r\n\r\n var isVertical = targetType === \"vertical\";\r\n var posType = isVertical ? 0 : 1;\r\n var snapPosInfos = targetPoses.map(function (targetPos, index) {\r\n var guidelineInfos = guidelines.map(function (guideline) {\r\n var pos = guideline.pos;\r\n var offset = targetPos - pos[posType];\r\n return {\r\n offset: offset,\r\n dist: Math.abs(offset),\r\n guideline: guideline\r\n };\r\n }).filter(function (_a) {\r\n var guideline = _a.guideline,\r\n dist = _a.dist;\r\n var type = guideline.type,\r\n center = guideline.center,\r\n element = guideline.element;\r\n\r\n if (!snapElement && element || !snapCenter && center || type !== targetType || dist > snapThreshold) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }).sort(function (a, b) {\r\n return a.dist - b.dist;\r\n });\r\n return {\r\n pos: targetPos,\r\n index: index,\r\n guidelineInfos: guidelineInfos\r\n };\r\n }).filter(function (snapPosInfo) {\r\n return snapPosInfo.guidelineInfos.length > 0;\r\n }).sort(function (a, b) {\r\n return a.guidelineInfos[0].dist - b.guidelineInfos[0].dist;\r\n });\r\n var isSnap = snapPosInfos.length > 0;\r\n return {\r\n isSnap: isSnap,\r\n index: isSnap ? snapPosInfos[0].index : -1,\r\n posInfos: snapPosInfos\r\n };\r\n }\r\n\r\n function getSnapInfosByDirection(moveable, poses, snapDirection) {\r\n var nextPoses = [];\r\n\r\n if (snapDirection[0] && snapDirection[1]) {\r\n nextPoses = [snapDirection, [-snapDirection[0], snapDirection[1]], [snapDirection[0], -snapDirection[1]]].map(function (direction) {\r\n return getPosByDirection(poses, direction);\r\n });\r\n } else if (!snapDirection[0] && !snapDirection[1]) {\r\n var alignPoses = [poses[0], poses[1], poses[3], poses[2], poses[0]];\r\n\r\n for (var i = 0; i < 4; ++i) {\r\n nextPoses.push(alignPoses[i]);\r\n nextPoses.push([(alignPoses[i][0] + alignPoses[i + 1][0]) / 2, (alignPoses[i][1] + alignPoses[i + 1][1]) / 2]);\r\n }\r\n } else {\r\n if (moveable.props.keepRatio) {\r\n nextPoses = [[-1, -1], [-1, 1], [1, -1], [1, 1], snapDirection].map(function (dir) {\r\n return getPosByDirection(poses, dir);\r\n });\r\n } else {\r\n nextPoses = getPosesByDirection(poses, snapDirection);\r\n\r\n if (nextPoses.length > 1) {\r\n nextPoses.push([(nextPoses[0][0] + nextPoses[1][0]) / 2, (nextPoses[0][1] + nextPoses[1][1]) / 2]);\r\n }\r\n }\r\n }\r\n\r\n return checkMoveableSnapPoses(moveable, nextPoses.map(function (pos) {\r\n return pos[0];\r\n }), nextPoses.map(function (pos) {\r\n return pos[1];\r\n }), true, 1);\r\n }\r\n function checkSnapBoundPriority(a, b) {\r\n var aDist = Math.abs(a.offset);\r\n var bDist = Math.abs(b.offset);\r\n\r\n if (a.isBound && b.isBound) {\r\n return bDist - aDist;\r\n } else if (a.isBound) {\r\n return -1;\r\n } else if (b.isBound) {\r\n return 1;\r\n } else if (a.isSnap && b.isSnap) {\r\n return bDist - aDist;\r\n } else if (a.isSnap) {\r\n return -1;\r\n } else if (b.isSnap) {\r\n return 1;\r\n } else if (aDist < TINY_NUM) {\r\n return 1;\r\n } else if (bDist < TINY_NUM) {\r\n return -1;\r\n }\r\n\r\n return aDist - bDist;\r\n }\r\n function getNearOffsetInfo(offsets, index) {\r\n return offsets.slice().sort(function (a, b) {\r\n var aSign = a.sign[index];\r\n var bSign = b.sign[index];\r\n var aOffset = a.offset[index];\r\n var bOffset = b.offset[index]; // -1 The positions of a and b do not change.\r\n // 1 The positions of a and b are reversed.\r\n\r\n if (!aSign) {\r\n return 1;\r\n } else if (!bSign) {\r\n return -1;\r\n }\r\n\r\n return checkSnapBoundPriority({\r\n isBound: a.isBound,\r\n isSnap: a.isSnap,\r\n offset: aOffset\r\n }, {\r\n isBound: b.isBound,\r\n isSnap: b.isSnap,\r\n offset: bOffset\r\n });\r\n })[0];\r\n }\r\n\r\n function isStartLine(dot, line) {\r\n // l o => true\r\n // o l => false\r\n var cx = average([line[0][0], line[1][0]]);\r\n var cy = average([line[0][1], line[1][1]]);\r\n return {\r\n vertical: cx <= dot[0],\r\n horizontal: cy <= dot[1]\r\n };\r\n }\r\n\r\n function hitTestLine(dot, _a) {\r\n var pos1 = _a[0],\r\n pos2 = _a[1];\r\n var dx = pos2[0] - pos1[0];\r\n var dy = pos2[1] - pos1[1];\r\n\r\n if (Math.abs(dx) < TINY_NUM) {\r\n dx = 0;\r\n }\r\n\r\n if (Math.abs(dy) < TINY_NUM) {\r\n dy = 0;\r\n }\r\n\r\n var test1;\r\n var test2;\r\n\r\n if (!dx) {\r\n test1 = pos1[0];\r\n test2 = dot[0];\r\n } else if (!dy) {\r\n test1 = pos1[1];\r\n test2 = dot[1];\r\n } else {\r\n var a = dy / dx; // y = a * (x - pos1) + pos1\r\n\r\n test1 = a * (dot[0] - pos1[0]) + pos1[1];\r\n test2 = dot[1];\r\n }\r\n\r\n return test1 - test2;\r\n }\r\n\r\n function isSameStartLine(dots, line, error) {\r\n if (error === void 0) {\r\n error = TINY_NUM;\r\n }\r\n\r\n var centerSign = hitTestLine(dots[0], line) <= 0;\r\n return dots.slice(1).every(function (dot) {\r\n var value = hitTestLine(dot, line);\r\n var sign = value <= 0;\r\n return sign === centerSign || Math.abs(value) <= error;\r\n });\r\n }\r\n\r\n function checkInnerBoundDot(pos, start, end, isStart, threshold) {\r\n if (threshold === void 0) {\r\n threshold = 0;\r\n }\r\n\r\n if (isStart && start - threshold <= pos || !isStart && pos <= end + threshold) {\r\n // false 402 565 602 => 37 ([0, 37])\r\n // true 400 524.9712603540036 600 => 124 ([124, 0])\r\n // true 400 410 600 => 10 ([10, 0])\r\n return {\r\n isBound: true,\r\n offset: isStart ? start - pos : end - pos\r\n };\r\n }\r\n\r\n return {\r\n isBound: false,\r\n offset: 0\r\n };\r\n }\r\n\r\n function checkInnerBound(moveable, line, center) {\r\n var bounds = moveable.props.innerBounds;\r\n\r\n if (!bounds) {\r\n return {\r\n isAllBound: false,\r\n isBound: false,\r\n isVerticalBound: false,\r\n isHorizontalBound: false,\r\n offset: [0, 0]\r\n };\r\n }\r\n\r\n var left = bounds.left,\r\n top = bounds.top,\r\n width = bounds.width,\r\n height = bounds.height;\r\n var leftLine = [[left, top], [left, top + height]];\r\n var topLine = [[left, top], [left + width, top]];\r\n var rightLine = [[left + width, top], [left + width, top + height]];\r\n var bottomLine = [[left, top + height], [left + width, top + height]];\r\n\r\n var _a = isStartLine(center, line),\r\n isHorizontalStart = _a.horizontal,\r\n isVerticalStart = _a.vertical;\r\n\r\n if (isSameStartLine([center, [left, top], [left + width, top], [left, top + height], [left + width, top + height]], line)) {\r\n return {\r\n isAllBound: false,\r\n isBound: false,\r\n isVerticalBound: false,\r\n isHorizontalBound: false,\r\n offset: [0, 0]\r\n };\r\n } // test vertical\r\n\r\n\r\n var topBoundInfo = checkLineBoundCollision(line, topLine, isVerticalStart);\r\n var bottomBoundInfo = checkLineBoundCollision(line, bottomLine, isVerticalStart); // test horizontal\r\n\r\n var leftBoundInfo = checkLineBoundCollision(line, leftLine, isHorizontalStart);\r\n var rightBoundInfo = checkLineBoundCollision(line, rightLine, isHorizontalStart);\r\n var isAllVerticalBound = topBoundInfo.isBound && bottomBoundInfo.isBound;\r\n var isVerticalBound = topBoundInfo.isBound || bottomBoundInfo.isBound;\r\n var isAllHorizontalBound = leftBoundInfo.isBound && rightBoundInfo.isBound;\r\n var isHorizontalBound = leftBoundInfo.isBound || rightBoundInfo.isBound;\r\n var verticalOffset = maxOffset(topBoundInfo.offset, bottomBoundInfo.offset);\r\n var horizontalOffset = maxOffset(leftBoundInfo.offset, rightBoundInfo.offset);\r\n var offset = [0, 0];\r\n var isBound = false;\r\n var isAllBound = false;\r\n\r\n if (Math.abs(horizontalOffset) < Math.abs(verticalOffset)) {\r\n offset = [verticalOffset, 0];\r\n isBound = isVerticalBound;\r\n isAllBound = isAllVerticalBound;\r\n } else {\r\n offset = [0, horizontalOffset];\r\n isBound = isHorizontalBound;\r\n isAllBound = isAllHorizontalBound;\r\n }\r\n\r\n return {\r\n isAllBound: isAllBound,\r\n isVerticalBound: isVerticalBound,\r\n isHorizontalBound: isHorizontalBound,\r\n isBound: isBound,\r\n offset: offset\r\n };\r\n }\r\n\r\n function checkLineBoundCollision(line, boundLine, isStart, threshold, isRender) {\r\n var dot1 = line[0];\r\n var dot2 = line[1];\r\n var boundDot1 = boundLine[0];\r\n var boundDot2 = boundLine[1];\r\n var dy1 = getTinyDist(dot2[1] - dot1[1]);\r\n var dx1 = getTinyDist(dot2[0] - dot1[0]);\r\n var dy2 = getTinyDist(boundDot2[1] - boundDot1[1]);\r\n var dx2 = getTinyDist(boundDot2[0] - boundDot1[0]); // dx2 or dy2 is zero\r\n\r\n if (!dx2) {\r\n // vertical\r\n if (isRender && !dy1) {\r\n // 90deg\r\n return {\r\n isBound: false,\r\n offset: 0\r\n };\r\n } else if (dx1) {\r\n // const y = dy1 ? dy1 / dx1 * (boundDot1[0] - dot1[0]) + dot1[1] : dot1[1];\r\n var y = dy1 / dx1 * (boundDot1[0] - dot1[0]) + dot1[1]; // boundDot1[1] <= y <= boundDot2[1]\r\n\r\n return checkInnerBoundDot(y, boundDot1[1], boundDot2[1], isStart, threshold);\r\n } else {\r\n var offset = boundDot1[0] - dot1[0];\r\n var isBound = Math.abs(offset) <= (threshold || 0);\r\n return {\r\n isBound: isBound,\r\n offset: isBound ? offset : 0\r\n };\r\n }\r\n } else if (!dy2) {\r\n // horizontal\r\n if (isRender && !dx1) {\r\n // 90deg\r\n return {\r\n isBound: false,\r\n offset: 0\r\n };\r\n } else if (dy1) {\r\n // y = a * (x - x1) + y1\r\n // x = (y - y1) / a + x1\r\n // const a = dy1 / dx1;\r\n // const x = dx1 ? (boundDot1[1] - dot1[1]) / a + dot1[0] : dot1[0];\r\n var x = (boundDot1[1] - dot1[1]) / (dy1 / dx1) + dot1[0]; // boundDot1[0] <= x && x <= boundDot2[0]\r\n\r\n return checkInnerBoundDot(x, boundDot1[0], boundDot2[0], isStart, threshold);\r\n } else {\r\n var offset = boundDot1[1] - dot1[1];\r\n var isBound = Math.abs(offset) <= (threshold || 0);\r\n return {\r\n isBound: isBound,\r\n offset: isBound ? offset : 0\r\n };\r\n }\r\n }\r\n\r\n return {\r\n isBound: false,\r\n offset: 0\r\n };\r\n }\r\n\r\n function getInnerBoundInfo(moveable, lines, center, datas) {\r\n return lines.map(function (_a) {\r\n var multiple = _a[0],\r\n pos1 = _a[1],\r\n pos2 = _a[2];\r\n\r\n var _b = checkInnerBound(moveable, [pos1, pos2], center),\r\n isBound = _b.isBound,\r\n offset = _b.offset,\r\n isVerticalBound = _b.isVerticalBound,\r\n isHorizontalBound = _b.isHorizontalBound;\r\n\r\n var sizeOffset = getDragDist({\r\n datas: datas,\r\n distX: offset[0],\r\n distY: offset[1]\r\n }).map(function (size, i) {\r\n return size * (multiple[i] ? 2 / multiple[i] : 0);\r\n });\r\n return {\r\n sign: multiple,\r\n isBound: isBound,\r\n isVerticalBound: isVerticalBound,\r\n isHorizontalBound: isHorizontalBound,\r\n isSnap: false,\r\n offset: sizeOffset\r\n };\r\n });\r\n }\r\n function getInnerBoundDragInfo(moveable, poses, datas) {\r\n var _a;\r\n\r\n var lines = getCheckInnerBoundLines(poses, [0, 0], false).map(function (_a) {\r\n var sign = _a[0],\r\n pos1 = _a[1],\r\n pos2 = _a[2];\r\n return [sign.map(function (dir) {\r\n return Math.abs(dir) * 2;\r\n }), pos1, pos2];\r\n });\r\n var innerBoundInfo = getInnerBoundInfo(moveable, lines, getPosByDirection(poses, [0, 0]), datas);\r\n var widthOffsetInfo = getNearOffsetInfo(innerBoundInfo, 0);\r\n var heightOffsetInfo = getNearOffsetInfo(innerBoundInfo, 1);\r\n var verticalOffset = 0;\r\n var horizontalOffset = 0;\r\n var isVerticalBound = widthOffsetInfo.isVerticalBound || heightOffsetInfo.isVerticalBound;\r\n var isHorizontalBound = widthOffsetInfo.isHorizontalBound || heightOffsetInfo.isHorizontalBound;\r\n\r\n if (isVerticalBound || isHorizontalBound) {\r\n _a = getInverseDragDist({\r\n datas: datas,\r\n distX: -widthOffsetInfo.offset[0],\r\n distY: -heightOffsetInfo.offset[1]\r\n }), verticalOffset = _a[0], horizontalOffset = _a[1];\r\n }\r\n\r\n return {\r\n vertical: {\r\n isBound: isVerticalBound,\r\n offset: verticalOffset\r\n },\r\n horizontal: {\r\n isBound: isHorizontalBound,\r\n offset: horizontalOffset\r\n }\r\n };\r\n }\r\n function getCheckSnapLineDirections(direction, keepRatio) {\r\n var lineDirections = [];\r\n var x = direction[0];\r\n var y = direction[1];\r\n\r\n if (x && y) {\r\n lineDirections.push([[0, y * 2], direction, [-x, y]], [[x * 2, 0], direction, [x, -y]]);\r\n } else if (x) {\r\n // vertcal\r\n lineDirections.push([[x * 2, 0], [x, 1], [x, -1]]);\r\n\r\n if (keepRatio) {\r\n lineDirections.push([[0, -1], [x, -1], [-x, -1]], [[0, 1], [x, 1], [-x, 1]]);\r\n }\r\n } else if (y) {\r\n // horizontal\r\n lineDirections.push([[0, y * 2], [1, y], [-1, y]]);\r\n\r\n if (keepRatio) {\r\n lineDirections.push([[-1, 0], [-1, y], [-1, -y]], [[1, 0], [1, y], [1, -y]]);\r\n }\r\n } else {\r\n // [0, 0] to all direction\r\n lineDirections.push([[-1, 0], [-1, -1], [-1, 1]], [[1, 0], [1, -1], [1, 1]], [[0, -1], [-1, -1], [1, -1]], [[0, 1], [-1, 1], [1, 1]]);\r\n }\r\n\r\n return lineDirections;\r\n }\r\n function getCheckInnerBoundLines(poses, direction, keepRatio) {\r\n return getCheckSnapLineDirections(direction, keepRatio).map(function (_a) {\r\n var sign = _a[0],\r\n dir1 = _a[1],\r\n dir2 = _a[2];\r\n return [sign, getPosByDirection(poses, dir1), getPosByDirection(poses, dir2)];\r\n });\r\n }\r\n\r\n function isBoundRotate(relativePoses, boundDots, center, rad) {\r\n var nextPoses = rad ? relativePoses.map(function (pos) {\r\n return rotate(pos, rad);\r\n }) : relativePoses;\r\n\r\n var dots = __spreadArrays$1([center], boundDots);\r\n\r\n return [[nextPoses[0], nextPoses[1]], [nextPoses[1], nextPoses[3]], [nextPoses[3], nextPoses[2]], [nextPoses[2], nextPoses[0]]].some(function (line) {\r\n return !isSameStartLine(dots, line);\r\n });\r\n }\r\n\r\n function getDistPointLine(_a) {\r\n // x = 0, y = 0\r\n // d = (ax + by + c) / root(a2 + b2)\r\n var pos1 = _a[0],\r\n pos2 = _a[1];\r\n var dx = pos2[0] - pos1[0];\r\n var dy = pos2[1] - pos1[1];\r\n\r\n if (!dx) {\r\n return Math.abs(pos1[0]);\r\n }\r\n\r\n if (!dy) {\r\n return Math.abs(pos1[1]);\r\n } // y - y1 = a(x - x1)\r\n // 0 = ax -y + -a * x1 + y1\r\n\r\n\r\n var a = dy / dx;\r\n return Math.abs((-a * pos1[0] + pos1[1]) / Math.sqrt(Math.pow(a, 2) + 1));\r\n }\r\n\r\n function solveReverseLine(_a) {\r\n var pos1 = _a[0],\r\n pos2 = _a[1];\r\n var dx = pos2[0] - pos1[0];\r\n var dy = pos2[1] - pos1[1];\r\n\r\n if (!dx) {\r\n return [pos1[0], 0];\r\n }\r\n\r\n if (!dy) {\r\n return [0, pos1[1]];\r\n }\r\n\r\n var a = dy / dx; // y - y1 = a (x - x1)\r\n // y = ax - a * x1 + y1\r\n\r\n var b = -a * pos1[0] + pos1[1]; // y = ax + b = -1/a x\r\n // x = -b / (a + 1 / a)\r\n // y = b / (1 + 1 / a^2)\r\n\r\n return [-b / (a + 1 / a), b / (a * a + 1)];\r\n }\r\n\r\n function checkRotateInnerBounds(moveable, prevPoses, nextPoses, origin, rotation) {\r\n var bounds = moveable.props.innerBounds;\r\n var rad = rotation * Math.PI / 180;\r\n\r\n if (!bounds) {\r\n return [];\r\n }\r\n\r\n var left = bounds.left,\r\n top = bounds.top,\r\n width = bounds.width,\r\n height = bounds.height;\r\n var relativeLeft = left - origin[0];\r\n var relativeRight = left + width - origin[0];\r\n var relativeTop = top - origin[1];\r\n var relativeBottom = top + height - origin[1];\r\n var dots = [[relativeLeft, relativeTop], [relativeRight, relativeTop], [relativeLeft, relativeBottom], [relativeRight, relativeBottom]];\r\n var center = getPosByDirection(nextPoses, [0, 0]);\r\n\r\n if (!isBoundRotate(nextPoses, dots, center, 0)) {\r\n return [];\r\n }\r\n\r\n var result = [];\r\n var dotInfos = dots.map(function (dot) {\r\n return [getDistSize(dot), getRad$1([0, 0], dot)];\r\n });\r\n [[nextPoses[0], nextPoses[1]], [nextPoses[1], nextPoses[3]], [nextPoses[3], nextPoses[2]], [nextPoses[2], nextPoses[0]]].forEach(function (line) {\r\n var lineRad = getRad$1([0, 0], solveReverseLine(line));\r\n var lineDist = getDistPointLine(line);\r\n result.push.apply(result, dotInfos.filter(function (_a) {\r\n var dotDist = _a[0];\r\n return dotDist && lineDist <= dotDist;\r\n }).map(function (_a) {\r\n var dotDist = _a[0],\r\n dotRad = _a[1];\r\n var distRad = Math.acos(dotDist ? lineDist / dotDist : 0);\r\n var nextRad1 = dotRad + distRad;\r\n var nextRad2 = dotRad - distRad;\r\n return [rad + nextRad1 - lineRad, rad + nextRad2 - lineRad];\r\n }).reduce(function (prev, cur) {\r\n prev.push.apply(prev, cur);\r\n return prev;\r\n }, []).filter(function (nextRad) {\r\n return !isBoundRotate(prevPoses, dots, center, nextRad);\r\n }).map(function (nextRad) {\r\n return throttle(nextRad * 180 / Math.PI, TINY_NUM);\r\n }));\r\n });\r\n return result;\r\n }\r\n function checkInnerBoundPoses(moveable) {\r\n var innerBounds = moveable.props.innerBounds;\r\n\r\n if (!innerBounds) {\r\n return {\r\n vertical: [],\r\n horizontal: []\r\n };\r\n }\r\n\r\n var _a = moveable.getRect(),\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n pos3 = _a.pos3,\r\n pos4 = _a.pos4;\r\n\r\n var poses = [pos1, pos2, pos3, pos4];\r\n var center = getPosByDirection(poses, [0, 0]);\r\n var left = innerBounds.left,\r\n top = innerBounds.top,\r\n width = innerBounds.width,\r\n height = innerBounds.height;\r\n var leftLine = [[left, top], [left, top + height]];\r\n var topLine = [[left, top], [left + width, top]];\r\n var rightLine = [[left + width, top], [left + width, top + height]];\r\n var bottomLine = [[left, top + height], [left + width, top + height]];\r\n var lines = [[pos1, pos2], [pos2, pos4], [pos4, pos3], [pos3, pos1]];\r\n var horizontalPoses = [];\r\n var verticalPoses = [];\r\n var boundMap = {\r\n top: false,\r\n bottom: false,\r\n left: false,\r\n right: false\r\n };\r\n lines.forEach(function (line) {\r\n var _a = isStartLine(center, line),\r\n isHorizontalStart = _a.horizontal,\r\n isVerticalStart = _a.vertical; // test vertical\r\n\r\n\r\n var topBoundInfo = checkLineBoundCollision(line, topLine, isVerticalStart, 1, true);\r\n var bottomBoundInfo = checkLineBoundCollision(line, bottomLine, isVerticalStart, 1, true); // test horizontal\r\n\r\n var leftBoundInfo = checkLineBoundCollision(line, leftLine, isHorizontalStart, 1, true);\r\n var rightBoundInfo = checkLineBoundCollision(line, rightLine, isHorizontalStart, 1, true);\r\n\r\n if (topBoundInfo.isBound && !boundMap.top) {\r\n horizontalPoses.push(top);\r\n boundMap.top = true;\r\n }\r\n\r\n if (bottomBoundInfo.isBound && !boundMap.bottom) {\r\n horizontalPoses.push(top + height);\r\n boundMap.bottom = true;\r\n }\r\n\r\n if (leftBoundInfo.isBound && !boundMap.left) {\r\n verticalPoses.push(left);\r\n boundMap.left = true;\r\n }\r\n\r\n if (rightBoundInfo.isBound && !boundMap.right) {\r\n verticalPoses.push(left + width);\r\n boundMap.right = true;\r\n }\r\n });\r\n return {\r\n horizontal: horizontalPoses,\r\n vertical: verticalPoses\r\n };\r\n }\r\n\r\n function checkBoundPoses(bounds, verticalPoses, horizontalPoses) {\r\n var _a = bounds || {},\r\n _b = _a.left,\r\n left = _b === void 0 ? -Infinity : _b,\r\n _c = _a.top,\r\n top = _c === void 0 ? -Infinity : _c,\r\n _d = _a.right,\r\n right = _d === void 0 ? Infinity : _d,\r\n _e = _a.bottom,\r\n bottom = _e === void 0 ? Infinity : _e;\r\n\r\n var nextBounds = {\r\n left: left,\r\n top: top,\r\n right: right,\r\n bottom: bottom\r\n };\r\n return {\r\n vertical: checkBounds(nextBounds, verticalPoses, true),\r\n horizontal: checkBounds(nextBounds, horizontalPoses, false)\r\n };\r\n }\r\n function checkBoundKeepRatio(moveable, startPos, endPos) {\r\n var _a = moveable.props.bounds || {},\r\n _b = _a.left,\r\n left = _b === void 0 ? -Infinity : _b,\r\n _c = _a.top,\r\n top = _c === void 0 ? -Infinity : _c,\r\n _d = _a.right,\r\n right = _d === void 0 ? Infinity : _d,\r\n _e = _a.bottom,\r\n bottom = _e === void 0 ? Infinity : _e;\r\n\r\n var endX = endPos[0],\r\n endY = endPos[1];\r\n\r\n var _f = minus(endPos, startPos),\r\n dx = _f[0],\r\n dy = _f[1];\r\n\r\n if (Math.abs(dx) < TINY_NUM) {\r\n dx = 0;\r\n }\r\n\r\n if (Math.abs(dy) < TINY_NUM) {\r\n dy = 0;\r\n }\r\n\r\n var isBottom = dy > 0;\r\n var isRight = dx > 0;\r\n var verticalInfo = {\r\n isBound: false,\r\n offset: 0,\r\n pos: 0\r\n };\r\n var horizontalInfo = {\r\n isBound: false,\r\n offset: 0,\r\n pos: 0\r\n };\r\n\r\n if (dx === 0 && dy === 0) {\r\n return {\r\n vertical: verticalInfo,\r\n horizontal: horizontalInfo\r\n };\r\n } else if (dx === 0) {\r\n if (isBottom) {\r\n if (bottom < endY) {\r\n horizontalInfo.pos = bottom;\r\n horizontalInfo.offset = endY - bottom;\r\n }\r\n } else {\r\n if (top > endY) {\r\n horizontalInfo.pos = top;\r\n horizontalInfo.offset = endY - top;\r\n }\r\n }\r\n } else if (dy === 0) {\r\n if (isRight) {\r\n if (right < endX) {\r\n verticalInfo.pos = right;\r\n verticalInfo.offset = endX - right;\r\n }\r\n } else {\r\n if (left > endX) {\r\n verticalInfo.pos = left;\r\n verticalInfo.offset = endX - left;\r\n }\r\n }\r\n } else {\r\n // y - y1 = a * (x - x1)\r\n var a = dy / dx;\r\n var b = endPos[1] - a * endX;\r\n var y = 0;\r\n var x = 0;\r\n var isBound = false;\r\n\r\n if (isRight && right <= endX) {\r\n y = a * right + b;\r\n x = right;\r\n isBound = true;\r\n } else if (!isRight && endX <= left) {\r\n y = a * left + b;\r\n x = left;\r\n isBound = true;\r\n }\r\n\r\n if (isBound) {\r\n if (y < top || y > bottom) {\r\n isBound = false;\r\n }\r\n }\r\n\r\n if (!isBound) {\r\n if (isBottom && bottom <= endY) {\r\n y = bottom;\r\n x = (y - b) / a;\r\n isBound = true;\r\n } else if (!isBottom && endY <= top) {\r\n y = top;\r\n x = (y - b) / a;\r\n isBound = true;\r\n }\r\n }\r\n\r\n if (isBound) {\r\n verticalInfo.isBound = true;\r\n verticalInfo.pos = x;\r\n verticalInfo.offset = endX - x;\r\n horizontalInfo.isBound = true;\r\n horizontalInfo.pos = y;\r\n horizontalInfo.offset = endY - y;\r\n }\r\n }\r\n\r\n return {\r\n vertical: verticalInfo,\r\n horizontal: horizontalInfo\r\n };\r\n }\r\n\r\n function checkBounds(bounds, poses, isVertical) {\r\n // 0 [100 - 200] 300\r\n var startBoundPos = bounds[isVertical ? \"left\" : \"top\"];\r\n var endBoundPos = bounds[isVertical ? \"right\" : \"bottom\"]; // 450\r\n\r\n var minPos = Math.min.apply(Math, poses);\r\n var maxPos = Math.max.apply(Math, poses);\r\n var boundInfos = [];\r\n\r\n if (startBoundPos + 1 > minPos) {\r\n boundInfos.push({\r\n isBound: true,\r\n offset: minPos - startBoundPos,\r\n pos: startBoundPos\r\n });\r\n }\r\n\r\n if (endBoundPos - 1 < maxPos) {\r\n boundInfos.push({\r\n isBound: true,\r\n offset: maxPos - endBoundPos,\r\n pos: endBoundPos\r\n });\r\n }\r\n\r\n if (!boundInfos.length) {\r\n boundInfos.push({\r\n isBound: false,\r\n offset: 0,\r\n pos: 0\r\n });\r\n }\r\n\r\n return boundInfos.sort(function (a, b) {\r\n return Math.abs(b.offset) - Math.abs(a.offset);\r\n });\r\n }\r\n\r\n function isBoundRotate$1(relativePoses, boundRect, rad) {\r\n var nextPoses = rad ? relativePoses.map(function (pos) {\r\n return rotate(pos, rad);\r\n }) : relativePoses;\r\n return nextPoses.some(function (pos) {\r\n return pos[0] < boundRect.left && Math.abs(pos[0] - boundRect.left) > 0.1 || pos[0] > boundRect.right && Math.abs(pos[0] - boundRect.right) > 0.1 || pos[1] < boundRect.top && Math.abs(pos[1] - boundRect.top) > 0.1 || pos[1] > boundRect.bottom && Math.abs(pos[1] - boundRect.bottom) > 0.1;\r\n });\r\n }\r\n function boundRotate(vec, boundPos, index) {\r\n var r = getDistSize(vec);\r\n var nextPos = Math.sqrt(r * r - boundPos * boundPos) || 0;\r\n return [nextPos, -nextPos].sort(function (a, b) {\r\n return Math.abs(a - vec[index ? 0 : 1]) - Math.abs(b - vec[index ? 0 : 1]);\r\n }).map(function (pos) {\r\n return getRad$1([0, 0], index ? [pos, boundPos] : [boundPos, pos]);\r\n });\r\n }\r\n function checkRotateBounds(moveable, prevPoses, nextPoses, origin, rotation) {\r\n var bounds = moveable.props.bounds;\r\n var rad = rotation * Math.PI / 180;\r\n\r\n if (!bounds) {\r\n return [];\r\n }\r\n\r\n var _a = bounds.left,\r\n left = _a === void 0 ? -Infinity : _a,\r\n _b = bounds.top,\r\n top = _b === void 0 ? -Infinity : _b,\r\n _c = bounds.right,\r\n right = _c === void 0 ? Infinity : _c,\r\n _d = bounds.bottom,\r\n bottom = _d === void 0 ? Infinity : _d;\r\n var relativeLeft = left - origin[0];\r\n var relativeRight = right - origin[0];\r\n var relativeTop = top - origin[1];\r\n var relativeBottom = bottom - origin[1];\r\n var boundRect = {\r\n left: relativeLeft,\r\n top: relativeTop,\r\n right: relativeRight,\r\n bottom: relativeBottom\r\n };\r\n\r\n if (!isBoundRotate$1(nextPoses, boundRect, 0)) {\r\n return [];\r\n }\r\n\r\n var result = [];\r\n [[relativeLeft, 0], [relativeRight, 0], [relativeTop, 1], [relativeBottom, 1]].forEach(function (_a) {\r\n var boundPos = _a[0],\r\n index = _a[1];\r\n nextPoses.forEach(function (nextPos) {\r\n var relativeRad1 = getRad$1([0, 0], nextPos);\r\n result.push.apply(result, boundRotate(nextPos, boundPos, index).map(function (relativeRad2) {\r\n return rad + relativeRad2 - relativeRad1;\r\n }).filter(function (nextRad) {\r\n return !isBoundRotate$1(prevPoses, boundRect, nextRad);\r\n }).map(function (nextRad) {\r\n return throttle(nextRad * 180 / Math.PI, TINY_NUM);\r\n }));\r\n });\r\n });\r\n return result;\r\n }\r\n\r\n var DIRECTION_NAMES = {\r\n horizontal: [\"left\", \"top\", \"width\", \"Y\", \"X\"],\r\n vertical: [\"top\", \"left\", \"height\", \"X\", \"Y\"]\r\n };\r\n function snapStart(moveable) {\r\n var state = moveable.state;\r\n\r\n if (state.guidelines && state.guidelines.length) {\r\n return;\r\n }\r\n\r\n state.elementGuidelineValues = [];\r\n state.staticGuidelines = getElementGuidelines(moveable, false);\r\n state.guidelines = getTotalGuidelines(moveable);\r\n state.enableSnap = true;\r\n }\r\n function hasGuidelines(moveable, ableName) {\r\n var _a = moveable.props,\r\n snappable = _a.snappable,\r\n bounds = _a.bounds,\r\n innerBounds = _a.innerBounds,\r\n verticalGuidelines = _a.verticalGuidelines,\r\n horizontalGuidelines = _a.horizontalGuidelines,\r\n _b = moveable.state,\r\n guidelines = _b.guidelines,\r\n enableSnap = _b.enableSnap;\r\n\r\n if (!snappable || !enableSnap || ableName && snappable !== true && snappable.indexOf(ableName) < 0) {\r\n return false;\r\n }\r\n\r\n if (bounds || innerBounds || guidelines && guidelines.length || verticalGuidelines && verticalGuidelines.length || horizontalGuidelines && horizontalGuidelines.length) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function solveNextOffset(pos1, pos2, offset, isVertical, datas) {\r\n var sizeOffset = solveEquation(pos1, pos2, offset, isVertical);\r\n\r\n if (!sizeOffset) {\r\n return [0, 0];\r\n }\r\n\r\n var _a = getDragDist({\r\n datas: datas,\r\n distX: sizeOffset[0],\r\n distY: sizeOffset[1]\r\n }),\r\n widthOffset = _a[0],\r\n heightOffset = _a[1];\r\n\r\n return [widthOffset, heightOffset];\r\n }\r\n\r\n function getNextFixedPoses(matrix, width, height, fixedPos, direction, is3d) {\r\n var nextPoses = calculatePoses(matrix, width, height, is3d ? 4 : 3);\r\n var nextPos = getPosByReverseDirection(nextPoses, direction);\r\n return getAbsolutePoses(nextPoses, minus(fixedPos, nextPos));\r\n }\r\n\r\n function getSnapBoundOffset(boundInfo, snapInfo) {\r\n if (boundInfo.isBound) {\r\n return boundInfo.offset;\r\n } else if (snapInfo.isSnap) {\r\n return snapInfo.offset;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function getSnapBound(boundInfo, snapInfo) {\r\n if (boundInfo.isBound) {\r\n return boundInfo.offset;\r\n } else if (snapInfo.isSnap) {\r\n return getNearestSnapGuidelineInfo(snapInfo).offset;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function checkSnapBoundsKeepRatio(moveable, startPos, endPos, isRequest) {\r\n var _a = checkBoundKeepRatio(moveable, startPos, endPos),\r\n horizontalBoundInfo = _a.horizontal,\r\n verticalBoundInfo = _a.vertical;\r\n\r\n var _b = isRequest ? {\r\n horizontal: {\r\n isSnap: false\r\n },\r\n vertical: {\r\n isSnap: false\r\n }\r\n } : checkSnapKeepRatio(moveable, startPos, endPos),\r\n horizontalSnapInfo = _b.horizontal,\r\n verticalSnapInfo = _b.vertical;\r\n\r\n var horizontalOffset = getSnapBoundOffset(horizontalBoundInfo, horizontalSnapInfo);\r\n var verticalOffset = getSnapBoundOffset(verticalBoundInfo, verticalSnapInfo);\r\n var horizontalDist = Math.abs(horizontalOffset);\r\n var verticalDist = Math.abs(verticalOffset);\r\n return {\r\n horizontal: {\r\n isBound: horizontalBoundInfo.isBound,\r\n isSnap: horizontalSnapInfo.isSnap,\r\n offset: horizontalOffset,\r\n dist: horizontalDist\r\n },\r\n vertical: {\r\n isBound: verticalBoundInfo.isBound,\r\n isSnap: verticalSnapInfo.isSnap,\r\n offset: verticalOffset,\r\n dist: verticalDist\r\n }\r\n };\r\n }\r\n function checkMoveableSnapBounds(moveable, isRequest, poses, boundPoses) {\r\n if (boundPoses === void 0) {\r\n boundPoses = poses;\r\n }\r\n\r\n var _a = checkBoundPoses(moveable.props.bounds, boundPoses.map(function (pos) {\r\n return pos[0];\r\n }), boundPoses.map(function (pos) {\r\n return pos[1];\r\n })),\r\n horizontalBoundInfos = _a.horizontal,\r\n verticalBoundInfos = _a.vertical;\r\n\r\n var _b = isRequest ? {\r\n horizontal: {\r\n isSnap: false,\r\n index: -1\r\n },\r\n vertical: {\r\n isSnap: false,\r\n index: -1\r\n }\r\n } : checkMoveableSnapPoses(moveable, poses.map(function (pos) {\r\n return pos[0];\r\n }), poses.map(function (pos) {\r\n return pos[1];\r\n }), moveable.props.snapCenter),\r\n horizontalSnapInfo = _b.horizontal,\r\n verticalSnapInfo = _b.vertical;\r\n\r\n var horizontalOffset = getSnapBound(horizontalBoundInfos[0], horizontalSnapInfo);\r\n var verticalOffset = getSnapBound(verticalBoundInfos[0], verticalSnapInfo);\r\n var horizontalDist = Math.abs(horizontalOffset);\r\n var verticalDist = Math.abs(verticalOffset);\r\n return {\r\n horizontal: {\r\n isBound: horizontalBoundInfos[0].isBound,\r\n isSnap: horizontalSnapInfo.isSnap,\r\n snapIndex: horizontalSnapInfo.index,\r\n offset: horizontalOffset,\r\n dist: horizontalDist,\r\n bounds: horizontalBoundInfos,\r\n snap: horizontalSnapInfo\r\n },\r\n vertical: {\r\n isBound: verticalBoundInfos[0].isBound,\r\n isSnap: verticalSnapInfo.isSnap,\r\n snapIndex: verticalSnapInfo.index,\r\n offset: verticalOffset,\r\n dist: verticalDist,\r\n bounds: verticalBoundInfos,\r\n snap: verticalSnapInfo\r\n }\r\n };\r\n }\r\n function checkSnapBounds(guideines, bounds, posesX, posesY, options) {\r\n if (options === void 0) {\r\n options = {};\r\n }\r\n\r\n var _a = checkBoundPoses(bounds, posesX, posesY),\r\n horizontalBoundInfos = _a.horizontal,\r\n verticalBoundInfos = _a.vertical;\r\n\r\n var _b = options.isRequest ? {\r\n horizontal: {\r\n isSnap: false,\r\n index: -1\r\n },\r\n vertical: {\r\n isSnap: false,\r\n index: -1\r\n }\r\n } : checkSnapPoses(guideines, posesX, posesY, options),\r\n horizontalSnapInfo = _b.horizontal,\r\n verticalSnapInfo = _b.vertical;\r\n\r\n var horizontalOffset = getSnapBound(horizontalBoundInfos[0], horizontalSnapInfo);\r\n var verticalOffset = getSnapBound(verticalBoundInfos[0], verticalSnapInfo);\r\n var horizontalDist = Math.abs(horizontalOffset);\r\n var verticalDist = Math.abs(verticalOffset);\r\n return {\r\n horizontal: {\r\n isBound: horizontalBoundInfos[0].isBound,\r\n isSnap: horizontalSnapInfo.isSnap,\r\n snapIndex: horizontalSnapInfo.index,\r\n offset: horizontalOffset,\r\n dist: horizontalDist,\r\n bounds: horizontalBoundInfos,\r\n snap: horizontalSnapInfo\r\n },\r\n vertical: {\r\n isBound: verticalBoundInfos[0].isBound,\r\n isSnap: verticalSnapInfo.isSnap,\r\n snapIndex: verticalSnapInfo.index,\r\n offset: verticalOffset,\r\n dist: verticalDist,\r\n bounds: verticalBoundInfos,\r\n snap: verticalSnapInfo\r\n }\r\n };\r\n }\r\n function normalized(value) {\r\n return value ? value / Math.abs(value) : 0;\r\n }\r\n function checkMaxBounds(moveable, poses, direction, fixedPosition, datas) {\r\n var fixedDirection = [-direction[0], -direction[1]];\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height;\r\n var bounds = moveable.props.bounds;\r\n var maxWidth = Infinity;\r\n var maxHeight = Infinity;\r\n\r\n if (bounds) {\r\n var directions = [[direction[0], -direction[1]], [-direction[0], direction[1]]];\r\n var _b = bounds.left,\r\n left_1 = _b === void 0 ? -Infinity : _b,\r\n _c = bounds.top,\r\n top_1 = _c === void 0 ? -Infinity : _c,\r\n _d = bounds.right,\r\n right_1 = _d === void 0 ? Infinity : _d,\r\n _e = bounds.bottom,\r\n bottom_1 = _e === void 0 ? Infinity : _e;\r\n directions.forEach(function (otherDirection) {\r\n var isCheckVertical = otherDirection[0] !== fixedDirection[0];\r\n var isCheckHorizontal = otherDirection[1] !== fixedDirection[1];\r\n var otherPos = getPosByDirection(poses, otherDirection);\r\n var verticalDirection = normalized(otherDirection[1] - fixedDirection[1]);\r\n var horizontalDirection = normalized(otherDirection[0] - fixedDirection[0]);\r\n var deg = getRad$1(fixedPosition, otherPos) * 360 / Math.PI;\r\n\r\n if (isCheckHorizontal) {\r\n var nextOtherPos = otherPos.slice();\r\n\r\n if (Math.abs(deg - 360) < 2 || Math.abs(deg - 180) < 2) {\r\n nextOtherPos[1] = fixedPosition[1];\r\n }\r\n\r\n var _a = solveNextOffset(fixedPosition, nextOtherPos, (fixedPosition[1] < otherPos[1] ? bottom_1 : top_1) - otherPos[1], false, datas),\r\n heightOffset = _a[1];\r\n\r\n if (!isNaN(heightOffset)) {\r\n maxHeight = height + verticalDirection * heightOffset;\r\n }\r\n }\r\n\r\n if (isCheckVertical) {\r\n var nextOtherPos = otherPos.slice();\r\n\r\n if (Math.abs(deg - 90) < 2 || Math.abs(deg - 270) < 2) {\r\n nextOtherPos[0] = fixedPosition[0];\r\n }\r\n\r\n var widthOffset = solveNextOffset(fixedPosition, nextOtherPos, (fixedPosition[0] < otherPos[0] ? right_1 : left_1) - otherPos[0], true, datas)[0];\r\n\r\n if (!isNaN(widthOffset)) {\r\n maxWidth = width + horizontalDirection * widthOffset;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return {\r\n maxWidth: maxWidth,\r\n maxHeight: maxHeight\r\n };\r\n }\r\n\r\n function checkSnapRightLine(startPos, endPos, snapBoundInfo, keepRatio) {\r\n var rad = getRad$1(startPos, endPos) / Math.PI * 180;\r\n var _a = snapBoundInfo.vertical,\r\n isVerticalBound = _a.isBound,\r\n isVerticalSnap = _a.isSnap,\r\n verticalDist = _a.dist,\r\n _b = snapBoundInfo.horizontal,\r\n isHorizontalBound = _b.isBound,\r\n isHorizontalSnap = _b.isSnap,\r\n horizontalDist = _b.dist;\r\n var rad180 = rad % 180;\r\n var isHorizontalLine = rad180 < 3 || rad180 > 177;\r\n var isVerticalLine = rad180 > 87 && rad180 < 93;\r\n\r\n if (horizontalDist < verticalDist) {\r\n if (isVerticalBound || isVerticalSnap && !isVerticalLine && (!keepRatio || !isHorizontalLine)) {\r\n return \"vertical\";\r\n }\r\n }\r\n\r\n if (isHorizontalBound || isHorizontalSnap && !isHorizontalLine && (!keepRatio || !isVerticalLine)) {\r\n return \"horizontal\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n function getSnapBoundInfo(moveable, poses, directions, keepRatio, isRequest, datas) {\r\n return directions.map(function (_a) {\r\n var startDirection = _a[0],\r\n endDirection = _a[1];\r\n var otherStartPos = getPosByDirection(poses, startDirection);\r\n var otherEndPos = getPosByDirection(poses, endDirection);\r\n var snapBoundInfo = keepRatio ? checkSnapBoundsKeepRatio(moveable, otherStartPos, otherEndPos, isRequest) : checkMoveableSnapBounds(moveable, isRequest, [otherEndPos]);\r\n var _b = snapBoundInfo.horizontal,\r\n // dist: otherHorizontalDist,\r\n otherHorizontalOffset = _b.offset,\r\n isOtherHorizontalBound = _b.isBound,\r\n isOtherHorizontalSnap = _b.isSnap,\r\n _c = snapBoundInfo.vertical,\r\n // dist: otherVerticalDist,\r\n otherVerticalOffset = _c.offset,\r\n isOtherVerticalBound = _c.isBound,\r\n isOtherVerticalSnap = _c.isSnap;\r\n var multiple = minus(endDirection, startDirection);\r\n\r\n if (!otherVerticalOffset && !otherHorizontalOffset) {\r\n return {\r\n isBound: isOtherVerticalBound || isOtherHorizontalBound,\r\n isSnap: isOtherVerticalSnap || isOtherHorizontalSnap,\r\n sign: multiple,\r\n offset: [0, 0]\r\n };\r\n }\r\n\r\n var snapLine = checkSnapRightLine(otherStartPos, otherEndPos, snapBoundInfo, keepRatio);\r\n\r\n if (!snapLine) {\r\n return {\r\n sign: multiple,\r\n isBound: false,\r\n isSnap: false,\r\n offset: [0, 0]\r\n };\r\n }\r\n\r\n var isVertical = snapLine === \"vertical\";\r\n var sizeOffset = solveNextOffset(otherStartPos, otherEndPos, -(isVertical ? otherVerticalOffset : otherHorizontalOffset), isVertical, datas).map(function (size, i) {\r\n return size * (multiple[i] ? 2 / multiple[i] : 0);\r\n });\r\n return {\r\n sign: multiple,\r\n isBound: isVertical ? isOtherVerticalBound : isOtherHorizontalBound,\r\n isSnap: isVertical ? isOtherVerticalSnap : isOtherHorizontalSnap,\r\n offset: sizeOffset\r\n };\r\n });\r\n }\r\n\r\n function getCheckSnapDirections(direction, keepRatio) {\r\n var directions = [];\r\n var fixedDirection = [-direction[0], -direction[1]];\r\n\r\n if (direction[0] && direction[1]) {\r\n directions.push([fixedDirection, [direction[0], -direction[1]]], [fixedDirection, [-direction[0], direction[1]]]);\r\n\r\n if (keepRatio) {\r\n // pass two direction condition\r\n directions.push([fixedDirection, direction]);\r\n }\r\n } else if (direction[0]) {\r\n // vertcal\r\n if (keepRatio) {\r\n directions.push([fixedDirection, [fixedDirection[0], -1]], [fixedDirection, [fixedDirection[0], 1]], [fixedDirection, [direction[0], -1]], [fixedDirection, direction], [fixedDirection, [direction[0], 1]]);\r\n } else {\r\n directions.push([[fixedDirection[0], -1], [direction[0], -1]], [[fixedDirection[0], 0], [direction[0], 0]], [[fixedDirection[0], 1], [direction[0], 1]]);\r\n }\r\n } else if (direction[1]) {\r\n // horizontal\r\n if (keepRatio) {\r\n directions.push([fixedDirection, [-1, fixedDirection[1]]], [fixedDirection, [1, fixedDirection[1]]], [fixedDirection, [-1, direction[1]]], [fixedDirection, [1, direction[1]]], [fixedDirection, direction]);\r\n } else {\r\n directions.push([[-1, fixedDirection[1]], [-1, direction[1]]], [[0, fixedDirection[1]], [0, direction[1]]], [[1, fixedDirection[1]], [1, direction[1]]]);\r\n }\r\n } else {\r\n // [0, 0] to all direction\r\n directions.push([fixedDirection, [1, 0]], [fixedDirection, [-1, 0]], [fixedDirection, [0, -1]], [fixedDirection, [0, 1]], [[1, 0], [1, -1]], [[1, 0], [1, 1]], [[0, 1], [1, 1]], [[0, 1], [-1, 1]], [[-1, 0], [-1, -1]], [[-1, 0], [-1, 1]], [[0, -1], [1, -1]], [[0, -1], [-1, -1]]);\r\n }\r\n\r\n return directions;\r\n }\r\n function getSizeOffsetInfo(moveable, poses, direction, keepRatio, isRequest, datas) {\r\n var directions = getCheckSnapDirections(direction, keepRatio);\r\n var lines = getCheckInnerBoundLines(poses, direction, keepRatio);\r\n\r\n var offsets = __spreadArrays$1(getSnapBoundInfo(moveable, poses, directions, keepRatio, isRequest, datas), getInnerBoundInfo(moveable, lines, getPosByDirection(poses, [0, 0]), datas));\r\n\r\n var widthOffsetInfo = getNearOffsetInfo(offsets, 0);\r\n var heightOffsetInfo = getNearOffsetInfo(offsets, 1);\r\n return {\r\n width: {\r\n isBound: widthOffsetInfo.isBound,\r\n offset: widthOffsetInfo.offset[0]\r\n },\r\n height: {\r\n isBound: heightOffsetInfo.isBound,\r\n offset: heightOffsetInfo.offset[1]\r\n }\r\n };\r\n }\r\n function recheckSizeByTwoDirection(moveable, poses, width, height, maxWidth, maxHeight, direction, isRequest, datas) {\r\n var snapPos = getPosByDirection(poses, direction);\r\n\r\n var _a = checkMoveableSnapBounds(moveable, isRequest, [snapPos]),\r\n horizontalOffset = _a.horizontal.offset,\r\n verticalOffset = _a.vertical.offset;\r\n\r\n if (verticalOffset || horizontalOffset) {\r\n var _b = getDragDist({\r\n datas: datas,\r\n distX: -verticalOffset,\r\n distY: -horizontalOffset\r\n }),\r\n nextWidthOffset = _b[0],\r\n nextHeightOffset = _b[1];\r\n\r\n var nextWidth = Math.min(maxWidth || Infinity, width + direction[0] * nextWidthOffset);\r\n var nextHeight = Math.min(maxHeight || Infinity, height + direction[1] * nextHeightOffset);\r\n return [nextWidth - width, nextHeight - height];\r\n }\r\n\r\n return [0, 0];\r\n }\r\n function checkSizeDist(moveable, getNextPoses, width, height, direction, fixedPosition, isRequest, datas) {\r\n var poses = getAbsolutePosesByState(moveable.state);\r\n var keepRatio = moveable.props.keepRatio;\r\n var widthOffset = 0;\r\n var heightOffset = 0;\r\n\r\n for (var i = 0; i < 2; ++i) {\r\n var nextPoses = getNextPoses(widthOffset, heightOffset);\r\n\r\n var _a = getSizeOffsetInfo(moveable, nextPoses, direction, keepRatio, isRequest, datas),\r\n widthOffsetInfo = _a.width,\r\n heightOffsetInfo = _a.height;\r\n\r\n var isWidthBound = widthOffsetInfo.isBound;\r\n var isHeightBound = heightOffsetInfo.isBound;\r\n var nextWidthOffset = widthOffsetInfo.offset;\r\n var nextHeightOffset = heightOffsetInfo.offset;\r\n\r\n if (i === 1) {\r\n if (!isWidthBound) {\r\n nextWidthOffset = 0;\r\n }\r\n\r\n if (!isHeightBound) {\r\n nextHeightOffset = 0;\r\n }\r\n }\r\n\r\n if (i === 0 && isRequest && !isWidthBound && !isHeightBound) {\r\n return [0, 0];\r\n }\r\n\r\n if (keepRatio) {\r\n var widthDist = Math.abs(nextWidthOffset) * (width ? 1 / width : 1);\r\n var heightDist = Math.abs(nextHeightOffset) * (height ? 1 / height : 1);\r\n var isGetWidthOffset = isWidthBound && isHeightBound ? widthDist < heightDist : isHeightBound || !isWidthBound && widthDist < heightDist;\r\n\r\n if (isGetWidthOffset) {\r\n // width : height = ? : heightOffset\r\n nextWidthOffset = width * nextHeightOffset / height;\r\n } else {\r\n // width : height = widthOffset : ?\r\n nextHeightOffset = height * nextWidthOffset / width;\r\n }\r\n }\r\n\r\n widthOffset += nextWidthOffset;\r\n heightOffset += nextHeightOffset;\r\n }\r\n\r\n if (direction[0] && direction[1]) {\r\n var _b = checkMaxBounds(moveable, poses, direction, fixedPosition, datas),\r\n maxWidth = _b.maxWidth,\r\n maxHeight = _b.maxHeight;\r\n\r\n var _c = recheckSizeByTwoDirection(moveable, getNextPoses(widthOffset, heightOffset), width + widthOffset, height + heightOffset, maxWidth, maxHeight, direction, isRequest, datas),\r\n nextWidthOffset = _c[0],\r\n nextHeightOffset = _c[1];\r\n\r\n widthOffset += nextWidthOffset;\r\n heightOffset += nextHeightOffset;\r\n }\r\n\r\n return [widthOffset, heightOffset];\r\n }\r\n function checkSnapRotate(moveable, rect, origin, rotation) {\r\n if (!hasGuidelines(moveable, \"rotatable\")) {\r\n return rotation;\r\n }\r\n\r\n var pos1 = rect.pos1,\r\n pos2 = rect.pos2,\r\n pos3 = rect.pos3,\r\n pos4 = rect.pos4;\r\n var rad = rotation * Math.PI / 180;\r\n var prevPoses = [pos1, pos2, pos3, pos4].map(function (pos) {\r\n return minus(pos, origin);\r\n });\r\n var nextPoses = prevPoses.map(function (pos) {\r\n return rotate(pos, rad);\r\n });\r\n\r\n var result = __spreadArrays$1(checkRotateBounds(moveable, prevPoses, nextPoses, origin, rotation), checkRotateInnerBounds(moveable, prevPoses, nextPoses, origin, rotation));\r\n\r\n result.sort(function (a, b) {\r\n return Math.abs(a - rotation) - Math.abs(b - rotation);\r\n });\r\n\r\n if (result.length) {\r\n return result[0];\r\n } else {\r\n return rotation;\r\n }\r\n }\r\n function checkSnapSize(moveable, width, height, direction, fixedPosition, isRequest, datas) {\r\n if (!hasGuidelines(moveable, \"resizable\")) {\r\n return [0, 0];\r\n }\r\n\r\n var _a = moveable.state,\r\n allMatrix = _a.allMatrix,\r\n is3d = _a.is3d;\r\n return checkSizeDist(moveable, function (widthOffset, heightOffset) {\r\n return getNextFixedPoses(allMatrix, width + widthOffset, height + heightOffset, fixedPosition, direction, is3d);\r\n }, width, height, direction, fixedPosition, isRequest, datas);\r\n }\r\n function checkSnapScale(moveable, scale, direction, isRequest, datas) {\r\n var width = datas.width,\r\n height = datas.height,\r\n fixedPosition = datas.fixedPosition;\r\n\r\n if (!hasGuidelines(moveable, \"scalable\")) {\r\n return [0, 0];\r\n }\r\n\r\n var is3d = datas.is3d;\r\n var sizeDist = checkSizeDist(moveable, function (widthOffset, heightOffset) {\r\n return getNextFixedPoses(scaleMatrix(datas, plus(scale, [widthOffset / width, heightOffset / height])), width, height, fixedPosition, direction, is3d);\r\n }, width, height, direction, fixedPosition, isRequest, datas);\r\n return [sizeDist[0] / width, sizeDist[1] / height];\r\n }\r\n function solveEquation(pos1, pos2, snapOffset, isVertical) {\r\n var dx = pos2[0] - pos1[0];\r\n var dy = pos2[1] - pos1[1];\r\n\r\n if (Math.abs(dx) < TINY_NUM) {\r\n dx = 0;\r\n }\r\n\r\n if (Math.abs(dy) < TINY_NUM) {\r\n dy = 0;\r\n }\r\n\r\n if (!dx) {\r\n // y = 0 * x + b\r\n // only horizontal\r\n if (!isVertical) {\r\n return [0, snapOffset];\r\n }\r\n\r\n return [0, 0];\r\n }\r\n\r\n if (!dy) {\r\n // only vertical\r\n if (isVertical) {\r\n return [snapOffset, 0];\r\n }\r\n\r\n return [0, 0];\r\n } // y = ax + b\r\n\r\n\r\n var a = dy / dx;\r\n var b = pos1[1] - a * pos1[0];\r\n\r\n if (isVertical) {\r\n // y = a * x + b\r\n var y = a * (pos2[0] + snapOffset) + b;\r\n return [snapOffset, y - pos2[1]];\r\n } else {\r\n // x = (y - b) / a\r\n var x = (pos2[1] + snapOffset - b) / a;\r\n return [x - pos2[0], snapOffset];\r\n }\r\n }\r\n function startCheckSnapDrag(moveable, datas) {\r\n datas.absolutePoses = getAbsolutePosesByState(moveable.state);\r\n }\r\n function checkThrottleDragRotate(throttleDragRotate, _a, _b, _c, _d) {\r\n var distX = _a[0],\r\n distY = _a[1];\r\n var isVerticalBound = _b[0],\r\n isHorizontalBound = _b[1];\r\n var isVerticalSnap = _c[0],\r\n isHorizontalSnap = _c[1];\r\n var verticalOffset = _d[0],\r\n horizontalOffset = _d[1];\r\n var offsetX = -verticalOffset;\r\n var offsetY = -horizontalOffset;\r\n\r\n if (throttleDragRotate && distX && distY) {\r\n offsetX = 0;\r\n offsetY = 0;\r\n var adjustPoses = [];\r\n\r\n if (isVerticalBound && isHorizontalBound) {\r\n adjustPoses.push([0, horizontalOffset], [verticalOffset, 0]);\r\n } else if (isVerticalBound) {\r\n adjustPoses.push([verticalOffset, 0]);\r\n } else if (isHorizontalBound) {\r\n adjustPoses.push([0, horizontalOffset]);\r\n } else if (isVerticalSnap && isHorizontalSnap) {\r\n adjustPoses.push([0, horizontalOffset], [verticalOffset, 0]);\r\n } else if (isVerticalSnap) {\r\n adjustPoses.push([verticalOffset, 0]);\r\n } else if (isHorizontalSnap) {\r\n adjustPoses.push([0, horizontalOffset]);\r\n }\r\n\r\n if (adjustPoses.length) {\r\n adjustPoses.sort(function (a, b) {\r\n return getDistSize(minus([distX, distY], a)) - getDistSize(minus([distX, distY], b));\r\n });\r\n var adjustPos = adjustPoses[0];\r\n\r\n if (adjustPos[0] && Math.abs(distX) > TINY_NUM) {\r\n offsetX = -adjustPos[0];\r\n offsetY = distY * Math.abs(distX + offsetX) / Math.abs(distX) - distY;\r\n } else if (adjustPos[1] && Math.abs(distY) > TINY_NUM) {\r\n var prevDistY = distY;\r\n offsetY = -adjustPos[1];\r\n offsetX = distX * Math.abs(distY + offsetY) / Math.abs(prevDistY) - distX;\r\n }\r\n\r\n if (throttleDragRotate && isHorizontalBound && isVerticalBound) {\r\n if (Math.abs(offsetX) > TINY_NUM && Math.abs(offsetX) < Math.abs(verticalOffset)) {\r\n var scale = Math.abs(verticalOffset) / Math.abs(offsetX);\r\n offsetX *= scale;\r\n offsetY *= scale;\r\n } else if (Math.abs(offsetY) > TINY_NUM && Math.abs(offsetY) < Math.abs(horizontalOffset)) {\r\n var scale = Math.abs(horizontalOffset) / Math.abs(offsetY);\r\n offsetX *= scale;\r\n offsetY *= scale;\r\n } else {\r\n offsetX = maxOffset(-verticalOffset, offsetX);\r\n offsetY = maxOffset(-horizontalOffset, offsetY);\r\n }\r\n }\r\n }\r\n } else {\r\n offsetX = distX || isVerticalBound ? -verticalOffset : 0;\r\n offsetY = distY || isHorizontalBound ? -horizontalOffset : 0;\r\n }\r\n\r\n return [offsetX, offsetY];\r\n }\r\n function checkSnapDrag(moveable, distX, distY, throttleDragRotate, isRequest, datas) {\r\n if (!hasGuidelines(moveable, \"draggable\")) {\r\n return [{\r\n isSnap: false,\r\n isBound: false,\r\n offset: 0\r\n }, {\r\n isSnap: false,\r\n isBound: false,\r\n offset: 0\r\n }];\r\n }\r\n\r\n var poses = getAbsolutePoses(datas.absolutePoses, [distX, distY]);\r\n\r\n var _a = getRect(poses),\r\n left = _a.left,\r\n right = _a.right,\r\n top = _a.top,\r\n bottom = _a.bottom;\r\n\r\n var snapCenter = moveable.props.snapCenter;\r\n var snapPoses = [[left, top], [right, top], [left, bottom], [right, bottom]];\r\n\r\n if (snapCenter) {\r\n snapPoses.push([(left + right) / 2, (top + bottom) / 2]);\r\n }\r\n\r\n var _b = checkMoveableSnapBounds(moveable, isRequest, snapPoses, poses),\r\n verticalSnapBoundInfo = _b.vertical,\r\n horizontalSnapBoundInfo = _b.horizontal;\r\n\r\n var _c = getInnerBoundDragInfo(moveable, poses, datas),\r\n verticalInnerBoundInfo = _c.vertical,\r\n horizontalInnerBoundInfo = _c.horizontal;\r\n\r\n var isVerticalSnap = verticalSnapBoundInfo.isSnap;\r\n var isHorizontalSnap = horizontalSnapBoundInfo.isSnap;\r\n var isVerticalBound = verticalSnapBoundInfo.isBound || verticalInnerBoundInfo.isBound;\r\n var isHorizontalBound = horizontalSnapBoundInfo.isBound || horizontalInnerBoundInfo.isBound;\r\n var verticalOffset = maxOffset(verticalSnapBoundInfo.offset, verticalInnerBoundInfo.offset);\r\n var horizontalOffset = maxOffset(horizontalSnapBoundInfo.offset, horizontalInnerBoundInfo.offset);\r\n\r\n var _d = checkThrottleDragRotate(throttleDragRotate, [distX, distY], [isVerticalBound, isHorizontalBound], [isVerticalSnap, isHorizontalSnap], [verticalOffset, horizontalOffset]),\r\n offsetX = _d[0],\r\n offsetY = _d[1];\r\n\r\n return [{\r\n isBound: isVerticalBound,\r\n isSnap: isVerticalSnap,\r\n offset: offsetX\r\n }, {\r\n isBound: isHorizontalBound,\r\n isSnap: isHorizontalSnap,\r\n offset: offsetY\r\n }];\r\n }\r\n\r\n function getSnapGuidelines(posInfos) {\r\n var guidelines = [];\r\n posInfos.forEach(function (posInfo) {\r\n posInfo.guidelineInfos.forEach(function (_a) {\r\n var guideline = _a.guideline;\r\n\r\n if (guidelines.indexOf(guideline) > -1) {\r\n return;\r\n }\r\n\r\n guidelines.push(guideline);\r\n });\r\n });\r\n return guidelines;\r\n }\r\n\r\n function getElementGuidelineDist(elementPos, elementSize, targetPos, targetSize) {\r\n // relativePos < 0 => element(l) --- (r)target\r\n // relativePos > 0 => target(l) --- (r)element\r\n var relativePos = elementPos - targetPos;\r\n var startPos = relativePos < 0 ? relativePos + elementSize : targetSize;\r\n var endPos = relativePos < 0 ? 0 : relativePos;\r\n var size = endPos - startPos;\r\n return {\r\n size: size,\r\n pos: startPos\r\n };\r\n }\r\n\r\n function groupByElementGuidelines(guidelines, clientPos, size, index) {\r\n var groupInfos = [];\r\n var group = groupBy(guidelines.filter(function (_a) {\r\n var element = _a.element,\r\n gap = _a.gap;\r\n return element && !gap;\r\n }), function (_a) {\r\n var element = _a.element,\r\n pos = _a.pos;\r\n var elementPos = pos[index];\r\n var sign = Math.min(0, elementPos - clientPos) < 0 ? -1 : 1;\r\n var groupKey = sign + \"_\" + pos[index ? 0 : 1];\r\n var groupInfo = find$1(groupInfos, function (_a) {\r\n var groupElement = _a[0],\r\n groupPos = _a[1];\r\n return element === groupElement && elementPos === groupPos;\r\n });\r\n\r\n if (groupInfo) {\r\n return groupInfo[2];\r\n }\r\n\r\n groupInfos.push([element, elementPos, groupKey]);\r\n return groupKey;\r\n });\r\n group.forEach(function (elementGuidelines) {\r\n elementGuidelines.sort(function (a, b) {\r\n var result = getElementGuidelineDist(a.pos[index], a.size, clientPos, size).size - getElementGuidelineDist(b.pos[index], a.size, clientPos, size).size;\r\n return result || a.pos[index ? 0 : 1] - b.pos[index ? 0 : 1];\r\n });\r\n });\r\n return group;\r\n }\r\n\r\n function renderElementGroup(moveable, direction, groups, minPos, clientPos, clientSize, targetPos, snapThreshold, snapDigit, index, snapDistFormat, React) {\r\n var _a = moveable.props,\r\n zoom = _a.zoom,\r\n _b = _a.isDisplaySnapDigit,\r\n isDisplaySnapDigit = _b === void 0 ? true : _b;\r\n var _c = DIRECTION_NAMES[direction],\r\n posName1 = _c[0],\r\n posName2 = _c[1],\r\n sizeName = _c[2],\r\n scaleDirection = _c[4];\r\n return flat(groups.map(function (elementGuidelines, i) {\r\n var isFirstRenderSize = true;\r\n return elementGuidelines.map(function (_a, j) {\r\n var _b;\r\n\r\n var pos = _a.pos,\r\n size = _a.size;\r\n\r\n var _c = getElementGuidelineDist(pos[index], size, clientPos, clientSize),\r\n linePos = _c.pos,\r\n lineSize = _c.size;\r\n\r\n if (lineSize < snapThreshold) {\r\n return null;\r\n }\r\n\r\n var isRenderSize = isFirstRenderSize;\r\n isFirstRenderSize = false;\r\n var snapSize = isDisplaySnapDigit && isRenderSize ? parseFloat(lineSize.toFixed(snapDigit)) : 0;\r\n return React.createElement(\"div\", {\r\n key: direction + \"LinkGuideline\" + i + \"-\" + j,\r\n className: prefix(\"guideline-group\", direction),\r\n style: (_b = {}, _b[posName1] = minPos + linePos + \"px\", _b[posName2] = -targetPos + pos[index ? 0 : 1] + \"px\", _b[sizeName] = lineSize + \"px\", _b)\r\n }, renderInnerGuideline({\r\n direction: direction,\r\n classNames: [prefix(\"dashed\")],\r\n size: \"100%\",\r\n posValue: [0, 0],\r\n sizeValue: lineSize,\r\n zoom: zoom\r\n }, React), React.createElement(\"div\", {\r\n className: prefix(\"size-value\"),\r\n style: {\r\n transform: \"translate\" + scaleDirection + \"(-50%) scale(\" + zoom + \")\"\r\n }\r\n }, snapSize > 0 ? snapDistFormat(snapSize) : \"\"));\r\n });\r\n }));\r\n }\r\n\r\n function renderSnapPoses(moveable, direction, snapPoses, minPos, targetPos, size, index, React) {\r\n var zoom = moveable.props.zoom;\r\n return snapPoses.map(function (_a, i) {\r\n var type = _a.type,\r\n pos = _a.pos;\r\n var renderPos = [0, 0];\r\n renderPos[index] = minPos;\r\n renderPos[index ? 0 : 1] = -targetPos + pos;\r\n return renderInnerGuideline({\r\n key: direction + \"TargetGuideline\" + i,\r\n classNames: [prefix(\"target\", \"bold\", type)],\r\n posValue: renderPos,\r\n sizeValue: size,\r\n zoom: zoom,\r\n direction: direction\r\n }, React);\r\n });\r\n }\r\n\r\n function renderGuidelines(moveable, direction, guidelines, targetPos, React) {\r\n var zoom = moveable.props.zoom;\r\n return guidelines.map(function (guideline, i) {\r\n var pos = guideline.pos,\r\n size = guideline.size,\r\n element = guideline.element;\r\n var renderPos = [-targetPos[0] + pos[0], -targetPos[1] + pos[1]];\r\n return renderInnerGuideline({\r\n key: direction + \"Guideline\" + i,\r\n classNames: element ? [prefix(\"bold\")] : [],\r\n direction: direction,\r\n posValue: renderPos,\r\n sizeValue: size,\r\n zoom: zoom\r\n }, React);\r\n });\r\n }\r\n\r\n function getGapGuidelinesToStart(guidelines, index, targetPos, targetSizes, guidelinePos, gap, otherPos) {\r\n var absGap = Math.abs(gap);\r\n var start = guidelinePos[index] + (gap > 0 ? targetSizes[0] : 0);\r\n return guidelines.filter(function (_a) {\r\n var gapPos = _a.pos;\r\n return gapPos[index] <= targetPos[index];\r\n }).sort(function (_a, _b) {\r\n var aPos = _a.pos;\r\n var bPos = _b.pos;\r\n return bPos[index] - aPos[index];\r\n }).filter(function (_a) {\r\n var gapPos = _a.pos,\r\n gapSizes = _a.sizes;\r\n var nextPos = gapPos[index];\r\n\r\n if (throttle(nextPos + gapSizes[index], 0.0001) === throttle(start - absGap, 0.0001)) {\r\n start = nextPos;\r\n return true;\r\n }\r\n\r\n return false;\r\n }).map(function (gapGuideline) {\r\n var renderPos = -targetPos[index] + gapGuideline.pos[index] + gapGuideline.sizes[index];\r\n return __assign$2(__assign$2({}, gapGuideline), {\r\n gap: gap,\r\n renderPos: index ? [otherPos, renderPos] : [renderPos, otherPos]\r\n });\r\n });\r\n }\r\n\r\n function getGapGuidelinesToEnd(guidelines, index, targetPos, targetSizes, guidelinePos, gap, otherPos) {\r\n var absGap = Math.abs(gap);\r\n var start = guidelinePos[index] + (gap < 0 ? targetSizes[index] : 0);\r\n return guidelines.filter(function (_a) {\r\n var gapPos = _a.pos;\r\n return gapPos[index] > targetPos[index];\r\n }).sort(function (_a, _b) {\r\n var aPos = _a.pos;\r\n var bPos = _b.pos;\r\n return aPos[index] - bPos[index];\r\n }).filter(function (_a) {\r\n var gapPos = _a.pos,\r\n gapSizes = _a.sizes;\r\n var nextPos = gapPos[index];\r\n\r\n if (throttle(nextPos, 0.0001) === throttle(start + absGap, 0.0001)) {\r\n start = nextPos + gapSizes[index];\r\n return true;\r\n }\r\n\r\n return false;\r\n }).map(function (gapGuideline) {\r\n var renderPos = -targetPos[index] + gapGuideline.pos[index] - absGap;\r\n return __assign$2(__assign$2({}, gapGuideline), {\r\n gap: gap,\r\n renderPos: index ? [otherPos, renderPos] : [renderPos, otherPos]\r\n });\r\n });\r\n }\r\n\r\n function getGapGuidelines$1(guidelines, type, targetPos, targetSizes) {\r\n var elementGuidelines = guidelines.filter(function (_a) {\r\n var element = _a.element,\r\n gap = _a.gap,\r\n guidelineType = _a.type;\r\n return element && gap && guidelineType === type;\r\n });\r\n\r\n var _a = type === \"vertical\" ? [0, 1] : [1, 0],\r\n index = _a[0],\r\n otherIndex = _a[1];\r\n\r\n return flat(elementGuidelines.map(function (guideline) {\r\n var pos = guideline.pos;\r\n var gap = guideline.gap;\r\n var gapGuidelines = guideline.gapGuidelines;\r\n var sizes = guideline.sizes;\r\n var offset = minOffset(pos[otherIndex] + sizes[otherIndex] - targetPos[otherIndex], pos[otherIndex] - targetPos[otherIndex] - targetSizes[otherIndex]);\r\n var minSize = Math.min(sizes[otherIndex], targetSizes[otherIndex]);\r\n\r\n if (offset > 0 && offset > minSize) {\r\n offset = (offset - minSize / 2) * 2;\r\n } else if (offset < 0 && offset < -minSize) {\r\n offset = (offset + minSize / 2) * 2;\r\n }\r\n\r\n var otherPos = (offset > 0 ? 0 : targetSizes[otherIndex]) + offset / 2;\r\n return __spreadArrays$1(getGapGuidelinesToStart(gapGuidelines, index, targetPos, targetSizes, pos, gap, otherPos), getGapGuidelinesToEnd(gapGuidelines, index, targetPos, targetSizes, pos, gap, otherPos));\r\n }));\r\n }\r\n\r\n function renderGapGuidelines(moveable, direction, gapGuidelines, snapDistFormat, React) {\r\n var _a = moveable.props,\r\n _b = _a.snapDigit,\r\n snapDigit = _b === void 0 ? 0 : _b,\r\n _c = _a.isDisplaySnapDigit,\r\n isDisplaySnapDigit = _c === void 0 ? true : _c,\r\n zoom = _a.zoom;\r\n var scaleDirection = direction === \"horizontal\" ? \"X\" : \"Y\";\r\n var sizeName = direction === \"horizontal\" ? \"width\" : \"height\";\r\n return gapGuidelines.map(function (_a, i) {\r\n var _b;\r\n\r\n var renderPos = _a.renderPos,\r\n gap = _a.gap,\r\n className = _a.className;\r\n var absGap = Math.abs(gap);\r\n var snapSize = isDisplaySnapDigit ? parseFloat(absGap.toFixed(snapDigit)) : 0;\r\n return React.createElement(\"div\", {\r\n key: direction + \"GapGuideline\" + i,\r\n className: prefix(\"guideline-group\", direction),\r\n style: (_b = {\r\n left: renderPos[0] + \"px\",\r\n top: renderPos[1] + \"px\"\r\n }, _b[sizeName] = absGap + \"px\", _b)\r\n }, renderInnerGuideline({\r\n direction: direction,\r\n classNames: [prefix(\"gap\"), className],\r\n size: \"100%\",\r\n posValue: [0, 0],\r\n sizeValue: absGap,\r\n zoom: zoom\r\n }, React), React.createElement(\"div\", {\r\n className: prefix(\"size-value\", \"gap\"),\r\n style: {\r\n transform: \"translate\" + scaleDirection + \"(-50%) scale(\" + zoom + \")\"\r\n }\r\n }, snapSize > 0 ? snapDistFormat(snapSize) : \"\"));\r\n });\r\n }\r\n\r\n function addBoundGuidelines(moveable, verticalPoses, horizontalPoses, verticalSnapPoses, horizontalSnapPoses, externalBounds) {\r\n var _a = checkBoundPoses(externalBounds || moveable.props.bounds, verticalPoses, horizontalPoses),\r\n verticalBoundInfos = _a.vertical,\r\n horizontalBoundInfos = _a.horizontal;\r\n\r\n verticalBoundInfos.forEach(function (info) {\r\n if (info.isBound) {\r\n verticalSnapPoses.push({\r\n type: \"bounds\",\r\n pos: info.pos\r\n });\r\n }\r\n });\r\n horizontalBoundInfos.forEach(function (info) {\r\n if (info.isBound) {\r\n horizontalSnapPoses.push({\r\n type: \"bounds\",\r\n pos: info.pos\r\n });\r\n }\r\n });\r\n\r\n var _b = checkInnerBoundPoses(moveable),\r\n verticalInnerBoundPoses = _b.vertical,\r\n horizontalInnerBoundPoses = _b.horizontal;\r\n\r\n verticalInnerBoundPoses.forEach(function (innerPos) {\r\n if (findIndex(verticalSnapPoses, function (_a) {\r\n var type = _a.type,\r\n pos = _a.pos;\r\n return type === \"bounds\" && pos === innerPos;\r\n }) >= 0) {\r\n return;\r\n }\r\n\r\n verticalSnapPoses.push({\r\n type: \"bounds\",\r\n pos: innerPos\r\n });\r\n });\r\n horizontalInnerBoundPoses.forEach(function (innerPos) {\r\n if (findIndex(horizontalSnapPoses, function (_a) {\r\n var type = _a.type,\r\n pos = _a.pos;\r\n return type === \"bounds\" && pos === innerPos;\r\n }) >= 0) {\r\n return;\r\n }\r\n\r\n horizontalSnapPoses.push({\r\n type: \"bounds\",\r\n pos: innerPos\r\n });\r\n });\r\n }\r\n /**\r\n * @namespace Moveable.Snappable\r\n * @description Whether or not target can be snapped to the guideline. (default: false)\r\n * @sort 2\r\n */\r\n\r\n\r\n var Snappable = {\r\n name: \"snappable\",\r\n props: {\r\n snappable: [Boolean, Array],\r\n snapCenter: Boolean,\r\n snapHorizontal: Boolean,\r\n snapVertical: Boolean,\r\n snapElement: Boolean,\r\n snapGap: Boolean,\r\n isDisplaySnapDigit: Boolean,\r\n snapDigit: Number,\r\n snapThreshold: Number,\r\n horizontalGuidelines: Array,\r\n verticalGuidelines: Array,\r\n elementGuidelines: Array,\r\n bounds: Object,\r\n innerBounds: Object,\r\n snapDistFormat: Function\r\n },\r\n events: {\r\n onSnap: \"snap\"\r\n },\r\n css: [\":host {\\n --bounds-color: #d66;\\n}\\n.guideline {\\n pointer-events: none;\\n z-index: 2;\\n}\\n.guideline.bounds {\\n background: #d66;\\n background: var(--bounds-color);\\n}\\n.guideline-group {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n.guideline-group .size-value {\\n position: absolute;\\n color: #f55;\\n font-size: 12px;\\n font-weight: bold;\\n}\\n.guideline-group.horizontal .size-value {\\n transform-origin: 50% 100%;\\n transform: translateX(-50%);\\n left: 50%;\\n bottom: 5px;\\n}\\n.guideline-group.vertical .size-value {\\n transform-origin: 0% 50%;\\n top: 50%;\\n transform: translateY(-50%);\\n left: 5px;\\n}\\n.guideline.gap {\\n background: #f55;\\n}\\n.size-value.gap {\\n color: #f55;\\n}\\n\"],\r\n render: function (moveable, React) {\r\n var _a = moveable.state,\r\n targetTop = _a.top,\r\n targetLeft = _a.left,\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n pos3 = _a.pos3,\r\n pos4 = _a.pos4,\r\n snapRenderInfo = _a.snapRenderInfo,\r\n targetClientRect = _a.targetClientRect,\r\n containerClientRect = _a.containerClientRect,\r\n is3d = _a.is3d,\r\n rootMatrix = _a.rootMatrix;\r\n\r\n if (!snapRenderInfo || !hasGuidelines(moveable, \"\")) {\r\n return [];\r\n }\r\n\r\n var n = is3d ? 4 : 3;\r\n var minLeft = Math.min(pos1[0], pos2[0], pos3[0], pos4[0]);\r\n var minTop = Math.min(pos1[1], pos2[1], pos3[1], pos4[1]);\r\n var containerPos = calculateContainerPos(rootMatrix, containerClientRect, n);\r\n\r\n var _b = calculateInversePosition(rootMatrix, [targetClientRect.left - containerPos[0], targetClientRect.top - containerPos[1]], n),\r\n clientLeft = _b[0],\r\n clientTop = _b[1];\r\n\r\n var _c = moveable.props,\r\n _d = _c.snapThreshold,\r\n snapThreshold = _d === void 0 ? 5 : _d,\r\n _e = _c.snapDigit,\r\n snapDigit = _e === void 0 ? 0 : _e,\r\n _f = _c.snapDistFormat,\r\n snapDistFormat = _f === void 0 ? function (v) {\r\n return v;\r\n } : _f;\r\n var externalPoses = snapRenderInfo.externalPoses || [];\r\n var poses = getAbsolutePosesByState(moveable.state);\r\n var verticalSnapPoses = [];\r\n var horizontalSnapPoses = [];\r\n var verticalGuidelines = [];\r\n var horizontalGuidelines = [];\r\n var snapInfos = [];\r\n\r\n var _g = getRect(poses),\r\n width = _g.width,\r\n height = _g.height,\r\n top = _g.top,\r\n left = _g.left,\r\n bottom = _g.bottom,\r\n right = _g.right;\r\n\r\n var hasExternalPoses = externalPoses.length > 0;\r\n var externalRect = hasExternalPoses ? getRect(externalPoses) : {};\r\n\r\n if (!snapRenderInfo.request) {\r\n if (snapRenderInfo.direction) {\r\n snapInfos.push(getSnapInfosByDirection(moveable, poses, snapRenderInfo.direction));\r\n }\r\n\r\n if (snapRenderInfo.snap) {\r\n var rect = getRect(poses);\r\n\r\n if (snapRenderInfo.center) {\r\n rect.middle = (rect.top + rect.bottom) / 2;\r\n rect.center = (rect.left + rect.right) / 2;\r\n }\r\n\r\n snapInfos.push(checkSnaps(moveable, rect, true, 1));\r\n }\r\n\r\n if (hasExternalPoses) {\r\n if (snapRenderInfo.center) {\r\n externalRect.middle = (externalRect.top + externalRect.bottom) / 2;\r\n externalRect.center = (externalRect.left + externalRect.right) / 2;\r\n }\r\n\r\n snapInfos.push(checkSnaps(moveable, externalRect, true, 1));\r\n }\r\n\r\n snapInfos.forEach(function (snapInfo) {\r\n var verticalPosInfos = snapInfo.vertical.posInfos,\r\n horizontalPosInfos = snapInfo.horizontal.posInfos;\r\n verticalSnapPoses.push.apply(verticalSnapPoses, verticalPosInfos.map(function (posInfo) {\r\n return {\r\n type: \"snap\",\r\n pos: posInfo.pos\r\n };\r\n }));\r\n horizontalSnapPoses.push.apply(horizontalSnapPoses, horizontalPosInfos.map(function (posInfo) {\r\n return {\r\n type: \"snap\",\r\n pos: posInfo.pos\r\n };\r\n }));\r\n verticalGuidelines.push.apply(verticalGuidelines, getSnapGuidelines(verticalPosInfos));\r\n horizontalGuidelines.push.apply(horizontalGuidelines, getSnapGuidelines(horizontalPosInfos));\r\n });\r\n }\r\n\r\n addBoundGuidelines(moveable, [left, right], [top, bottom], verticalSnapPoses, horizontalSnapPoses);\r\n\r\n if (hasExternalPoses) {\r\n addBoundGuidelines(moveable, [externalRect.left, externalRect.right], [externalRect.top, externalRect.bottom], verticalSnapPoses, horizontalSnapPoses, snapRenderInfo.externalBounds);\r\n }\r\n\r\n var elementHorizontalGroup = groupByElementGuidelines(horizontalGuidelines, clientLeft, width, 0);\r\n var elementVerticalGroup = groupByElementGuidelines(verticalGuidelines, clientTop, height, 1);\r\n var gapHorizontalGuidelines = getGapGuidelines$1(verticalGuidelines, \"vertical\", [targetLeft, targetTop], [width, height]);\r\n var gapVerticalGuidelines = getGapGuidelines$1(horizontalGuidelines, \"horizontal\", [targetLeft, targetTop], [width, height]);\r\n\r\n var allGuidelines = __spreadArrays$1(verticalGuidelines, horizontalGuidelines);\r\n\r\n triggerEvent(moveable, \"onSnap\", {\r\n guidelines: allGuidelines.filter(function (_a) {\r\n var element = _a.element;\r\n return !element;\r\n }),\r\n elements: groupBy(allGuidelines.filter(function (_a) {\r\n var element = _a.element;\r\n return element;\r\n }), function (_a) {\r\n var element = _a.element;\r\n return element;\r\n }),\r\n gaps: __spreadArrays$1(gapVerticalGuidelines, gapHorizontalGuidelines)\r\n }, true);\r\n return __spreadArrays$1(renderGapGuidelines(moveable, \"vertical\", gapVerticalGuidelines, snapDistFormat, React), renderGapGuidelines(moveable, \"horizontal\", gapHorizontalGuidelines, snapDistFormat, React), renderElementGroup(moveable, \"horizontal\", elementHorizontalGroup, minLeft, clientLeft, width, targetTop, snapThreshold, snapDigit, 0, snapDistFormat, React), renderElementGroup(moveable, \"vertical\", elementVerticalGroup, minTop, clientTop, height, targetLeft, snapThreshold, snapDigit, 1, snapDistFormat, React), renderSnapPoses(moveable, \"horizontal\", horizontalSnapPoses, minLeft, targetTop, width, 0, React), renderSnapPoses(moveable, \"vertical\", verticalSnapPoses, minTop, targetLeft, height, 1, React), renderGuidelines(moveable, \"horizontal\", horizontalGuidelines, [targetLeft, targetTop], React), renderGuidelines(moveable, \"vertical\", verticalGuidelines, [targetLeft, targetTop], React));\r\n },\r\n dragStart: function (moveable, e) {\r\n moveable.state.snapRenderInfo = {\r\n request: e.isRequest,\r\n snap: true,\r\n center: true\r\n };\r\n snapStart(moveable);\r\n },\r\n drag: function (moveable) {\r\n var state = moveable.state;\r\n state.staticGuidelines = getElementGuidelines(moveable, false, state.staticGuidelines);\r\n state.guidelines = getTotalGuidelines(moveable);\r\n },\r\n pinchStart: function (moveable) {\r\n this.unset(moveable);\r\n },\r\n dragEnd: function (moveable) {\r\n this.unset(moveable);\r\n },\r\n dragControlCondition: function (e, moveable) {\r\n if (directionCondition(e) || dragControlCondition(e, moveable)) {\r\n return true;\r\n }\r\n\r\n if (!e.isRequest && e.inputEvent) {\r\n return hasClass(e.inputEvent.target, prefix(\"snap-control\"));\r\n }\r\n },\r\n dragControlStart: function (moveable) {\r\n moveable.state.snapRenderInfo = null;\r\n snapStart(moveable);\r\n },\r\n dragControl: function (moveable) {\r\n this.drag(moveable);\r\n },\r\n dragControlEnd: function (moveable) {\r\n this.unset(moveable);\r\n },\r\n dragGroupStart: function (moveable, e) {\r\n this.dragStart(moveable, e);\r\n },\r\n dragGroup: function (moveable) {\r\n this.drag(moveable);\r\n },\r\n dragGroupEnd: function (moveable) {\r\n this.unset(moveable);\r\n },\r\n dragGroupControlStart: function (moveable) {\r\n moveable.state.snapRenderInfo = null;\r\n snapStart(moveable);\r\n },\r\n dragGroupControl: function (moveable) {\r\n this.drag(moveable);\r\n },\r\n dragGroupControlEnd: function (moveable) {\r\n this.unset(moveable);\r\n },\r\n unset: function (moveable) {\r\n var state = moveable.state;\r\n state.enableSnap = false;\r\n state.staticGuidelines = [];\r\n state.guidelines = [];\r\n state.snapRenderInfo = null;\r\n }\r\n };\r\n /**\r\n * Whether or not target can be snapped to the guideline. (default: false)\r\n * @name Moveable.Snappable#snappable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.snappable = true;\r\n */\r\n\r\n /**\r\n * When you drag, make the snap in the center of the target. (default: false)\r\n * @name Moveable.Snappable#snapCenter\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true,\r\n * });\r\n *\r\n * moveable.snapCenter = true;\r\n */\r\n\r\n /**\r\n * When you drag, make the snap in the vertical guidelines. (default: true)\r\n * @name Moveable.Snappable#snapVertical\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true,\r\n * snapVertical: true,\r\n * snapHorizontal: true,\r\n * snapElement: true,\r\n * });\r\n *\r\n * moveable.snapVertical = false;\r\n */\r\n\r\n /**\r\n * When you drag, make the snap in the horizontal guidelines. (default: true)\r\n * @name Moveable.Snappable#snapHorizontal\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true,\r\n * snapVertical: true,\r\n * snapHorizontal: true,\r\n * snapElement: true,\r\n * });\r\n *\r\n * moveable.snapHorizontal = false;\r\n */\r\n\r\n /**\r\n * When you drag, make the gap snap in the element guidelines. (default: true)\r\n * @name Moveable.Snappable#snapGap\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true,\r\n * snapVertical: true,\r\n * snapHorizontal: true,\r\n * snapElement: true,\r\n * snapGap: true,\r\n * });\r\n *\r\n * moveable.snapGap = false;\r\n */\r\n\r\n /**\r\n * When you drag, make the snap in the element guidelines. (default: true)\r\n * @name Moveable.Snappable#snapElement\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true,\r\n * snapVertical: true,\r\n * snapHorizontal: true,\r\n * snapElement: true,\r\n * });\r\n *\r\n * moveable.snapElement = false;\r\n */\r\n\r\n /**\r\n * Distance value that can snap to guidelines. (default: 5)\r\n * @name Moveable.Snappable#snapThreshold\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.snapThreshold = 5;\r\n */\r\n\r\n /**\r\n * Add guidelines in the horizontal direction. (default: [])\r\n * @name Moveable.Snappable#horizontalGuidelines\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.horizontalGuidelines = [100, 200, 500];\r\n */\r\n\r\n /**\r\n * Add guidelines in the vertical direction. (default: [])\r\n * @name Moveable.Snappable#verticalGuidelines\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.verticalGuidelines = [100, 200, 500];\r\n */\r\n\r\n /**\r\n * Add guidelines for the element. (default: [])\r\n * @name Moveable.Snappable#elementGuidelines\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.elementGuidelines = [\r\n * document.querySelector(\".element\"),\r\n * ];\r\n */\r\n\r\n /**\r\n * You can set up boundaries. (default: null)\r\n * @name Moveable.Snappable#bounds\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.bounds = { left: 0, right: 1000, top: 0, bottom: 1000};\r\n */\r\n\r\n /**\r\n * You can set up inner boundaries. (default: null)\r\n * @name Moveable.Snappable#innerBounds\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.innerBounds = { left: 500, top: 500, width: 100, height: 100};\r\n */\r\n\r\n /**\r\n * snap distance digits (default: 0)\r\n * @name Moveable.Snappable#snapDigit\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.snapDigit = 0\r\n */\r\n\r\n /**\r\n * Whether to show snap distance (default: true)\r\n * @name Moveable.Snappable#isDisplaySnapDigit\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.isDisplaySnapDigit = true;\r\n */\r\n\r\n /**\r\n * You can set the text format of the distance shown in the guidelines. (default: self)\r\n * @name Moveable.Snappable#snapDistFormat\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true,\r\n * snapDistFormat: v => v,\r\n * });\r\n * moveable.snapDistFormat = v => `${v}px`;\r\n */\r\n\r\n /**\r\n * When you drag or dragControl, the `snap` event is called.\r\n * @memberof Moveable.Snappable\r\n * @event snap\r\n * @param {Moveable.Snappable.OnSnap} - Parameters for the `snap` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * snappable: true\r\n * });\r\n * moveable.on(\"snap\", e => {\r\n * console.log(\"onSnap\", e);\r\n * });\r\n */\r\n\r\n /**\r\n * @namespace Draggable\r\n * @memberof Moveable\r\n * @description Draggable refers to the ability to drag and move targets.\r\n */\r\n\r\n var Draggable = {\r\n name: \"draggable\",\r\n props: {\r\n draggable: Boolean,\r\n throttleDrag: Number,\r\n throttleDragRotate: Number,\r\n startDragRotate: Number,\r\n edgeDraggable: Boolean\r\n },\r\n events: {\r\n onDragStart: \"dragStart\",\r\n onDrag: \"drag\",\r\n onDragEnd: \"dragEnd\",\r\n onDragGroupStart: \"dragGroupStart\",\r\n onDragGroup: \"dragGroup\",\r\n onDragGroupEnd: \"dragGroupEnd\"\r\n },\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n throttleDragRotate = _a.throttleDragRotate,\r\n zoom = _a.zoom;\r\n var _b = moveable.state,\r\n dragInfo = _b.dragInfo,\r\n beforeOrigin = _b.beforeOrigin;\r\n\r\n if (!throttleDragRotate || !dragInfo) {\r\n return [];\r\n }\r\n\r\n var dist = dragInfo.dist;\r\n\r\n if (!dist[0] && !dist[1]) {\r\n return [];\r\n }\r\n\r\n var width = getDistSize(dist);\r\n var rad = getRad$1(dist, [0, 0]);\r\n return [React.createElement(\"div\", {\r\n className: prefix(\"line\", \"horizontal\", \"dragline\", \"dashed\"),\r\n key: \"dragRotateGuideline\",\r\n style: {\r\n width: width + \"px\",\r\n transform: \"translate(\" + beforeOrigin[0] + \"px, \" + beforeOrigin[1] + \"px) rotate(\" + rad + \"rad) scaleY(\" + zoom + \")\"\r\n }\r\n })];\r\n },\r\n dragStart: function (moveable, e) {\r\n var datas = e.datas,\r\n parentEvent = e.parentEvent,\r\n parentGesto = e.parentGesto;\r\n var state = moveable.state;\r\n var target = state.target,\r\n gesto = state.gesto;\r\n\r\n if (gesto) {\r\n return false;\r\n }\r\n\r\n state.gesto = parentGesto || moveable.targetGesto;\r\n var style = window.getComputedStyle(target);\r\n datas.datas = {};\r\n datas.left = parseFloat(style.left || \"\") || 0;\r\n datas.top = parseFloat(style.top || \"\") || 0;\r\n datas.bottom = parseFloat(style.bottom || \"\") || 0;\r\n datas.right = parseFloat(style.right || \"\") || 0;\r\n datas.startValue = [0, 0];\r\n setDragStart(moveable, e);\r\n setDefaultTransformIndex(e);\r\n startCheckSnapDrag(moveable, datas);\r\n datas.prevDist = [0, 0];\r\n datas.prevBeforeDist = [0, 0];\r\n datas.isDrag = false;\r\n var params = fillParams(moveable, e, __assign$2({\r\n set: function (translate) {\r\n datas.startValue = translate;\r\n }\r\n }, fillTransformStartEvent(e)));\r\n var result = parentEvent || triggerEvent(moveable, \"onDragStart\", params);\r\n\r\n if (result !== false) {\r\n datas.isDrag = true;\r\n moveable.state.dragInfo = {\r\n startRect: moveable.getRect(),\r\n dist: [0, 0]\r\n };\r\n } else {\r\n state.gesto = null;\r\n datas.isPinch = false;\r\n }\r\n\r\n return datas.isDrag ? params : false;\r\n },\r\n drag: function (moveable, e) {\r\n resolveTransformEvent(e, \"translate\");\r\n var datas = e.datas,\r\n parentEvent = e.parentEvent,\r\n parentFlag = e.parentFlag,\r\n isPinch = e.isPinch,\r\n isRequest = e.isRequest;\r\n var distX = e.distX,\r\n distY = e.distY;\r\n var isDrag = datas.isDrag,\r\n prevDist = datas.prevDist,\r\n prevBeforeDist = datas.prevBeforeDist,\r\n startValue = datas.startValue;\r\n\r\n if (!isDrag) {\r\n return;\r\n }\r\n\r\n var props = moveable.props;\r\n var parentMoveable = props.parentMoveable;\r\n var throttleDrag = parentEvent ? 0 : props.throttleDrag || 0;\r\n var throttleDragRotate = parentEvent ? 0 : props.throttleDragRotate || 0;\r\n var isSnap = false;\r\n var dragRotateRad = 0;\r\n\r\n if (!parentEvent && throttleDragRotate > 0 && (distX || distY)) {\r\n var startDragRotate = props.startDragRotate || 0;\r\n var deg = throttle(startDragRotate + getRad$1([0, 0], [distX, distY]) * 180 / Math.PI, throttleDragRotate) - startDragRotate;\r\n var ry = distY * Math.abs(Math.cos((deg - 90) / 180 * Math.PI));\r\n var rx = distX * Math.abs(Math.cos(deg / 180 * Math.PI));\r\n var r = getDistSize([rx, ry]);\r\n dragRotateRad = deg * Math.PI / 180;\r\n distX = r * Math.cos(dragRotateRad);\r\n distY = r * Math.sin(dragRotateRad);\r\n }\r\n\r\n if (!isPinch && !parentEvent && !parentFlag && (!throttleDragRotate || distX || distY)) {\r\n var _a = checkSnapDrag(moveable, distX, distY, throttleDragRotate, isRequest, datas),\r\n verticalInfo = _a[0],\r\n horizontalInfo = _a[1];\r\n\r\n var isVerticalSnap = verticalInfo.isSnap,\r\n isVerticalBound = verticalInfo.isBound,\r\n verticalOffset = verticalInfo.offset;\r\n var isHorizontalSnap = horizontalInfo.isSnap,\r\n isHorizontalBound = horizontalInfo.isBound,\r\n horizontalOffset = horizontalInfo.offset;\r\n isSnap = isVerticalSnap || isHorizontalSnap || isVerticalBound || isHorizontalBound;\r\n distX += verticalOffset;\r\n distY += horizontalOffset;\r\n }\r\n\r\n datas.passDeltaX = distX - (datas.passDistX || 0);\r\n datas.passDeltaY = distY - (datas.passDistY || 0);\r\n datas.passDistX = distX;\r\n datas.passDistY = distY;\r\n var beforeTranslate = plus(getBeforeDragDist({\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n }), startValue);\r\n var translate = plus(getTransformDist({\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n }), startValue);\r\n\r\n if (!throttleDragRotate && !isSnap) {\r\n throttleArray(translate, throttleDrag);\r\n throttleArray(beforeTranslate, throttleDrag);\r\n }\r\n\r\n var beforeDist = minus(beforeTranslate, startValue);\r\n var dist = minus(translate, startValue);\r\n var delta = minus(dist, prevDist);\r\n var beforeDelta = minus(beforeDist, prevBeforeDist);\r\n datas.prevDist = dist;\r\n datas.prevBeforeDist = beforeDist;\r\n var left = datas.left + beforeDist[0];\r\n var top = datas.top + beforeDist[1];\r\n var right = datas.right - beforeDist[0];\r\n var bottom = datas.bottom - beforeDist[1];\r\n var nextTransform = convertTransformFormat(datas, \"translate(\" + translate[0] + \"px, \" + translate[1] + \"px)\", \"translate(\" + dist[0] + \"px, \" + dist[1] + \"px)\");\r\n moveable.state.dragInfo.dist = parentEvent ? [0, 0] : dist;\r\n\r\n if (!parentEvent && !parentMoveable && delta.every(function (num) {\r\n return !num;\r\n }) && beforeDelta.some(function (num) {\r\n return !num;\r\n })) {\r\n return;\r\n }\r\n\r\n var _b = moveable.state,\r\n width = _b.width,\r\n height = _b.height;\r\n var params = fillParams(moveable, e, {\r\n transform: nextTransform,\r\n dist: dist,\r\n delta: delta,\r\n translate: translate,\r\n beforeDist: beforeDist,\r\n beforeDelta: beforeDelta,\r\n beforeTranslate: beforeTranslate,\r\n left: left,\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n width: width,\r\n height: height,\r\n isPinch: isPinch\r\n });\r\n !parentEvent && triggerEvent(moveable, \"onDrag\", params);\r\n return params;\r\n },\r\n dragEnd: function (moveable, e) {\r\n var parentEvent = e.parentEvent,\r\n datas = e.datas,\r\n isDrag = e.isDrag;\r\n moveable.state.gesto = null;\r\n moveable.state.dragInfo = null;\r\n\r\n if (!datas.isDrag) {\r\n return;\r\n }\r\n\r\n datas.isDrag = false;\r\n !parentEvent && triggerEvent(moveable, \"onDragEnd\", fillEndParams(moveable, e, {}));\r\n return isDrag;\r\n },\r\n dragGroupStart: function (moveable, e) {\r\n var datas = e.datas,\r\n clientX = e.clientX,\r\n clientY = e.clientY;\r\n var params = this.dragStart(moveable, e);\r\n\r\n if (!params) {\r\n return false;\r\n }\r\n\r\n var events = triggerChildGesto(moveable, this, \"dragStart\", [clientX || 0, clientY || 0], e, false);\r\n\r\n var nextParams = __assign$2(__assign$2({}, params), {\r\n targets: moveable.props.targets,\r\n events: events\r\n });\r\n\r\n var result = triggerEvent(moveable, \"onDragGroupStart\", nextParams);\r\n datas.isDrag = result !== false;\r\n return datas.isDrag ? params : false;\r\n },\r\n dragGroup: function (moveable, e) {\r\n var datas = e.datas;\r\n\r\n if (!datas.isDrag) {\r\n return;\r\n }\r\n\r\n var params = this.drag(moveable, e);\r\n var _a = e.datas,\r\n passDeltaX = _a.passDeltaX,\r\n passDeltaY = _a.passDeltaY;\r\n var events = triggerChildGesto(moveable, this, \"drag\", [passDeltaX, passDeltaY], e, false);\r\n\r\n if (!params) {\r\n return;\r\n }\r\n\r\n var nextParams = __assign$2({\r\n targets: moveable.props.targets,\r\n events: events\r\n }, params);\r\n\r\n triggerEvent(moveable, \"onDragGroup\", nextParams);\r\n return nextParams;\r\n },\r\n dragGroupEnd: function (moveable, e) {\r\n var isDrag = e.isDrag,\r\n datas = e.datas;\r\n\r\n if (!datas.isDrag) {\r\n return;\r\n }\r\n\r\n this.dragEnd(moveable, e);\r\n triggerChildGesto(moveable, this, \"dragEnd\", [0, 0], e, false);\r\n triggerEvent(moveable, \"onDragGroupEnd\", fillEndParams(moveable, e, {\r\n targets: moveable.props.targets\r\n }));\r\n return isDrag;\r\n },\r\n\r\n /**\r\n * @method Moveable.Draggable#request\r\n * @param {object} [e] - the draggable's request parameter\r\n * @param {number} [e.x] - x position\r\n * @param {number} [e.y] - y position\r\n * @param {number} [e.deltaX] - X number to move\r\n * @param {number} [e.deltaY] - Y number to move\r\n * @return {Moveable.Requester} Moveable Requester\r\n * @example\r\n * // Instantly Request (requestStart - request - requestEnd)\r\n * // Use Relative Value\r\n * moveable.request(\"draggable\", { deltaX: 10, deltaY: 10 }, true);\r\n * // Use Absolute Value\r\n * moveable.request(\"draggable\", { x: 200, y: 100 }, true);\r\n *\r\n * // requestStart\r\n * const requester = moveable.request(\"draggable\");\r\n *\r\n * // request\r\n * // Use Relative Value\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * // Use Absolute Value\r\n * moveable.request(\"draggable\", { x: 200, y: 100 });\r\n * moveable.request(\"draggable\", { x: 220, y: 100 });\r\n * moveable.request(\"draggable\", { x: 240, y: 100 });\r\n *\r\n * // requestEnd\r\n * requester.requestEnd();\r\n */\r\n request: function (moveable) {\r\n var datas = {};\r\n var rect = moveable.getRect();\r\n var distX = 0;\r\n var distY = 0;\r\n return {\r\n isControl: false,\r\n requestStart: function () {\r\n return {\r\n datas: datas\r\n };\r\n },\r\n request: function (e) {\r\n if (\"x\" in e) {\r\n distX = e.x - rect.left;\r\n } else if (\"deltaX\" in e) {\r\n distX += e.deltaX;\r\n }\r\n\r\n if (\"y\" in e) {\r\n distY = e.y - rect.top;\r\n } else if (\"deltaY\" in e) {\r\n distY += e.deltaY;\r\n }\r\n\r\n return {\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n };\r\n },\r\n requestEnd: function () {\r\n return {\r\n datas: datas,\r\n isDrag: true\r\n };\r\n }\r\n };\r\n },\r\n unset: function (moveable) {\r\n moveable.state.dragInfo = null;\r\n }\r\n };\r\n /**\r\n * Whether or not target can be dragged. (default: false)\r\n * @name Moveable.Draggable#draggable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.draggable = true;\r\n */\r\n\r\n /**\r\n * throttle of x, y when drag.\r\n * @name Moveable.Draggable#throttleDrag\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.throttleDrag = 1;\r\n */\r\n\r\n /**\r\n * throttle of angle of x, y when drag.\r\n * @name Moveable.Draggable#throttleDragRotate\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.throttleDragRotate = 45;\r\n */\r\n\r\n /**\r\n * start angle of throttleDragRotate of x, y when drag.\r\n * @name Moveable.Draggable#startDragRotate\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * // 45, 135, 225, 315\r\n * moveable.throttleDragRotate = 90;\r\n * moveable.startDragRotate = 45;\r\n */\r\n\r\n /**\r\n * When the drag starts, the dragStart event is called.\r\n * @memberof Moveable.Draggable\r\n * @event dragStart\r\n * @param {Moveable.Draggable.OnDragStart} - Parameters for the dragStart event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { draggable: true });\r\n * moveable.on(\"dragStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When dragging, the drag event is called.\r\n * @memberof Moveable.Draggable\r\n * @event drag\r\n * @param {Moveable.Draggable.OnDrag} - Parameters for the drag event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { draggable: true });\r\n * moveable.on(\"drag\", ({ target, transform }) => {\r\n * target.style.transform = transform;\r\n * });\r\n */\r\n\r\n /**\r\n * When the drag finishes, the dragEnd event is called.\r\n * @memberof Moveable.Draggable\r\n * @event dragEnd\r\n * @param {Moveable.Draggable.OnDragEnd} - Parameters for the dragEnd event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { draggable: true });\r\n * moveable.on(\"dragEnd\", ({ target, isDrag }) => {\r\n * console.log(target, isDrag);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group drag starts, the `dragGroupStart` event is called.\r\n * @memberof Moveable.Draggable\r\n * @event dragGroupStart\r\n * @param {Moveable.Draggable.OnDragGroupStart} - Parameters for the `dragGroupStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * draggable: true\r\n * });\r\n * moveable.on(\"dragGroupStart\", ({ targets }) => {\r\n * console.log(\"onDragGroupStart\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group drag, the `dragGroup` event is called.\r\n * @memberof Moveable.Draggable\r\n * @event dragGroup\r\n * @param {Moveable.Draggable.OnDragGroup} - Parameters for the `dragGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * draggable: true\r\n * });\r\n * moveable.on(\"dragGroup\", ({ targets, events }) => {\r\n * console.log(\"onDragGroup\", targets);\r\n * events.forEach(ev => {\r\n * // drag event\r\n * console.log(\"onDrag left, top\", ev.left, ev.top);\r\n * // ev.target!.style.left = `${ev.left}px`;\r\n * // ev.target!.style.top = `${ev.top}px`;\r\n * console.log(\"onDrag translate\", ev.dist);\r\n * ev.target!.style.transform = ev.transform;)\r\n * });\r\n * });\r\n */\r\n\r\n /**\r\n * When the group drag finishes, the `dragGroupEnd` event is called.\r\n * @memberof Moveable.Draggable\r\n * @event dragGroupEnd\r\n * @param {Moveable.Draggable.OnDragGroupEnd} - Parameters for the `dragGroupEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * draggable: true\r\n * });\r\n * moveable.on(\"dragGroupEnd\", ({ targets, isDrag }) => {\r\n * console.log(\"onDragGroupEnd\", targets, isDrag);\r\n * });\r\n */\r\n\r\n function renderControls(moveable, defaultDirections, React) {\r\n var _a = moveable.state,\r\n renderPoses = _a.renderPoses,\r\n radRotation = _a.rotation,\r\n direction = _a.direction;\r\n var _b = moveable.props,\r\n _c = _b.renderDirections,\r\n directions = _c === void 0 ? defaultDirections : _c,\r\n zoom = _b.zoom;\r\n var directionMap = {};\r\n\r\n if (!directions) {\r\n return [];\r\n }\r\n\r\n var sign = direction > 0 ? 1 : -1;\r\n var renderDirections = directions === true ? DIRECTIONS : directions;\r\n var degRotation = radRotation / Math.PI * 180;\r\n renderDirections.forEach(function (dir) {\r\n directionMap[dir] = true;\r\n });\r\n return renderDirections.map(function (dir) {\r\n var indexes = DIRECTION_INDEXES[dir];\r\n\r\n if (!indexes || !directionMap[dir]) {\r\n return null;\r\n }\r\n\r\n var directionRotation = (throttle(degRotation, 15) + sign * DIRECTION_ROTATIONS[dir] + 720) % 180;\r\n return React.createElement(\"div\", {\r\n className: prefix(\"control\", \"direction\", dir),\r\n \"data-rotation\": directionRotation,\r\n \"data-direction\": dir,\r\n key: \"direction-\" + dir,\r\n style: getControlTransform.apply(void 0, __spreadArrays$1([radRotation, zoom], indexes.map(function (index) {\r\n return renderPoses[index];\r\n })))\r\n });\r\n });\r\n }\r\n function renderLine(React, direction, pos1, pos2, zoom, key) {\r\n var classNames = [];\r\n\r\n for (var _i = 6; _i < arguments.length; _i++) {\r\n classNames[_i - 6] = arguments[_i];\r\n }\r\n\r\n var rad = getRad$1(pos1, pos2);\r\n var rotation = direction ? throttle(rad / Math.PI * 180, 15) % 180 : -1;\r\n return React.createElement(\"div\", {\r\n key: \"line\" + key,\r\n className: prefix.apply(void 0, __spreadArrays$1([\"line\", \"direction\", direction], classNames)),\r\n \"data-rotation\": rotation,\r\n \"data-line-index\": key,\r\n \"data-direction\": direction,\r\n style: getLineStyle(pos1, pos2, zoom, rad)\r\n });\r\n }\r\n function renderAllDirections(moveable, React) {\r\n return renderControls(moveable, DIRECTIONS, React);\r\n }\r\n function renderDiagonalDirections(moveable, React) {\r\n return renderControls(moveable, [\"nw\", \"ne\", \"sw\", \"se\"], React);\r\n }\r\n\r\n /**\r\n * @namespace Rotatable\r\n * @memberof Moveable\r\n * @description Rotatable indicates whether the target can be rotated.\r\n */\r\n\r\n function setRotateStartInfo(moveable, datas, clientX, clientY, origin, rect) {\r\n var n = moveable.state.is3d ? 4 : 3;\r\n var nextOrigin = calculatePosition(moveable.state.rootMatrix, origin, n);\r\n var startAbsoluteOrigin = plus([rect.left, rect.top], nextOrigin);\r\n datas.startAbsoluteOrigin = startAbsoluteOrigin;\r\n datas.prevDeg = getRad$1(startAbsoluteOrigin, [clientX, clientY]) / Math.PI * 180;\r\n datas.prevSnapDeg = datas.prevDeg;\r\n datas.startDeg = datas.prevDeg;\r\n datas.loop = 0;\r\n }\r\n\r\n function getParentDeg(moveable, moveableRect, datas, parentDist, direction, startValue) {\r\n var prevDeg = datas.prevDeg; // const absoluteDeg = startValue + parentDist;\r\n\r\n var dist = checkSnapRotate(moveable, moveableRect, datas.origin, parentDist);\r\n datas.prevDeg = dist;\r\n var delta = dist - prevDeg;\r\n return [delta, dist, startValue + dist];\r\n }\r\n\r\n function getDeg(moveable, moveableRect, datas, deg, direction, startValue, throttleRotate, isSnap) {\r\n var prevDeg = datas.prevDeg,\r\n prevSnapDeg = datas.prevSnapDeg,\r\n startDeg = datas.startDeg,\r\n prevLoop = datas.loop;\r\n\r\n if (prevDeg > deg && prevDeg > 270 && deg < 90) {\r\n // 360 => 0\r\n ++datas.loop;\r\n } else if (prevDeg < deg && prevDeg < 90 && deg > 270) {\r\n // 0 => 360\r\n --datas.loop;\r\n }\r\n\r\n var loop = datas.loop;\r\n var absolutePrevSnapDeg = prevLoop * 360 + prevSnapDeg - startDeg + startValue;\r\n var absoluteDeg = loop * 360 + deg - startDeg + startValue;\r\n datas.prevDeg = absoluteDeg - loop * 360 + startDeg - startValue;\r\n absoluteDeg = throttle(absoluteDeg, throttleRotate);\r\n var dist = direction * (absoluteDeg - startValue);\r\n\r\n if (isSnap) {\r\n dist = checkSnapRotate(moveable, moveableRect, datas.origin, dist);\r\n absoluteDeg = dist / direction + startValue;\r\n }\r\n\r\n datas.prevSnapDeg = absoluteDeg - loop * 360 + startDeg - startValue;\r\n var delta = direction * (absoluteDeg - absolutePrevSnapDeg);\r\n return [delta, dist, startValue + dist];\r\n }\r\n\r\n function getRotateInfo(moveable, moveableRect, datas, direction, clientX, clientY, startValue, throttleRotate) {\r\n return getDeg(moveable, moveableRect, datas, getRad$1(datas.startAbsoluteOrigin, [clientX, clientY]) / Math.PI * 180, direction, startValue, throttleRotate, true);\r\n }\r\n function getRotationPositions(rotationPosition, _a, direction) {\r\n var pos1 = _a[0],\r\n pos2 = _a[1],\r\n pos3 = _a[2],\r\n pos4 = _a[3];\r\n\r\n if (rotationPosition === \"none\") {\r\n return;\r\n }\r\n\r\n var _b = (rotationPosition || \"top\").split(\"-\"),\r\n dir1 = _b[0],\r\n dir2 = _b[1];\r\n\r\n var radPoses = [pos1, pos2]; // if (scale[0] < 0) {\r\n // dir1 = getReversePositionX(dir1);\r\n // dir2 = getReversePositionX(dir2);\r\n // }\r\n // if (scale[1] < 0) {\r\n // dir1 = getReversePositionY(dir1);\r\n // dir2 = getReversePositionY(dir2);\r\n // }\r\n\r\n if (dir1 === \"left\") {\r\n radPoses = [pos3, pos1];\r\n } else if (dir1 === \"right\") {\r\n radPoses = [pos2, pos4];\r\n } else if (dir1 === \"bottom\") {\r\n radPoses = [pos4, pos3];\r\n }\r\n\r\n var pos = [(radPoses[0][0] + radPoses[1][0]) / 2, (radPoses[0][1] + radPoses[1][1]) / 2];\r\n var rad = getRotationRad(radPoses, direction);\r\n\r\n if (dir2) {\r\n var isStart = dir2 === \"top\" || dir2 === \"left\";\r\n var isReverse = dir1 === \"bottom\" || dir1 === \"left\";\r\n pos = radPoses[isStart && !isReverse || !isStart && isReverse ? 0 : 1];\r\n }\r\n\r\n return [pos, rad];\r\n }\r\n function dragControlCondition(e, moveable) {\r\n if (e.isRequest) {\r\n return e.requestAble === \"rotatable\";\r\n }\r\n\r\n var target = e.inputEvent.target;\r\n\r\n if (hasClass(target, prefix(\"rotation-control\"))) {\r\n return true;\r\n }\r\n\r\n var rotationTarget = moveable.props.rotationTarget;\r\n\r\n if (rotationTarget) {\r\n return getRefTargets(rotationTarget, true).some(function (element) {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n return target === element || target.contains(element);\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n var Rotatable = {\r\n name: \"rotatable\",\r\n canPinch: true,\r\n props: {\r\n rotatable: Boolean,\r\n rotationPosition: String,\r\n throttleRotate: Number,\r\n renderDirections: Object,\r\n rotationTarget: Object\r\n },\r\n events: {\r\n onRotateStart: \"rotateStart\",\r\n onRotate: \"rotate\",\r\n onRotateEnd: \"rotateEnd\",\r\n onRotateGroupStart: \"rotateGroupStart\",\r\n onRotateGroup: \"rotateGroup\",\r\n onRotateGroupEnd: \"rotateGroupEnd\"\r\n },\r\n css: [\".rotation {\\n position: absolute;\\n height: 40px;\\n width: 1px;\\n transform-origin: 50% 100%;\\n height: calc(40px * var(--zoom));\\n top: auto;\\n left: 0;\\n bottom: 100%;\\n will-change: transform;\\n }\\n .rotation .rotation-line {\\n display: block;\\n width: 100%;\\n height: 100%;\\n transform-origin: 50% 50%;\\n }\\n .rotation .rotation-control {\\n border-color: #4af;\\n border-color: var(--moveable-color);\\n background:#fff;\\n cursor: alias;\\n }\"],\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n rotatable = _a.rotatable,\r\n rotationPosition = _a.rotationPosition,\r\n zoom = _a.zoom,\r\n renderDirections = _a.renderDirections;\r\n var _b = moveable.state,\r\n renderPoses = _b.renderPoses,\r\n direction = _b.direction;\r\n\r\n if (!rotatable) {\r\n return null;\r\n }\r\n\r\n var positions = getRotationPositions(rotationPosition, renderPoses, direction);\r\n var jsxs = [];\r\n\r\n if (positions) {\r\n var pos = positions[0],\r\n rad = positions[1];\r\n jsxs.push(React.createElement(\"div\", {\r\n key: \"rotation\",\r\n className: prefix(\"rotation\"),\r\n style: {\r\n // tslint:disable-next-line: max-line-length\r\n transform: \"translate(-50%) translate(\" + pos[0] + \"px, \" + pos[1] + \"px) rotate(\" + rad + \"rad)\"\r\n }\r\n }, React.createElement(\"div\", {\r\n className: prefix(\"line rotation-line\"),\r\n style: {\r\n transform: \"scaleX(\" + zoom + \")\"\r\n }\r\n }), React.createElement(\"div\", {\r\n className: prefix(\"control rotation-control\"),\r\n style: {\r\n transform: \"translate(0.5px) scale(\" + zoom + \")\"\r\n }\r\n })));\r\n }\r\n\r\n if (renderDirections) {\r\n jsxs.push.apply(jsxs, renderControls(moveable, [], React));\r\n }\r\n\r\n return jsxs;\r\n },\r\n dragControlCondition: dragControlCondition,\r\n dragControlStart: function (moveable, e) {\r\n var datas = e.datas,\r\n clientX = e.clientX,\r\n clientY = e.clientY,\r\n parentRotate = e.parentRotate,\r\n parentFlag = e.parentFlag,\r\n isPinch = e.isPinch,\r\n isRequest = e.isRequest;\r\n var _a = moveable.state,\r\n target = _a.target,\r\n left = _a.left,\r\n top = _a.top,\r\n origin = _a.origin,\r\n beforeOrigin = _a.beforeOrigin,\r\n direction = _a.direction,\r\n beforeDirection = _a.beforeDirection,\r\n targetTransform = _a.targetTransform,\r\n moveableClientRect = _a.moveableClientRect;\r\n\r\n if (!isRequest && !target) {\r\n return false;\r\n }\r\n\r\n var rect = moveable.getRect();\r\n datas.rect = rect;\r\n datas.transform = targetTransform;\r\n datas.left = left;\r\n datas.top = top;\r\n datas.fixedPosition = getDirectionOffset(moveable, getOriginDirection(moveable));\r\n datas.absoluteInfo = {\r\n origin: rect.origin,\r\n startValue: rect.rotation\r\n };\r\n setRotateStartInfo(moveable, datas.absoluteInfo, clientX, clientY, origin, moveableClientRect);\r\n\r\n if (isRequest || isPinch || parentFlag) {\r\n var externalRotate = parentRotate || 0;\r\n datas.beforeInfo = {\r\n origin: rect.beforeOrigin,\r\n prevDeg: externalRotate,\r\n startDeg: externalRotate,\r\n prevSnapDeg: externalRotate,\r\n loop: 0\r\n };\r\n datas.afterInfo = {\r\n origin: rect.origin,\r\n prevDeg: externalRotate,\r\n startDeg: externalRotate,\r\n prevSnapDeg: externalRotate,\r\n loop: 0\r\n };\r\n } else {\r\n datas.beforeInfo = {\r\n origin: rect.beforeOrigin\r\n };\r\n datas.afterInfo = {\r\n origin: rect.origin\r\n };\r\n setRotateStartInfo(moveable, datas.beforeInfo, clientX, clientY, beforeOrigin, moveableClientRect);\r\n setRotateStartInfo(moveable, datas.afterInfo, clientX, clientY, origin, moveableClientRect);\r\n }\r\n\r\n datas.direction = direction;\r\n datas.beforeDirection = beforeDirection;\r\n datas.startValue = 0;\r\n datas.datas = {};\r\n setDefaultTransformIndex(e);\r\n var params = fillParams(moveable, e, __assign$2(__assign$2({\r\n set: function (rotatation) {\r\n datas.startValue = rotatation * Math.PI / 180;\r\n }\r\n }, fillTransformStartEvent(e)), {\r\n dragStart: Draggable.dragStart(moveable, new CustomGesto().dragStart([0, 0], e))\r\n }));\r\n var result = triggerEvent(moveable, \"onRotateStart\", params);\r\n datas.isRotate = result !== false;\r\n moveable.state.snapRenderInfo = {\r\n request: e.isRequest\r\n };\r\n return datas.isRotate ? params : false;\r\n },\r\n dragControl: function (moveable, e) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n\r\n var datas = e.datas,\r\n clientX = e.clientX,\r\n clientY = e.clientY,\r\n parentRotate = e.parentRotate,\r\n parentFlag = e.parentFlag,\r\n isPinch = e.isPinch,\r\n groupDelta = e.groupDelta;\r\n var beforeDirection = datas.beforeDirection,\r\n beforeInfo = datas.beforeInfo,\r\n afterInfo = datas.afterInfo,\r\n absoluteInfo = datas.absoluteInfo,\r\n isRotate = datas.isRotate,\r\n startValue = datas.startValue,\r\n rect = datas.rect;\r\n\r\n if (!isRotate) {\r\n return;\r\n }\r\n\r\n resolveTransformEvent(e, \"rotate\");\r\n var targetDirection = getTransformDirection(e);\r\n var direction = beforeDirection * targetDirection;\r\n var _k = moveable.props,\r\n _l = _k.throttleRotate,\r\n throttleRotate = _l === void 0 ? 0 : _l,\r\n parentMoveable = _k.parentMoveable;\r\n var delta;\r\n var dist;\r\n var rotate;\r\n var beforeDelta;\r\n var beforeDist;\r\n var beforeRotate;\r\n var absoluteDelta;\r\n var absoluteDist;\r\n var absoluteRotate;\r\n var startDeg = 180 / Math.PI * startValue;\r\n var absoluteStartDeg = absoluteInfo.startValue;\r\n\r\n if (!parentFlag && \"parentDist\" in e) {\r\n var parentDist = e.parentDist;\r\n _a = getParentDeg(moveable, rect, afterInfo, parentDist, direction, startDeg), delta = _a[0], dist = _a[1], rotate = _a[2];\r\n _b = getParentDeg(moveable, rect, beforeInfo, parentDist, beforeDirection, startDeg), beforeDelta = _b[0], beforeDist = _b[1], beforeRotate = _b[2];\r\n _c = getParentDeg(moveable, rect, absoluteInfo, parentDist, direction, absoluteStartDeg), absoluteDelta = _c[0], absoluteDist = _c[1], absoluteRotate = _c[2];\r\n } else if (isPinch || parentFlag) {\r\n _d = getDeg(moveable, rect, afterInfo, parentRotate, direction, startDeg, throttleRotate), delta = _d[0], dist = _d[1], rotate = _d[2];\r\n _e = getDeg(moveable, rect, beforeInfo, parentRotate, beforeDirection, startDeg, throttleRotate), beforeDelta = _e[0], beforeDist = _e[1], beforeRotate = _e[2];\r\n _f = getDeg(moveable, rect, absoluteInfo, parentRotate, direction, absoluteStartDeg, throttleRotate), absoluteDelta = _f[0], absoluteDist = _f[1], absoluteRotate = _f[2];\r\n } else {\r\n _g = getRotateInfo(moveable, rect, afterInfo, direction, clientX, clientY, startDeg, throttleRotate), delta = _g[0], dist = _g[1], rotate = _g[2];\r\n _h = getRotateInfo(moveable, rect, beforeInfo, beforeDirection, clientX, clientY, startDeg, throttleRotate), beforeDelta = _h[0], beforeDist = _h[1], beforeRotate = _h[2];\r\n _j = getRotateInfo(moveable, rect, absoluteInfo, direction, clientX, clientY, absoluteStartDeg, throttleRotate), absoluteDelta = _j[0], absoluteDist = _j[1], absoluteRotate = _j[2];\r\n }\r\n\r\n if (!absoluteDelta && !delta && !beforeDelta && !parentMoveable) {\r\n return;\r\n }\r\n\r\n var nextTransform = convertTransformFormat(datas, \"rotate(\" + rotate + \"deg)\", \"rotate(\" + dist + \"deg)\");\r\n var inverseDist = getRotateDist(moveable, dist, datas.fixedPosition, datas);\r\n var inverseDelta = minus(plus(groupDelta || [0, 0], inverseDist), datas.prevInverseDist || [0, 0]);\r\n datas.prevInverseDist = inverseDist;\r\n var params = fillParams(moveable, e, __assign$2({\r\n delta: delta,\r\n dist: dist,\r\n rotate: rotate,\r\n beforeDist: beforeDist,\r\n beforeDelta: beforeDelta,\r\n beforeRotate: beforeRotate,\r\n absoluteDist: absoluteDist,\r\n absoluteDelta: absoluteDelta,\r\n absoluteRotate: absoluteRotate,\r\n isPinch: !!isPinch\r\n }, fillTransformEvent(moveable, nextTransform, inverseDelta, isPinch, e)));\r\n triggerEvent(moveable, \"onRotate\", params);\r\n return params;\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n var datas = e.datas,\r\n isDrag = e.isDrag;\r\n\r\n if (!datas.isRotate) {\r\n return false;\r\n }\r\n\r\n datas.isRotate = false;\r\n triggerEvent(moveable, \"onRotateEnd\", fillEndParams(moveable, e, {}));\r\n return isDrag;\r\n },\r\n dragGroupControlCondition: dragControlCondition,\r\n dragGroupControlStart: function (moveable, e) {\r\n var datas = e.datas;\r\n var _a = moveable.state,\r\n parentLeft = _a.left,\r\n parentTop = _a.top,\r\n parentBeforeOrigin = _a.beforeOrigin;\r\n var params = this.dragControlStart(moveable, e);\r\n\r\n if (!params) {\r\n return false;\r\n }\r\n\r\n params.set(datas.beforeDirection * moveable.rotation);\r\n var events = triggerChildAble(moveable, this, \"dragControlStart\", e, function (child, ev) {\r\n var _a = child.state,\r\n left = _a.left,\r\n top = _a.top,\r\n beforeOrigin = _a.beforeOrigin;\r\n var childClient = plus(minus([left, top], [parentLeft, parentTop]), minus(beforeOrigin, parentBeforeOrigin));\r\n ev.datas.groupClient = childClient;\r\n return __assign$2(__assign$2({}, ev), {\r\n parentRotate: 0\r\n });\r\n });\r\n\r\n var nextParams = __assign$2(__assign$2({}, params), {\r\n targets: moveable.props.targets,\r\n events: events\r\n });\r\n\r\n var result = triggerEvent(moveable, \"onRotateGroupStart\", nextParams);\r\n datas.isRotate = result !== false;\r\n return datas.isRotate ? params : false;\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n var datas = e.datas;\r\n\r\n if (!datas.isRotate) {\r\n return;\r\n }\r\n\r\n var params = this.dragControl(moveable, e);\r\n\r\n if (!params) {\r\n return;\r\n }\r\n\r\n var direction = datas.beforeDirection;\r\n var parentRotate = params.beforeDist;\r\n var deg = params.beforeDelta;\r\n var rad = deg / 180 * Math.PI;\r\n var events = triggerChildAble(moveable, this, \"dragControl\", e, function (_, ev) {\r\n var _a = ev.datas.groupClient,\r\n prevX = _a[0],\r\n prevY = _a[1];\r\n\r\n var _b = rotate([prevX, prevY], rad * direction),\r\n clientX = _b[0],\r\n clientY = _b[1];\r\n\r\n var delta = [clientX - prevX, clientY - prevY];\r\n ev.datas.groupClient = [clientX, clientY];\r\n return __assign$2(__assign$2({}, ev), {\r\n parentRotate: parentRotate,\r\n groupDelta: delta\r\n });\r\n });\r\n moveable.rotation = direction * params.beforeRotate;\r\n\r\n var nextParams = __assign$2({\r\n targets: moveable.props.targets,\r\n events: events,\r\n set: function (rotation) {\r\n moveable.rotation = rotation;\r\n }\r\n }, params);\r\n\r\n triggerEvent(moveable, \"onRotateGroup\", nextParams);\r\n return nextParams;\r\n },\r\n dragGroupControlEnd: function (moveable, e) {\r\n var isDrag = e.isDrag,\r\n datas = e.datas;\r\n\r\n if (!datas.isRotate) {\r\n return;\r\n }\r\n\r\n this.dragControlEnd(moveable, e);\r\n triggerChildAble(moveable, this, \"dragControlEnd\", e);\r\n var nextParams = fillEndParams(moveable, e, {\r\n targets: moveable.props.targets\r\n });\r\n triggerEvent(moveable, \"onRotateGroupEnd\", nextParams);\r\n return isDrag;\r\n },\r\n\r\n /**\r\n * @method Moveable.Rotatable#request\r\n * @param {object} [e] - the Resizable's request parameter\r\n * @param {number} [e.deltaRotate=0] - delta number of rotation\r\n * @param {number} [e.rotate=0] - absolute number of moveable's rotation\r\n * @return {Moveable.Requester} Moveable Requester\r\n * @example\r\n * // Instantly Request (requestStart - request - requestEnd)\r\n * moveable.request(\"rotatable\", { deltaRotate: 10 }, true);\r\n *\r\n * * moveable.request(\"rotatable\", { rotate: 10 }, true);\r\n *\r\n * // requestStart\r\n * const requester = moveable.request(\"rotatable\");\r\n *\r\n * // request\r\n * requester.request({ deltaRotate: 10 });\r\n * requester.request({ deltaRotate: 10 });\r\n * requester.request({ deltaRotate: 10 });\r\n *\r\n * requester.request({ rotate: 10 });\r\n * requester.request({ rotate: 20 });\r\n * requester.request({ rotate: 30 });\r\n *\r\n * // requestEnd\r\n * requester.requestEnd();\r\n */\r\n request: function (moveable) {\r\n var datas = {};\r\n var distRotate = 0;\r\n var startRotation = moveable.getRotation();\r\n return {\r\n isControl: true,\r\n requestStart: function () {\r\n return {\r\n datas: datas\r\n };\r\n },\r\n request: function (e) {\r\n if (\"deltaRotate\" in e) {\r\n distRotate += e.deltaRotate;\r\n } else if (\"rotate\" in e) {\r\n distRotate = e.rotate - startRotation;\r\n }\r\n\r\n return {\r\n datas: datas,\r\n parentDist: distRotate\r\n };\r\n },\r\n requestEnd: function () {\r\n return {\r\n datas: datas,\r\n isDrag: true\r\n };\r\n }\r\n };\r\n }\r\n };\r\n /**\r\n * Whether or not target can be rotated. (default: false)\r\n * @name Moveable.Rotatable#rotatable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.rotatable = true;\r\n */\r\n\r\n /**\r\n * You can specify the position of the rotation. (default: \"top\")\r\n * @name Moveable.Rotatable#rotationPosition\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * rotationPosition: \"top\",\r\n * });\r\n *\r\n * moveable.rotationPosition = \"bottom\"\r\n */\r\n\r\n /**\r\n * throttle of angle(degree) when rotate.\r\n * @name Moveable.Rotatable#throttleRotate\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.throttleRotate = 1;\r\n */\r\n\r\n /**\r\n * When the rotate starts, the rotateStart event is called.\r\n * @memberof Moveable.Rotatable\r\n * @event rotateStart\r\n * @param {Moveable.Rotatable.OnRotateStart} - Parameters for the rotateStart event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { rotatable: true });\r\n * moveable.on(\"rotateStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When rotating, the rotate event is called.\r\n * @memberof Moveable.Rotatable\r\n * @event rotate\r\n * @param {Moveable.Rotatable.OnRotate} - Parameters for the rotate event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { rotatable: true });\r\n * moveable.on(\"rotate\", ({ target, transform, dist }) => {\r\n * target.style.transform = transform;\r\n * });\r\n */\r\n\r\n /**\r\n * When the rotate finishes, the rotateEnd event is called.\r\n * @memberof Moveable.Rotatable\r\n * @event rotateEnd\r\n * @param {Moveable.Rotatable.OnRotateEnd} - Parameters for the rotateEnd event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { rotatable: true });\r\n * moveable.on(\"rotateEnd\", ({ target, isDrag }) => {\r\n * console.log(target, isDrag);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group rotate starts, the `rotateGroupStart` event is called.\r\n * @memberof Moveable.Rotatable\r\n * @event rotateGroupStart\r\n * @param {Moveable.Rotatable.OnRotateGroupStart} - Parameters for the `rotateGroupStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * rotatable: true\r\n * });\r\n * moveable.on(\"rotateGroupStart\", ({ targets }) => {\r\n * console.log(\"onRotateGroupStart\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group rotate, the `rotateGroup` event is called.\r\n * @memberof Moveable.Rotatable\r\n * @event rotateGroup\r\n * @param {Moveable.Rotatable.OnRotateGroup} - Parameters for the `rotateGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * rotatable: true\r\n * });\r\n * moveable.on(\"rotateGroup\", ({ targets, events }) => {\r\n * console.log(\"onRotateGroup\", targets);\r\n * events.forEach(ev => {\r\n * const target = ev.target;\r\n * // ev.drag is a drag event that occurs when the group rotate.\r\n * const left = ev.drag.beforeDist[0];\r\n * const top = ev.drag.beforeDist[1];\r\n * const deg = ev.beforeDist;\r\n * });\r\n * });\r\n */\r\n\r\n /**\r\n * When the group rotate finishes, the `rotateGroupEnd` event is called.\r\n * @memberof Moveable.Rotatable\r\n * @event rotateGroupEnd\r\n * @param {Moveable.Rotatable.OnRotateGroupEnd} - Parameters for the `rotateGroupEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * rotatable: true\r\n * });\r\n * moveable.on(\"rotateGroupEnd\", ({ targets, isDrag }) => {\r\n * console.log(\"onRotateGroupEnd\", targets, isDrag);\r\n * });\r\n */\r\n\r\n /**\r\n * @namespace Resizable\r\n * @memberof Moveable\r\n * @description Resizable indicates whether the target's width and height can be increased or decreased.\r\n */\r\n\r\n var Resizable = {\r\n name: \"resizable\",\r\n ableGroup: \"size\",\r\n updateRect: true,\r\n canPinch: true,\r\n props: {\r\n resizable: Boolean,\r\n throttleResize: Number,\r\n renderDirections: Array,\r\n keepRatio: Boolean\r\n },\r\n events: {\r\n onResizeStart: \"resizeStart\",\r\n onResize: \"resize\",\r\n onResizeEnd: \"resizeEnd\",\r\n onResizeGroupStart: \"resizeGroupStart\",\r\n onResizeGroup: \"resizeGroup\",\r\n onResizeGroupEnd: \"resizeGroupEnd\"\r\n },\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n resizable = _a.resizable,\r\n edge = _a.edge;\r\n\r\n if (resizable) {\r\n if (edge) {\r\n return renderDiagonalDirections(moveable, React);\r\n }\r\n\r\n return renderAllDirections(moveable, React);\r\n }\r\n },\r\n dragControlCondition: directionCondition,\r\n dragControlStart: function (moveable, e) {\r\n var _a;\r\n\r\n var inputEvent = e.inputEvent,\r\n isPinch = e.isPinch,\r\n parentDirection = e.parentDirection,\r\n datas = e.datas,\r\n parentFlag = e.parentFlag;\r\n var direction = parentDirection || (isPinch ? [0, 0] : getDirection(inputEvent.target));\r\n var _b = moveable.state,\r\n target = _b.target,\r\n width = _b.width,\r\n height = _b.height;\r\n\r\n if (!direction || !target) {\r\n return false;\r\n }\r\n\r\n !isPinch && setDragStart(moveable, e);\r\n datas.datas = {};\r\n datas.direction = direction;\r\n datas.startOffsetWidth = width;\r\n datas.startOffsetHeight = height;\r\n datas.prevWidth = 0;\r\n datas.prevHeight = 0;\r\n _a = getCSSSize(target), datas.startWidth = _a[0], datas.startHeight = _a[1];\r\n var padding = [Math.max(0, width - datas.startWidth), Math.max(0, height - datas.startHeight)];\r\n datas.minSize = padding;\r\n datas.maxSize = [Infinity, Infinity];\r\n\r\n if (!parentFlag) {\r\n var style = window.getComputedStyle(target);\r\n var position = style.position,\r\n minWidth = style.minWidth,\r\n minHeight = style.minHeight,\r\n maxWidth = style.maxWidth,\r\n maxHeight = style.maxHeight;\r\n var isParentElement = position === \"static\" || position === \"relative\";\r\n var container = isParentElement ? target.parentElement : target.offsetParent;\r\n var containerWidth = width;\r\n var containerHeight = height;\r\n\r\n if (container) {\r\n containerWidth = container.clientWidth;\r\n containerHeight = container.clientHeight;\r\n\r\n if (isParentElement) {\r\n var containerStyle = window.getComputedStyle(container);\r\n containerWidth -= parseFloat(containerStyle.paddingLeft) || 0;\r\n containerHeight -= parseFloat(containerStyle.paddingTop) || 0;\r\n }\r\n }\r\n\r\n datas.minSize = plus([convertUnitSize(minWidth, containerWidth) || 0, convertUnitSize(minHeight, containerHeight) || 0], padding);\r\n datas.maxSize = plus([convertUnitSize(maxWidth, containerWidth) || Infinity, convertUnitSize(maxHeight, containerHeight) || Infinity], padding);\r\n }\r\n\r\n var transformOrigin = moveable.props.transformOrigin || \"% %\";\r\n datas.transformOrigin = transformOrigin && isString(transformOrigin) ? transformOrigin.split(\" \") : transformOrigin;\r\n datas.isWidth = !direction[0] && !direction[1] || direction[0] || !direction[1];\r\n\r\n function setRatio(ratio) {\r\n datas.ratio = ratio && isFinite(ratio) ? ratio : 0;\r\n }\r\n\r\n function setFixedDirection(fixedDirection) {\r\n datas.fixedDirection = fixedDirection;\r\n datas.fixedPosition = getAbsolutePosition(moveable, fixedDirection);\r\n }\r\n\r\n setRatio(width / height);\r\n setFixedDirection([-direction[0], -direction[1]]);\r\n var params = fillParams(moveable, e, {\r\n direction: direction,\r\n set: function (_a) {\r\n var startWidth = _a[0],\r\n startHeight = _a[1];\r\n datas.startWidth = startWidth;\r\n datas.startHeight = startHeight;\r\n },\r\n setMin: function (minSize) {\r\n datas.minSize = minSize;\r\n },\r\n setMax: function (maxSize) {\r\n datas.maxSize = [maxSize[0] || Infinity, maxSize[1] || Infinity];\r\n },\r\n setRatio: setRatio,\r\n setFixedDirection: setFixedDirection,\r\n setOrigin: function (origin) {\r\n datas.transformOrigin = origin;\r\n },\r\n dragStart: Draggable.dragStart(moveable, new CustomGesto().dragStart([0, 0], e))\r\n });\r\n var result = triggerEvent(moveable, \"onResizeStart\", params);\r\n\r\n if (result !== false) {\r\n datas.isResize = true;\r\n moveable.state.snapRenderInfo = {\r\n request: e.isRequest,\r\n direction: direction\r\n };\r\n }\r\n\r\n return datas.isResize ? params : false;\r\n },\r\n dragControl: function (moveable, e) {\r\n var _a;\r\n\r\n var datas = e.datas,\r\n distX = e.distX,\r\n distY = e.distY,\r\n parentFlag = e.parentFlag,\r\n isPinch = e.isPinch,\r\n parentDistance = e.parentDistance,\r\n parentScale = e.parentScale,\r\n parentKeepRatio = e.parentKeepRatio,\r\n dragClient = e.dragClient,\r\n parentDist = e.parentDist,\r\n isRequest = e.isRequest;\r\n var isResize = datas.isResize,\r\n transformOrigin = datas.transformOrigin,\r\n fixedDirection = datas.fixedDirection,\r\n startWidth = datas.startWidth,\r\n startHeight = datas.startHeight,\r\n prevWidth = datas.prevWidth,\r\n prevHeight = datas.prevHeight,\r\n minSize = datas.minSize,\r\n maxSize = datas.maxSize,\r\n ratio = datas.ratio,\r\n isWidth = datas.isWidth,\r\n startOffsetWidth = datas.startOffsetWidth,\r\n startOffsetHeight = datas.startOffsetHeight;\r\n\r\n if (!isResize) {\r\n return;\r\n }\r\n\r\n var _b = moveable.props,\r\n _c = _b.throttleResize,\r\n throttleResize = _c === void 0 ? 0 : _c,\r\n parentMoveable = _b.parentMoveable,\r\n _d = _b.snapThreshold,\r\n snapThreshold = _d === void 0 ? 5 : _d;\r\n var direction = datas.direction;\r\n var sizeDirection = direction;\r\n var distWidth = 0;\r\n var distHeight = 0;\r\n\r\n if (!direction[0] && !direction[1]) {\r\n sizeDirection = [1, 1];\r\n }\r\n\r\n var keepRatio = ratio && (moveable.props.keepRatio || parentKeepRatio);\r\n var fixedPosition = dragClient;\r\n\r\n if (!dragClient) {\r\n if (!parentFlag && isPinch) {\r\n fixedPosition = getAbsolutePosition(moveable, [0, 0]);\r\n } else {\r\n fixedPosition = datas.fixedPosition;\r\n }\r\n }\r\n\r\n if (parentDist) {\r\n distWidth = parentDist[0];\r\n distHeight = parentDist[1];\r\n\r\n if (keepRatio) {\r\n if (!distWidth) {\r\n distWidth = distHeight * ratio;\r\n } else if (!distHeight) {\r\n distHeight = distWidth / ratio;\r\n }\r\n }\r\n } else if (parentScale) {\r\n distWidth = (parentScale[0] - 1) * startOffsetWidth;\r\n distHeight = (parentScale[1] - 1) * startOffsetHeight;\r\n } else if (isPinch) {\r\n if (parentDistance) {\r\n distWidth = parentDistance;\r\n distHeight = parentDistance * startOffsetHeight / startOffsetWidth;\r\n }\r\n } else {\r\n var dist = getDragDist({\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n });\r\n distWidth = sizeDirection[0] * dist[0];\r\n distHeight = sizeDirection[1] * dist[1];\r\n\r\n if (keepRatio && startOffsetWidth && startOffsetHeight) {\r\n var rad = getRad$1([0, 0], dist);\r\n var standardRad = getRad$1([0, 0], sizeDirection);\r\n var size = getDistSize([distWidth, distHeight]);\r\n var signSize = Math.cos(rad - standardRad) * size;\r\n\r\n if (!sizeDirection[0]) {\r\n // top, bottom\r\n distHeight = signSize;\r\n distWidth = distHeight / ratio;\r\n } else if (!sizeDirection[1]) {\r\n // left, right\r\n distWidth = signSize;\r\n distHeight = distWidth * ratio;\r\n } else {\r\n // two-way\r\n var startWidthSize = sizeDirection[0] * 2 * startOffsetWidth;\r\n var startHeightSize = sizeDirection[1] * 2 * startOffsetHeight;\r\n var distSize = getDistSize([startWidthSize + dist[0], startHeightSize + dist[1]]) - getDistSize([startWidthSize, startHeightSize]);\r\n var ratioRad = getRad$1([0, 0], [ratio, 1]);\r\n distWidth = Math.cos(ratioRad) * distSize;\r\n distHeight = Math.sin(ratioRad) * distSize;\r\n }\r\n } else if (!keepRatio) {\r\n var nextDirection = __spreadArrays$1(direction);\r\n\r\n if (!startOffsetWidth) {\r\n if (dist[0] < 0) {\r\n nextDirection[0] = -1;\r\n } else if (dist[0] > 0) {\r\n nextDirection[0] = 1;\r\n }\r\n }\r\n\r\n if (!startOffsetHeight) {\r\n if (dist[1] < 0) {\r\n nextDirection[1] = -1;\r\n } else if (dist[1] > 0) {\r\n nextDirection[1] = 1;\r\n }\r\n }\r\n\r\n direction = nextDirection;\r\n sizeDirection = nextDirection;\r\n distWidth = sizeDirection[0] * dist[0];\r\n distHeight = sizeDirection[1] * dist[1];\r\n }\r\n }\r\n\r\n var nextWidth = sizeDirection[0] || keepRatio ? Math.max(startOffsetWidth + distWidth, TINY_NUM) : startOffsetWidth;\r\n var nextHeight = sizeDirection[1] || keepRatio ? Math.max(startOffsetHeight + distHeight, TINY_NUM) : startOffsetHeight;\r\n\r\n if (keepRatio && startOffsetWidth && startOffsetHeight) {\r\n // startOffsetWidth : startOffsetHeight = nextWidth : nextHeight\r\n if (isWidth) {\r\n nextHeight = nextWidth / ratio;\r\n } else {\r\n nextWidth = nextHeight * ratio;\r\n }\r\n }\r\n\r\n var snapDist = [0, 0];\r\n\r\n if (!isPinch) {\r\n snapDist = checkSnapSize(moveable, nextWidth, nextHeight, direction, fixedPosition, isRequest, datas);\r\n }\r\n\r\n if (parentDist) {\r\n !parentDist[0] && (snapDist[0] = 0);\r\n !parentDist[1] && (snapDist[1] = 0);\r\n }\r\n\r\n if (keepRatio) {\r\n if (sizeDirection[0] && sizeDirection[1] && snapDist[0] && snapDist[1]) {\r\n if (Math.abs(snapDist[0]) > Math.abs(snapDist[1])) {\r\n snapDist[1] = 0;\r\n } else {\r\n snapDist[0] = 0;\r\n }\r\n }\r\n\r\n var isNoSnap = !snapDist[0] && !snapDist[1];\r\n\r\n if (isNoSnap) {\r\n if (isWidth) {\r\n nextWidth = throttle(nextWidth, throttleResize);\r\n } else {\r\n nextHeight = throttle(nextHeight, throttleResize);\r\n }\r\n }\r\n\r\n if (sizeDirection[0] && !sizeDirection[1] || snapDist[0] && !snapDist[1] || isNoSnap && isWidth) {\r\n nextWidth += snapDist[0];\r\n nextHeight = nextWidth / ratio;\r\n } else if (!sizeDirection[0] && sizeDirection[1] || !snapDist[0] && snapDist[1] || isNoSnap && !isWidth) {\r\n nextHeight += snapDist[1];\r\n nextWidth = nextHeight * ratio;\r\n }\r\n } else {\r\n if (startOffsetWidth + distWidth < -snapThreshold) {\r\n snapDist[0] = 0;\r\n }\r\n\r\n if (startOffsetWidth + distHeight < -snapThreshold) {\r\n snapDist[1] = 0;\r\n }\r\n\r\n nextWidth += snapDist[0];\r\n nextHeight += snapDist[1];\r\n\r\n if (!snapDist[0]) {\r\n nextWidth = throttle(nextWidth, throttleResize);\r\n }\r\n\r\n if (!snapDist[1]) {\r\n nextHeight = throttle(nextHeight, throttleResize);\r\n }\r\n }\r\n\r\n _a = calculateBoundSize([nextWidth, nextHeight], minSize, maxSize, keepRatio), nextWidth = _a[0], nextHeight = _a[1];\r\n nextWidth = Math.round(nextWidth);\r\n nextHeight = Math.round(nextHeight);\r\n distWidth = nextWidth - startOffsetWidth;\r\n distHeight = nextHeight - startOffsetHeight;\r\n var delta = [distWidth - prevWidth, distHeight - prevHeight];\r\n datas.prevWidth = distWidth;\r\n datas.prevHeight = distHeight;\r\n var inverseDelta = getResizeDist(moveable, nextWidth, nextHeight, fixedDirection, fixedPosition, transformOrigin);\r\n\r\n if (!parentMoveable && delta.every(function (num) {\r\n return !num;\r\n }) && inverseDelta.every(function (num) {\r\n return !num;\r\n })) {\r\n return;\r\n }\r\n\r\n var params = fillParams(moveable, e, {\r\n width: startWidth + distWidth,\r\n height: startHeight + distHeight,\r\n offsetWidth: nextWidth,\r\n offsetHeight: nextHeight,\r\n direction: direction,\r\n dist: [distWidth, distHeight],\r\n delta: delta,\r\n isPinch: !!isPinch,\r\n drag: Draggable.drag(moveable, setCustomDrag(e, moveable.state, inverseDelta, !!isPinch, false))\r\n });\r\n triggerEvent(moveable, \"onResize\", params);\r\n return params;\r\n },\r\n dragControlAfter: function (moveable, e) {\r\n var datas = e.datas;\r\n var isResize = datas.isResize,\r\n startOffsetWidth = datas.startOffsetWidth,\r\n startOffsetHeight = datas.startOffsetHeight,\r\n prevWidth = datas.prevWidth,\r\n prevHeight = datas.prevHeight;\r\n\r\n if (!isResize) {\r\n return;\r\n }\r\n\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height;\r\n var errorWidth = width - (startOffsetWidth + prevWidth);\r\n var errorHeight = height - (startOffsetHeight + prevHeight);\r\n var isErrorWidth = Math.abs(errorWidth) > 3;\r\n var isErrorHeight = Math.abs(errorHeight) > 3;\r\n\r\n if (isErrorWidth) {\r\n datas.startWidth += errorWidth;\r\n datas.startOffsetWidth += errorWidth;\r\n datas.prevWidth += errorWidth;\r\n }\r\n\r\n if (isErrorHeight) {\r\n datas.startHeight += errorHeight;\r\n datas.startOffsetHeight += errorHeight;\r\n datas.prevHeight += errorHeight;\r\n }\r\n\r\n if (isErrorWidth || isErrorHeight) {\r\n this.dragControl(moveable, e);\r\n return true;\r\n }\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n var datas = e.datas,\r\n isDrag = e.isDrag;\r\n\r\n if (!datas.isResize) {\r\n return false;\r\n }\r\n\r\n datas.isResize = false;\r\n var params = fillEndParams(moveable, e, {});\r\n triggerEvent(moveable, \"onResizeEnd\", params);\r\n return isDrag;\r\n },\r\n dragGroupControlCondition: directionCondition,\r\n dragGroupControlStart: function (moveable, e) {\r\n var datas = e.datas;\r\n var params = this.dragControlStart(moveable, e);\r\n\r\n if (!params) {\r\n return false;\r\n }\r\n\r\n var originalEvents = fillChildEvents(moveable, \"resizable\", e);\r\n\r\n function setDist(child, ev) {\r\n var fixedDirection = datas.fixedDirection;\r\n var fixedPosition = datas.fixedPosition;\r\n var pos = getAbsolutePosition(child, fixedDirection);\r\n\r\n var _a = calculate(createRotateMatrix(-moveable.rotation / 180 * Math.PI, 3), [pos[0] - fixedPosition[0], pos[1] - fixedPosition[1], 1], 3),\r\n originalX = _a[0],\r\n originalY = _a[1];\r\n\r\n ev.datas.originalX = originalX;\r\n ev.datas.originalY = originalY;\r\n return ev;\r\n }\r\n\r\n var events = triggerChildAble(moveable, this, \"dragControlStart\", e, function (child, ev) {\r\n return setDist(child, ev);\r\n });\r\n\r\n var nextParams = __assign$2(__assign$2({}, params), {\r\n targets: moveable.props.targets,\r\n events: events,\r\n setFixedDirection: function (fixedDirection) {\r\n params.setFixedDirection(fixedDirection);\r\n events.forEach(function (ev, i) {\r\n ev.setFixedDirection(fixedDirection);\r\n setDist(moveable.moveables[i], originalEvents[i]);\r\n });\r\n }\r\n });\r\n\r\n var result = triggerEvent(moveable, \"onResizeGroupStart\", nextParams);\r\n datas.isResize = result !== false;\r\n return datas.isResize ? params : false;\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n var datas = e.datas;\r\n\r\n if (!datas.isResize) {\r\n return;\r\n }\r\n\r\n var params = this.dragControl(moveable, e);\r\n\r\n if (!params) {\r\n return;\r\n }\r\n\r\n var offsetWidth = params.offsetWidth,\r\n offsetHeight = params.offsetHeight,\r\n dist = params.dist;\r\n var keepRatio = moveable.props.keepRatio;\r\n var parentScale = [offsetWidth / (offsetWidth - dist[0]), offsetHeight / (offsetHeight - dist[1])];\r\n var fixedPosition = datas.fixedPosition;\r\n var events = triggerChildAble(moveable, this, \"dragControl\", e, function (_, ev) {\r\n var _a = calculate(createRotateMatrix(moveable.rotation / 180 * Math.PI, 3), [ev.datas.originalX * parentScale[0], ev.datas.originalY * parentScale[1], 1], 3),\r\n clientX = _a[0],\r\n clientY = _a[1];\r\n\r\n return __assign$2(__assign$2({}, ev), {\r\n parentDist: null,\r\n parentScale: parentScale,\r\n dragClient: plus(fixedPosition, [clientX, clientY]),\r\n parentKeepRatio: keepRatio\r\n });\r\n });\r\n\r\n var nextParams = __assign$2({\r\n targets: moveable.props.targets,\r\n events: events\r\n }, params);\r\n\r\n triggerEvent(moveable, \"onResizeGroup\", nextParams);\r\n return nextParams;\r\n },\r\n dragGroupControlEnd: function (moveable, e) {\r\n var isDrag = e.isDrag,\r\n datas = e.datas;\r\n\r\n if (!datas.isResize) {\r\n return;\r\n }\r\n\r\n this.dragControlEnd(moveable, e);\r\n triggerChildAble(moveable, this, \"dragControlEnd\", e);\r\n var nextParams = fillEndParams(moveable, e, {\r\n targets: moveable.props.targets\r\n });\r\n triggerEvent(moveable, \"onResizeGroupEnd\", nextParams);\r\n return isDrag;\r\n },\r\n\r\n /**\r\n * @method Moveable.Resizable#request\r\n * @param {object} [e] - the Resizable's request parameter\r\n * @param {number} [e.direction=[1, 1]] - Direction to resize\r\n * @param {number} [e.deltaWidth] - delta number of width\r\n * @param {number} [e.deltaHeight] - delta number of height\r\n * @param {number} [e.offsetWidth] - offset number of width\r\n * @param {number} [e.offsetHeight] - offset number of height\r\n * @param {number} [e.isInstant] - Whether to execute the request instantly\r\n * @return {Moveable.Requester} Moveable Requester\r\n * @example\r\n * // Instantly Request (requestStart - request - requestEnd)\r\n * // Use Relative Value\r\n * moveable.request(\"resizable\", { deltaWidth: 10, deltaHeight: 10 }, true);\r\n *\r\n * // Use Absolute Value\r\n * moveable.request(\"resizable\", { offsetWidth: 100, offsetHeight: 100 }, true);\r\n *\r\n * // requestStart\r\n * const requester = moveable.request(\"resizable\");\r\n *\r\n * // request\r\n * // Use Relative Value\r\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\r\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\r\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\r\n *\r\n * // Use Absolute Value\r\n * moveable.request(\"resizable\", { offsetWidth: 100, offsetHeight: 100 });\r\n * moveable.request(\"resizable\", { offsetWidth: 110, offsetHeight: 100 });\r\n * moveable.request(\"resizable\", { offsetWidth: 120, offsetHeight: 100 });\r\n *\r\n * // requestEnd\r\n * requester.requestEnd();\r\n */\r\n request: function (moveable) {\r\n var datas = {};\r\n var distWidth = 0;\r\n var distHeight = 0;\r\n var rect = moveable.getRect();\r\n return {\r\n isControl: true,\r\n requestStart: function (e) {\r\n return {\r\n datas: datas,\r\n parentDirection: e.direction || [1, 1]\r\n };\r\n },\r\n request: function (e) {\r\n if (\"offsetWidth\" in e) {\r\n distWidth = e.offsetWidth - rect.offsetWidth;\r\n } else if (\"deltaWidth\" in e) {\r\n distWidth += e.deltaWidth;\r\n }\r\n\r\n if (\"offsetHeight\" in e) {\r\n distHeight = e.offsetHeight - rect.offsetHeight;\r\n } else if (\"deltaHeight\" in e) {\r\n distHeight += e.deltaHeight;\r\n }\r\n\r\n return {\r\n datas: datas,\r\n parentDist: [distWidth, distHeight]\r\n };\r\n },\r\n requestEnd: function () {\r\n return {\r\n datas: datas,\r\n isDrag: true\r\n };\r\n }\r\n };\r\n }\r\n };\r\n /**\r\n * Whether or not target can be resized. (default: false)\r\n * @name Moveable.Resizable#resizable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * resizable: false,\r\n * });\r\n *\r\n * moveable.resizable = true;\r\n */\r\n\r\n /**\r\n * throttle of width, height when resize.\r\n * @name Moveable.Resizable#throttleResize\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * resizable: true,\r\n * throttleResize: 0,\r\n * });\r\n *\r\n * moveable.throttleResize = 1;\r\n */\r\n\r\n /**\r\n * When resize or scale, keeps a ratio of the width, height. (default: false)\r\n * @name Moveable.Resizable#keepRatio\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * resizable: true,\r\n * });\r\n *\r\n * moveable.keepRatio = true;\r\n */\r\n\r\n /**\r\n * Set directions to show the control box. (default: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"])\r\n * @name Moveable.Resizable#renderDirections\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * resizable: true,\r\n * renderDirections: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"],\r\n * });\r\n *\r\n * moveable.renderDirections = [\"nw\", \"ne\", \"sw\", \"se\"];\r\n */\r\n\r\n /**\r\n * When the resize starts, the resizeStart event is called.\r\n * @memberof Moveable.Resizable\r\n * @event resizeStart\r\n * @param {Moveable.Resizable.OnResizeStart} - Parameters for the resizeStart event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { resizable: true });\r\n * moveable.on(\"resizeStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When resizing, the resize event is called.\r\n * @memberof Moveable.Resizable\r\n * @event resize\r\n * @param {Moveable.Resizable.OnResize} - Parameters for the resize event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { resizable: true });\r\n * moveable.on(\"resize\", ({ target, width, height }) => {\r\n * target.style.width = `${e.width}px`;\r\n * target.style.height = `${e.height}px`;\r\n * });\r\n */\r\n\r\n /**\r\n * When the resize finishes, the resizeEnd event is called.\r\n * @memberof Moveable.Resizable\r\n * @event resizeEnd\r\n * @param {Moveable.Resizable.OnResizeEnd} - Parameters for the resizeEnd event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { resizable: true });\r\n * moveable.on(\"resizeEnd\", ({ target, isDrag }) => {\r\n * console.log(target, isDrag);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group resize starts, the `resizeGroupStart` event is called.\r\n * @memberof Moveable.Resizable\r\n * @event resizeGroupStart\r\n * @param {Moveable.Resizable.OnResizeGroupStart} - Parameters for the `resizeGroupStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * resizable: true\r\n * });\r\n * moveable.on(\"resizeGroupStart\", ({ targets }) => {\r\n * console.log(\"onResizeGroupStart\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group resize, the `resizeGroup` event is called.\r\n * @memberof Moveable.Resizable\r\n * @event resizeGroup\r\n * @param {Moveable.Resizable.onResizeGroup} - Parameters for the `resizeGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * resizable: true\r\n * });\r\n * moveable.on(\"resizeGroup\", ({ targets, events }) => {\r\n * console.log(\"onResizeGroup\", targets);\r\n * events.forEach(ev => {\r\n * const offset = [\r\n * direction[0] < 0 ? -ev.delta[0] : 0,\r\n * direction[1] < 0 ? -ev.delta[1] : 0,\r\n * ];\r\n * // ev.drag is a drag event that occurs when the group resize.\r\n * const left = offset[0] + ev.drag.beforeDist[0];\r\n * const top = offset[1] + ev.drag.beforeDist[1];\r\n * const width = ev.width;\r\n * const top = ev.top;\r\n * });\r\n * });\r\n */\r\n\r\n /**\r\n * When the group resize finishes, the `resizeGroupEnd` event is called.\r\n * @memberof Moveable.Resizable\r\n * @event resizeGroupEnd\r\n * @param {Moveable.Resizable.OnResizeGroupEnd} - Parameters for the `resizeGroupEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * resizable: true\r\n * });\r\n * moveable.on(\"resizeGroupEnd\", ({ targets, isDrag }) => {\r\n * console.log(\"onResizeGroupEnd\", targets, isDrag);\r\n * });\r\n */\r\n\r\n /**\r\n * @namespace Scalable\r\n * @memberof Moveable\r\n * @description Scalable indicates whether the target's x and y can be scale of transform.\r\n */\r\n\r\n var Scalable = {\r\n name: \"scalable\",\r\n ableGroup: \"size\",\r\n canPinch: true,\r\n props: {\r\n scalable: Boolean,\r\n throttleScale: Number,\r\n renderDirections: String,\r\n keepRatio: Boolean\r\n },\r\n events: {\r\n onScaleStart: \"scaleStart\",\r\n onScale: \"scale\",\r\n onScaleEnd: \"scaleEnd\",\r\n onScaleGroupStart: \"scaleGroupStart\",\r\n onScaleGroup: \"scaleGroup\",\r\n onScaleGroupEnd: \"scaleGroupEnd\"\r\n },\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n resizable = _a.resizable,\r\n scalable = _a.scalable,\r\n edge = _a.edge;\r\n\r\n if (!resizable && scalable) {\r\n if (edge) {\r\n return renderDiagonalDirections(moveable, React);\r\n }\r\n\r\n return renderAllDirections(moveable, React);\r\n }\r\n },\r\n dragControlCondition: directionCondition,\r\n dragControlStart: function (moveable, e) {\r\n var datas = e.datas,\r\n isPinch = e.isPinch,\r\n inputEvent = e.inputEvent,\r\n parentDirection = e.parentDirection;\r\n var direction = parentDirection || (isPinch ? [0, 0] : getDirection(inputEvent.target));\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height,\r\n targetTransform = _a.targetTransform,\r\n target = _a.target,\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n pos4 = _a.pos4;\r\n\r\n if (!direction || !target) {\r\n return false;\r\n }\r\n\r\n if (!isPinch) {\r\n setDragStart(moveable, e);\r\n }\r\n\r\n setDefaultTransformIndex(e);\r\n datas.datas = {};\r\n datas.transform = targetTransform;\r\n datas.prevDist = [1, 1];\r\n datas.direction = direction;\r\n datas.width = width;\r\n datas.height = height;\r\n datas.startValue = [1, 1];\r\n var isWidth = !direction[0] && !direction[1] || direction[0] || !direction[1];\r\n datas.isWidth = isWidth;\r\n\r\n function setRatio(ratio) {\r\n datas.ratio = ratio && isFinite(ratio) ? ratio : 0;\r\n }\r\n\r\n function setFixedDirection(fixedDirection) {\r\n datas.fixedDirection = fixedDirection;\r\n datas.fixedPosition = getAbsolutePosition(moveable, fixedDirection);\r\n }\r\n\r\n setRatio(getDist$2(pos1, pos2) / getDist$2(pos2, pos4));\r\n setFixedDirection([-direction[0], -direction[1]]);\r\n var params = fillParams(moveable, e, __assign$2(__assign$2({\r\n direction: direction,\r\n set: function (scale) {\r\n datas.startValue = scale;\r\n },\r\n setRatio: setRatio,\r\n setFixedDirection: setFixedDirection\r\n }, fillTransformStartEvent(e)), {\r\n dragStart: Draggable.dragStart(moveable, new CustomGesto().dragStart([0, 0], e))\r\n }));\r\n var result = triggerEvent(moveable, \"onScaleStart\", params);\r\n\r\n if (result !== false) {\r\n datas.isScale = true;\r\n moveable.state.snapRenderInfo = {\r\n request: e.isRequest,\r\n direction: direction\r\n };\r\n }\r\n\r\n return datas.isScale ? params : false;\r\n },\r\n dragControl: function (moveable, e) {\r\n resolveTransformEvent(e, \"scale\");\r\n var datas = e.datas,\r\n distX = e.distX,\r\n distY = e.distY,\r\n parentScale = e.parentScale,\r\n parentDistance = e.parentDistance,\r\n parentKeepRatio = e.parentKeepRatio,\r\n parentFlag = e.parentFlag,\r\n isPinch = e.isPinch,\r\n dragClient = e.dragClient,\r\n parentDist = e.parentDist,\r\n isRequest = e.isRequest;\r\n var prevDist = datas.prevDist,\r\n direction = datas.direction,\r\n width = datas.width,\r\n height = datas.height,\r\n isScale = datas.isScale,\r\n startValue = datas.startValue,\r\n isWidth = datas.isWidth,\r\n ratio = datas.ratio,\r\n fixedDirection = datas.fixedDirection;\r\n\r\n if (!isScale) {\r\n return false;\r\n }\r\n\r\n var _a = moveable.props,\r\n throttleScale = _a.throttleScale,\r\n parentMoveable = _a.parentMoveable;\r\n var sizeDirection = direction;\r\n\r\n if (!direction[0] && !direction[1]) {\r\n sizeDirection = [1, 1];\r\n }\r\n\r\n var keepRatio = ratio && (moveable.props.keepRatio || parentKeepRatio);\r\n var state = moveable.state; // const startWidth = width * startValue[0];\r\n // const startHeight = height * startValue[1];\r\n\r\n var scaleX = 1;\r\n var scaleY = 1;\r\n var fixedPosition = dragClient;\r\n\r\n if (!dragClient) {\r\n if (!parentFlag && isPinch) {\r\n fixedPosition = getAbsolutePosition(moveable, [0, 0]);\r\n } else {\r\n fixedPosition = datas.fixedPosition;\r\n }\r\n }\r\n\r\n if (parentDist) {\r\n scaleX = (width + parentDist[0]) / width;\r\n scaleY = (height + parentDist[1]) / height;\r\n } else if (parentScale) {\r\n scaleX = parentScale[0];\r\n scaleY = parentScale[1];\r\n } else if (isPinch) {\r\n if (parentDistance) {\r\n scaleX = (width + parentDistance) / width;\r\n scaleY = (height + parentDistance * height / width) / height;\r\n }\r\n } else {\r\n var dragDist = getDragDist({\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n });\r\n var distWidth = sizeDirection[0] * dragDist[0];\r\n var distHeight = sizeDirection[1] * dragDist[1];\r\n\r\n if (keepRatio && width && height) {\r\n var rad = getRad$1([0, 0], dragDist);\r\n var standardRad = getRad$1([0, 0], sizeDirection);\r\n var size = getDistSize([distWidth, distHeight]);\r\n var signSize = Math.cos(rad - standardRad) * size;\r\n\r\n if (!sizeDirection[0]) {\r\n // top, bottom\r\n distHeight = signSize;\r\n distWidth = distHeight / ratio;\r\n } else if (!sizeDirection[1]) {\r\n // left, right\r\n distWidth = signSize;\r\n distHeight = distWidth * ratio;\r\n } else {\r\n // two-way\r\n distHeight = distWidth * ratio;\r\n }\r\n }\r\n\r\n scaleX = (width + distWidth) / width;\r\n scaleY = (height + distHeight) / height;\r\n }\r\n\r\n scaleX = sizeDirection[0] || keepRatio ? scaleX * startValue[0] : startValue[0];\r\n scaleY = sizeDirection[1] || keepRatio ? scaleY * startValue[1] : startValue[1];\r\n\r\n if (scaleX === 0) {\r\n scaleX = (prevDist[0] > 0 ? 1 : -1) * MIN_SCALE;\r\n }\r\n\r\n if (scaleY === 0) {\r\n scaleY = (prevDist[1] > 0 ? 1 : -1) * MIN_SCALE;\r\n }\r\n\r\n var dist = [scaleX / startValue[0], scaleY / startValue[1]];\r\n var scale = [scaleX, scaleY];\r\n\r\n if (!isPinch && moveable.props.groupable) {\r\n var snapRenderInfo = state.snapRenderInfo || {};\r\n var stateDirection = snapRenderInfo.direction;\r\n\r\n if (isArray(stateDirection) && (stateDirection[0] || stateDirection[1])) {\r\n state.snapRenderInfo = {\r\n direction: direction,\r\n request: e.isRequest\r\n };\r\n }\r\n }\r\n\r\n var snapDist = [0, 0];\r\n\r\n if (!isPinch) {\r\n snapDist = checkSnapScale(moveable, dist, direction, isRequest, datas);\r\n }\r\n\r\n if (keepRatio) {\r\n if (sizeDirection[0] && sizeDirection[1] && snapDist[0] && snapDist[1]) {\r\n if (Math.abs(snapDist[0]) > Math.abs(snapDist[1])) {\r\n snapDist[1] = 0;\r\n } else {\r\n snapDist[0] = 0;\r\n }\r\n }\r\n\r\n var isNoSnap = !snapDist[0] && !snapDist[1];\r\n\r\n if (isNoSnap) {\r\n if (isWidth) {\r\n dist[0] = throttle(dist[0] * startValue[0], throttleScale) / startValue[0];\r\n } else {\r\n dist[1] = throttle(dist[1] * startValue[1], throttleScale) / startValue[1];\r\n }\r\n }\r\n\r\n if (sizeDirection[0] && !sizeDirection[1] || snapDist[0] && !snapDist[1] || isNoSnap && isWidth) {\r\n dist[0] += snapDist[0];\r\n var snapHeight = width * dist[0] * startValue[0] / ratio;\r\n dist[1] = snapHeight / height / startValue[1];\r\n } else if (!sizeDirection[0] && sizeDirection[1] || !snapDist[0] && snapDist[1] || isNoSnap && !isWidth) {\r\n dist[1] += snapDist[1];\r\n var snapWidth = height * dist[1] * startValue[1] * ratio;\r\n dist[0] = snapWidth / width / startValue[0];\r\n }\r\n } else {\r\n dist[0] += snapDist[0];\r\n dist[1] += snapDist[1];\r\n\r\n if (!snapDist[0]) {\r\n dist[0] = throttle(dist[0] * startValue[0], throttleScale) / startValue[0];\r\n }\r\n\r\n if (!snapDist[1]) {\r\n dist[1] = throttle(dist[1] * startValue[1], throttleScale) / startValue[1];\r\n }\r\n }\r\n\r\n if (dist[0] === 0) {\r\n dist[0] = (prevDist[0] > 0 ? 1 : -1) * MIN_SCALE;\r\n }\r\n\r\n if (dist[1] === 0) {\r\n dist[1] = (prevDist[1] > 0 ? 1 : -1) * MIN_SCALE;\r\n }\r\n\r\n var delta = [dist[0] / prevDist[0], dist[1] / prevDist[1]];\r\n scale = multiply2(dist, startValue);\r\n var inverseDist = getScaleDist(moveable, dist, fixedDirection, fixedPosition, datas);\r\n var inverseDelta = minus(inverseDist, datas.prevInverseDist || [0, 0]);\r\n datas.prevDist = dist;\r\n datas.prevInverseDist = inverseDist;\r\n\r\n if (scaleX === prevDist[0] && scaleY === prevDist[1] && inverseDelta.every(function (num) {\r\n return !num;\r\n }) && !parentMoveable) {\r\n return false;\r\n }\r\n\r\n var nextTransform = convertTransformFormat(datas, \"scale(\" + scale.join(\", \") + \")\", \"scale(\" + dist.join(\", \") + \")\");\r\n var params = fillParams(moveable, e, __assign$2({\r\n offsetWidth: width,\r\n offsetHeight: height,\r\n direction: direction,\r\n // beforeScale,\r\n // beforeDist,\r\n // beforeDelta,\r\n scale: scale,\r\n dist: dist,\r\n delta: delta,\r\n isPinch: !!isPinch\r\n }, fillTransformEvent(moveable, nextTransform, inverseDelta, isPinch, e)));\r\n triggerEvent(moveable, \"onScale\", params);\r\n return params;\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n var datas = e.datas,\r\n isDrag = e.isDrag;\r\n\r\n if (!datas.isScale) {\r\n return false;\r\n }\r\n\r\n datas.isScale = false;\r\n triggerEvent(moveable, \"onScaleEnd\", fillEndParams(moveable, e, {}));\r\n return isDrag;\r\n },\r\n dragGroupControlCondition: directionCondition,\r\n dragGroupControlStart: function (moveable, e) {\r\n var datas = e.datas;\r\n var params = this.dragControlStart(moveable, e);\r\n\r\n if (!params) {\r\n return false;\r\n }\r\n\r\n var originalEvents = fillChildEvents(moveable, \"resizable\", e);\r\n\r\n function setDist(child, ev) {\r\n var fixedDirection = datas.fixedDirection;\r\n var fixedPosition = datas.fixedPosition;\r\n var pos = getAbsolutePosition(child, fixedDirection);\r\n\r\n var _a = calculate(createRotateMatrix(-moveable.rotation / 180 * Math.PI, 3), [pos[0] - fixedPosition[0], pos[1] - fixedPosition[1], 1], 3),\r\n originalX = _a[0],\r\n originalY = _a[1];\r\n\r\n ev.datas.originalX = originalX;\r\n ev.datas.originalY = originalY;\r\n return ev;\r\n }\r\n\r\n datas.moveableScale = moveable.scale;\r\n var events = triggerChildAble(moveable, this, \"dragControlStart\", e, function (child, ev) {\r\n return setDist(child, ev);\r\n });\r\n\r\n var nextParams = __assign$2(__assign$2({}, params), {\r\n targets: moveable.props.targets,\r\n events: events,\r\n setFixedDirection: function (fixedDirection) {\r\n params.setFixedDirection(fixedDirection);\r\n events.forEach(function (ev, i) {\r\n ev.setFixedDirection(fixedDirection);\r\n setDist(moveable.moveables[i], originalEvents[i]);\r\n });\r\n }\r\n });\r\n\r\n var result = triggerEvent(moveable, \"onScaleGroupStart\", nextParams);\r\n datas.isScale = result !== false;\r\n return datas.isScale ? nextParams : false;\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n var datas = e.datas;\r\n\r\n if (!datas.isScale) {\r\n return;\r\n }\r\n\r\n var params = this.dragControl(moveable, e);\r\n\r\n if (!params) {\r\n return;\r\n }\r\n\r\n var moveableScale = datas.moveableScale;\r\n moveable.scale = [params.scale[0] * moveableScale[0], params.scale[1] * moveableScale[1]];\r\n var keepRatio = moveable.props.keepRatio;\r\n var dist = params.dist,\r\n scale = params.scale;\r\n var fixedPosition = datas.fixedPosition;\r\n var events = triggerChildAble(moveable, this, \"dragControl\", e, function (_, ev) {\r\n var _a = calculate(createRotateMatrix(moveable.rotation / 180 * Math.PI, 3), [ev.datas.originalX * dist[0], ev.datas.originalY * dist[1], 1], 3),\r\n clientX = _a[0],\r\n clientY = _a[1];\r\n\r\n return __assign$2(__assign$2({}, ev), {\r\n parentDist: null,\r\n parentScale: scale,\r\n parentKeepRatio: keepRatio,\r\n dragClient: plus(fixedPosition, [clientX, clientY])\r\n });\r\n });\r\n\r\n var nextParams = __assign$2({\r\n targets: moveable.props.targets,\r\n events: events\r\n }, params);\r\n\r\n triggerEvent(moveable, \"onScaleGroup\", nextParams);\r\n return nextParams;\r\n },\r\n dragGroupControlEnd: function (moveable, e) {\r\n var isDrag = e.isDrag,\r\n datas = e.datas;\r\n\r\n if (!datas.isScale) {\r\n return;\r\n }\r\n\r\n this.dragControlEnd(moveable, e);\r\n triggerChildAble(moveable, this, \"dragControlEnd\", e);\r\n var nextParams = fillEndParams(moveable, e, {\r\n targets: moveable.props.targets\r\n });\r\n triggerEvent(moveable, \"onScaleGroupEnd\", nextParams);\r\n return isDrag;\r\n },\r\n\r\n /**\r\n * @method Moveable.Scalable#request\r\n * @param {object} [e] - the Resizable's request parameter\r\n * @param {number} [e.direction=[1, 1]] - Direction to scale\r\n * @param {number} [e.deltaWidth] - delta number of width\r\n * @param {number} [e.deltaHeight] - delta number of height\r\n * @return {Moveable.Requester} Moveable Requester\r\n * @example\r\n * // Instantly Request (requestStart - request - requestEnd)\r\n * moveable.request(\"scalable\", { deltaWidth: 10, deltaHeight: 10 }, true);\r\n *\r\n * // requestStart\r\n * const requester = moveable.request(\"scalable\");\r\n *\r\n * // request\r\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\r\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\r\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\r\n *\r\n * // requestEnd\r\n * requester.requestEnd();\r\n */\r\n request: function () {\r\n var datas = {};\r\n var distWidth = 0;\r\n var distHeight = 0;\r\n return {\r\n isControl: true,\r\n requestStart: function (e) {\r\n return {\r\n datas: datas,\r\n parentDirection: e.direction || [1, 1]\r\n };\r\n },\r\n request: function (e) {\r\n distWidth += e.deltaWidth;\r\n distHeight += e.deltaHeight;\r\n return {\r\n datas: datas,\r\n parentDist: [distWidth, distHeight]\r\n };\r\n },\r\n requestEnd: function () {\r\n return {\r\n datas: datas,\r\n isDrag: true\r\n };\r\n }\r\n };\r\n }\r\n };\r\n /**\r\n * Whether or not target can scaled. (default: false)\r\n * @name Moveable.Scalable#scalable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.scalable = true;\r\n */\r\n\r\n /**\r\n * throttle of scaleX, scaleY when scale.\r\n * @name Moveable.Scalable#throttleScale\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.throttleScale = 0.1;\r\n */\r\n\r\n /**\r\n * Set directions to show the control box. (default: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"])\r\n * @name Moveable.Scalable#renderDirections\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * scalable: true,\r\n * renderDirections: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"],\r\n * });\r\n *\r\n * moveable.renderDirections = [\"nw\", \"ne\", \"sw\", \"se\"];\r\n */\r\n\r\n /**\r\n * When resize or scale, keeps a ratio of the width, height. (default: false)\r\n * @name Moveable.Scalable#keepRatio\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * scalable: true,\r\n * });\r\n *\r\n * moveable.keepRatio = true;\r\n */\r\n\r\n /**\r\n * When the scale starts, the scaleStart event is called.\r\n * @memberof Moveable.Scalable\r\n * @event scaleStart\r\n * @param {Moveable.Scalable.OnScaleStart} - Parameters for the scaleStart event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { scalable: true });\r\n * moveable.on(\"scaleStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When scaling, the scale event is called.\r\n * @memberof Moveable.Scalable\r\n * @event scale\r\n * @param {Moveable.Scalable.OnScale} - Parameters for the scale event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { scalable: true });\r\n * moveable.on(\"scale\", ({ target, transform, dist }) => {\r\n * target.style.transform = transform;\r\n * });\r\n */\r\n\r\n /**\r\n * When the scale finishes, the scaleEnd event is called.\r\n * @memberof Moveable.Scalable\r\n * @event scaleEnd\r\n * @param {Moveable.Scalable.OnScaleEnd} - Parameters for the scaleEnd event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { scalable: true });\r\n * moveable.on(\"scaleEnd\", ({ target, isDrag }) => {\r\n * console.log(target, isDrag);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group scale starts, the `scaleGroupStart` event is called.\r\n * @memberof Moveable.Scalable\r\n * @event scaleGroupStart\r\n * @param {Moveable.Scalable.OnScaleGroupStart} - Parameters for the `scaleGroupStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * scalable: true\r\n * });\r\n * moveable.on(\"scaleGroupStart\", ({ targets }) => {\r\n * console.log(\"onScaleGroupStart\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * When the group scale, the `scaleGroup` event is called.\r\n * @memberof Moveable.Scalable\r\n * @event scaleGroup\r\n * @param {Moveable.Scalable.OnScaleGroup} - Parameters for the `scaleGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * scalable: true\r\n * });\r\n * moveable.on(\"scaleGroup\", ({ targets, events }) => {\r\n * console.log(\"onScaleGroup\", targets);\r\n * events.forEach(ev => {\r\n * const target = ev.target;\r\n * // ev.drag is a drag event that occurs when the group scale.\r\n * const left = ev.drag.beforeDist[0];\r\n * const top = ev.drag.beforeDist[1];\r\n * const scaleX = ev.scale[0];\r\n * const scaleY = ev.scale[1];\r\n * });\r\n * });\r\n */\r\n\r\n /**\r\n * When the group scale finishes, the `scaleGroupEnd` event is called.\r\n * @memberof Moveable.Scalable\r\n * @event scaleGroupEnd\r\n * @param {Moveable.Scalable.OnScaleGroupEnd} - Parameters for the `scaleGroupEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * scalable: true\r\n * });\r\n * moveable.on(\"scaleGroupEnd\", ({ targets, isDrag }) => {\r\n * console.log(\"onScaleGroupEnd\", targets, isDrag);\r\n * });\r\n */\r\n\r\n function getMiddleLinePos(pos1, pos2) {\r\n return pos1.map(function (pos, i) {\r\n return dot(pos, pos2[i], 1, 2);\r\n });\r\n }\r\n\r\n function getTriangleRad(pos1, pos2, pos3) {\r\n // pos1 Rad\r\n var rad1 = getRad$1(pos1, pos2);\r\n var rad2 = getRad$1(pos1, pos3);\r\n var rad = rad2 - rad1;\r\n return rad >= 0 ? rad : rad + 2 * Math.PI;\r\n }\r\n\r\n function isValidPos(poses1, poses2) {\r\n var rad1 = getTriangleRad(poses1[0], poses1[1], poses1[2]);\r\n var rad2 = getTriangleRad(poses2[0], poses2[1], poses2[2]);\r\n var pi = Math.PI;\r\n\r\n if (rad1 >= pi && rad2 <= pi || rad1 <= pi && rad2 >= pi) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n /**\r\n * @namespace Moveable.Warpable\r\n * @description Warpable indicates whether the target can be warped(distorted, bented).\r\n */\r\n\r\n\r\n var Warpable = {\r\n name: \"warpable\",\r\n ableGroup: \"size\",\r\n props: {\r\n warpable: Boolean,\r\n renderDirections: Array\r\n },\r\n events: {\r\n onWarpStart: \"warpStart\",\r\n onWarp: \"warp\",\r\n onWarpEnd: \"warpEnd\"\r\n },\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n resizable = _a.resizable,\r\n scalable = _a.scalable,\r\n warpable = _a.warpable,\r\n zoom = _a.zoom;\r\n\r\n if (resizable || scalable || !warpable) {\r\n return [];\r\n }\r\n\r\n var _b = moveable.state,\r\n pos1 = _b.pos1,\r\n pos2 = _b.pos2,\r\n pos3 = _b.pos3,\r\n pos4 = _b.pos4;\r\n var linePosFrom1 = getMiddleLinePos(pos1, pos2);\r\n var linePosFrom2 = getMiddleLinePos(pos2, pos1);\r\n var linePosFrom3 = getMiddleLinePos(pos1, pos3);\r\n var linePosFrom4 = getMiddleLinePos(pos3, pos1);\r\n var linePosTo1 = getMiddleLinePos(pos3, pos4);\r\n var linePosTo2 = getMiddleLinePos(pos4, pos3);\r\n var linePosTo3 = getMiddleLinePos(pos2, pos4);\r\n var linePosTo4 = getMiddleLinePos(pos4, pos2);\r\n return __spreadArrays$1([React.createElement(\"div\", {\r\n className: prefix(\"line\"),\r\n key: \"middeLine1\",\r\n style: getLineStyle(linePosFrom1, linePosTo1, zoom)\r\n }), React.createElement(\"div\", {\r\n className: prefix(\"line\"),\r\n key: \"middeLine2\",\r\n style: getLineStyle(linePosFrom2, linePosTo2, zoom)\r\n }), React.createElement(\"div\", {\r\n className: prefix(\"line\"),\r\n key: \"middeLine3\",\r\n style: getLineStyle(linePosFrom3, linePosTo3, zoom)\r\n }), React.createElement(\"div\", {\r\n className: prefix(\"line\"),\r\n key: \"middeLine4\",\r\n style: getLineStyle(linePosFrom4, linePosTo4, zoom)\r\n })], renderAllDirections(moveable, React));\r\n },\r\n dragControlCondition: function (e) {\r\n if (e.isRequest) {\r\n return false;\r\n }\r\n\r\n return hasClass(e.inputEvent.target, prefix(\"direction\"));\r\n },\r\n dragControlStart: function (moveable, e) {\r\n var datas = e.datas,\r\n inputEvent = e.inputEvent;\r\n var target = moveable.props.target;\r\n var inputTarget = inputEvent.target;\r\n var direction = getDirection(inputTarget);\r\n\r\n if (!direction || !target) {\r\n return false;\r\n }\r\n\r\n var state = moveable.state;\r\n var transformOrigin = state.transformOrigin,\r\n is3d = state.is3d,\r\n targetTransform = state.targetTransform,\r\n targetMatrix = state.targetMatrix,\r\n width = state.width,\r\n height = state.height,\r\n left = state.left,\r\n top = state.top;\r\n datas.datas = {};\r\n datas.targetTransform = targetTransform;\r\n datas.warpTargetMatrix = is3d ? targetMatrix : convertDimension(targetMatrix, 3, 4);\r\n datas.targetInverseMatrix = ignoreDimension(invert(datas.warpTargetMatrix, 4), 3, 4);\r\n datas.direction = direction;\r\n datas.left = left;\r\n datas.top = top;\r\n setDragStart(moveable, e);\r\n setDefaultTransformIndex(e);\r\n datas.poses = [[0, 0], [width, 0], [0, height], [width, height]].map(function (p) {\r\n return minus(p, transformOrigin);\r\n });\r\n datas.nextPoses = datas.poses.map(function (_a) {\r\n var x = _a[0],\r\n y = _a[1];\r\n return calculate(datas.warpTargetMatrix, [x, y, 0, 1], 4);\r\n });\r\n datas.startValue = createIdentityMatrix(4);\r\n datas.prevMatrix = createIdentityMatrix(4);\r\n datas.absolutePoses = getAbsolutePosesByState(state);\r\n datas.posIndexes = getPosIndexesByDirection(direction);\r\n state.snapRenderInfo = {\r\n request: e.isRequest,\r\n direction: direction\r\n };\r\n var params = fillParams(moveable, e, __assign$2({\r\n set: function (matrix) {\r\n datas.startValue = matrix;\r\n }\r\n }, fillTransformStartEvent(e)));\r\n var result = triggerEvent(moveable, \"onWarpStart\", params);\r\n\r\n if (result !== false) {\r\n datas.isWarp = true;\r\n }\r\n\r\n return datas.isWarp;\r\n },\r\n dragControl: function (moveable, e) {\r\n var datas = e.datas,\r\n isRequest = e.isRequest;\r\n var distX = e.distX,\r\n distY = e.distY;\r\n var targetInverseMatrix = datas.targetInverseMatrix,\r\n prevMatrix = datas.prevMatrix,\r\n isWarp = datas.isWarp,\r\n startValue = datas.startValue,\r\n poses = datas.poses,\r\n posIndexes = datas.posIndexes,\r\n absolutePoses = datas.absolutePoses;\r\n\r\n if (!isWarp) {\r\n return false;\r\n }\r\n\r\n resolveTransformEvent(e, \"matrix3d\");\r\n\r\n if (hasGuidelines(moveable, \"warpable\")) {\r\n var selectedPoses = posIndexes.map(function (index) {\r\n return absolutePoses[index];\r\n });\r\n\r\n if (selectedPoses.length > 1) {\r\n selectedPoses.push([(selectedPoses[0][0] + selectedPoses[1][0]) / 2, (selectedPoses[0][1] + selectedPoses[1][1]) / 2]);\r\n }\r\n\r\n var _a = checkMoveableSnapBounds(moveable, isRequest, selectedPoses.map(function (pos) {\r\n return [pos[0] + distX, pos[1] + distY];\r\n })),\r\n horizontalSnapInfo = _a.horizontal,\r\n verticalSnapInfo = _a.vertical;\r\n\r\n distY -= horizontalSnapInfo.offset;\r\n distX -= verticalSnapInfo.offset;\r\n }\r\n\r\n var dist = getDragDist({\r\n datas: datas,\r\n distX: distX,\r\n distY: distY\r\n }, true);\r\n var nextPoses = datas.nextPoses.slice();\r\n posIndexes.forEach(function (index) {\r\n nextPoses[index] = plus(nextPoses[index], dist);\r\n });\r\n\r\n if (!NEARBY_POS.every(function (nearByPoses) {\r\n return isValidPos(nearByPoses.map(function (i) {\r\n return poses[i];\r\n }), nearByPoses.map(function (i) {\r\n return nextPoses[i];\r\n }));\r\n })) {\r\n return false;\r\n }\r\n\r\n var h = createWarpMatrix(poses[0], poses[2], poses[1], poses[3], nextPoses[0], nextPoses[2], nextPoses[1], nextPoses[3]);\r\n\r\n if (!h.length) {\r\n return false;\r\n } // B * A * M\r\n\r\n\r\n var afterMatrix = multiply(targetInverseMatrix, h, 4); // B * M * A\r\n\r\n var matrix = getTransfromMatrix(datas, afterMatrix, true);\r\n var delta = multiply(invert(prevMatrix, 4), matrix, 4);\r\n datas.prevMatrix = matrix;\r\n var totalMatrix = multiply(startValue, matrix, 4);\r\n var nextTransform = convertTransformFormat(datas, \"matrix3d(\" + totalMatrix.join(\", \") + \")\", \"matrix3d(\" + matrix.join(\", \") + \")\");\r\n fillOriginalTransform(e, nextTransform);\r\n triggerEvent(moveable, \"onWarp\", fillParams(moveable, e, {\r\n delta: delta,\r\n matrix: totalMatrix,\r\n dist: matrix,\r\n multiply: multiply,\r\n transform: nextTransform\r\n }));\r\n return true;\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n var datas = e.datas,\r\n isDrag = e.isDrag;\r\n\r\n if (!datas.isWarp) {\r\n return false;\r\n }\r\n\r\n datas.isWarp = false;\r\n triggerEvent(moveable, \"onWarpEnd\", fillEndParams(moveable, e, {}));\r\n return isDrag;\r\n }\r\n };\r\n /**\r\n * Whether or not target can be warped. (default: false)\r\n * @name Moveable.Warpable#warpable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.warpable = true;\r\n */\r\n\r\n /**\r\n * Set directions to show the control box. (default: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"])\r\n * @name Moveable.Warpable#renderDirections\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * warpable: true,\r\n * renderDirections: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"],\r\n * });\r\n *\r\n * moveable.renderDirections = [\"nw\", \"ne\", \"sw\", \"se\"];\r\n */\r\n\r\n /**\r\n * When the warp starts, the warpStart event is called.\r\n * @memberof Moveable.Warpable\r\n * @event warpStart\r\n * @param {Moveable.Warpable.OnWarpStart} - Parameters for the warpStart event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { warpable: true });\r\n * moveable.on(\"warpStart\", ({ target }) => {\r\n * console.log(target);\r\n * });\r\n */\r\n\r\n /**\r\n * When warping, the warp event is called.\r\n * @memberof Moveable.Warpable\r\n * @event warp\r\n * @param {Moveable.Warpable.OnWarp} - Parameters for the warp event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n * let matrix = [\r\n * 1, 0, 0, 0,\r\n * 0, 1, 0, 0,\r\n * 0, 0, 1, 0,\r\n * 0, 0, 0, 1,\r\n * ];\r\n * const moveable = new Moveable(document.body, { warpable: true });\r\n * moveable.on(\"warp\", ({ target, transform, delta, multiply }) => {\r\n * // target.style.transform = transform;\r\n * matrix = multiply(matrix, delta);\r\n * target.style.transform = `matrix3d(${matrix.join(\",\")})`;\r\n * });\r\n */\r\n\r\n /**\r\n * When the warp finishes, the warpEnd event is called.\r\n * @memberof Moveable.Warpable\r\n * @event warpEnd\r\n * @param {Moveable.Warpable.OnWarpEnd} - Parameters for the warpEnd event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, { warpable: true });\r\n * moveable.on(\"warpEnd\", ({ target, isDrag }) => {\r\n * console.log(target, isDrag);\r\n * });\r\n */\r\n\r\n var AREA_PIECES = /*#__PURE__*/prefix(\"area-pieces\");\r\n var AREA_PIECE = /*#__PURE__*/prefix(\"area-piece\");\r\n var AVOID = /*#__PURE__*/prefix(\"avoid\");\r\n\r\n function restoreStyle(moveable) {\r\n var el = moveable.areaElement;\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height;\r\n removeClass(el, AVOID);\r\n el.style.cssText += \"left: 0px; top: 0px; width: \" + width + \"px; height: \" + height + \"px\";\r\n }\r\n\r\n function renderPieces(React) {\r\n return React.createElement(\"div\", {\r\n key: \"area_pieces\",\r\n className: AREA_PIECES\r\n }, React.createElement(\"div\", {\r\n className: AREA_PIECE\r\n }), React.createElement(\"div\", {\r\n className: AREA_PIECE\r\n }), React.createElement(\"div\", {\r\n className: AREA_PIECE\r\n }), React.createElement(\"div\", {\r\n className: AREA_PIECE\r\n }));\r\n }\r\n\r\n var DragArea = {\r\n name: \"dragArea\",\r\n props: {\r\n dragArea: Boolean,\r\n passDragArea: Boolean\r\n },\r\n events: {\r\n onClick: \"click\",\r\n onClickGroup: \"clickGroup\"\r\n },\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n target = _a.target,\r\n dragArea = _a.dragArea,\r\n groupable = _a.groupable,\r\n passDragArea = _a.passDragArea;\r\n var _b = moveable.state,\r\n width = _b.width,\r\n height = _b.height,\r\n renderPoses = _b.renderPoses;\r\n var className = passDragArea ? prefix(\"area\", \"pass\") : prefix(\"area\");\r\n\r\n if (groupable) {\r\n return [React.createElement(\"div\", {\r\n key: \"area\",\r\n ref: ref(moveable, \"areaElement\"),\r\n className: className\r\n }), renderPieces(React)];\r\n }\r\n\r\n if (!target || !dragArea) {\r\n return [];\r\n }\r\n\r\n var h = createWarpMatrix([0, 0], [width, 0], [0, height], [width, height], renderPoses[0], renderPoses[1], renderPoses[2], renderPoses[3]);\r\n var transform = h.length ? makeMatrixCSS(h, true) : \"none\";\r\n return [React.createElement(\"div\", {\r\n key: \"area\",\r\n ref: ref(moveable, \"areaElement\"),\r\n className: className,\r\n style: {\r\n top: \"0px\",\r\n left: \"0px\",\r\n width: width + \"px\",\r\n height: height + \"px\",\r\n transformOrigin: \"0 0\",\r\n transform: transform\r\n }\r\n }), renderPieces(React)];\r\n },\r\n dragStart: function (moveable, _a) {\r\n var datas = _a.datas,\r\n clientX = _a.clientX,\r\n clientY = _a.clientY,\r\n inputEvent = _a.inputEvent;\r\n\r\n if (!inputEvent) {\r\n return false;\r\n }\r\n\r\n datas.isDragArea = false;\r\n var areaElement = moveable.areaElement;\r\n var _b = moveable.state,\r\n moveableClientRect = _b.moveableClientRect,\r\n renderPoses = _b.renderPoses,\r\n rootMatrix = _b.rootMatrix,\r\n is3d = _b.is3d;\r\n var left = moveableClientRect.left,\r\n top = moveableClientRect.top;\r\n\r\n var _c = getRect(renderPoses),\r\n relativeLeft = _c.left,\r\n relativeTop = _c.top,\r\n width = _c.width,\r\n height = _c.height;\r\n\r\n var n = is3d ? 4 : 3;\r\n\r\n var _d = calculateInversePosition(rootMatrix, [clientX - left, clientY - top], n),\r\n posX = _d[0],\r\n posY = _d[1];\r\n\r\n posX -= relativeLeft;\r\n posY -= relativeTop;\r\n var rects = [{\r\n left: relativeLeft,\r\n top: relativeTop,\r\n width: width,\r\n height: posY - 10\r\n }, {\r\n left: relativeLeft,\r\n top: relativeTop,\r\n width: posX - 10,\r\n height: height\r\n }, {\r\n left: relativeLeft,\r\n top: relativeTop + posY + 10,\r\n width: width,\r\n height: height - posY - 10\r\n }, {\r\n left: relativeLeft + posX + 10,\r\n top: relativeTop,\r\n width: width - posX - 10,\r\n height: height\r\n }];\r\n var children = [].slice.call(areaElement.nextElementSibling.children);\r\n rects.forEach(function (rect, i) {\r\n children[i].style.cssText = \"left: \" + rect.left + \"px;top: \" + rect.top + \"px; width: \" + rect.width + \"px; height: \" + rect.height + \"px;\";\r\n });\r\n addClass(areaElement, AVOID);\r\n return;\r\n },\r\n drag: function (moveable, _a) {\r\n var datas = _a.datas,\r\n inputEvent = _a.inputEvent;\r\n\r\n if (!inputEvent) {\r\n return false;\r\n }\r\n\r\n if (!datas.isDragArea) {\r\n datas.isDragArea = true;\r\n restoreStyle(moveable);\r\n }\r\n },\r\n dragEnd: function (moveable, e) {\r\n var inputEvent = e.inputEvent,\r\n datas = e.datas;\r\n\r\n if (!inputEvent) {\r\n return false;\r\n }\r\n\r\n if (!datas.isDragArea) {\r\n restoreStyle(moveable);\r\n }\r\n },\r\n dragGroupStart: function (moveable, e) {\r\n return this.dragStart(moveable, e);\r\n },\r\n dragGroup: function (moveable, e) {\r\n return this.drag(moveable, e);\r\n },\r\n dragGroupEnd: function (moveable, e) {\r\n return this.dragEnd(moveable, e);\r\n },\r\n unset: function (moveable) {\r\n restoreStyle(moveable);\r\n }\r\n };\r\n /**\r\n * Add an event to the moveable area instead of the target for stopPropagation. (default: false, true in group)\r\n * @name Moveable#dragArea\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * dragArea: false,\r\n * });\r\n */\r\n\r\n /**\r\n * Set `pointerEvents: none;` css to pass events in dragArea. (default: false)\r\n * @name Moveable#passDragArea\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * dragArea: false,\r\n * });\r\n */\r\n\r\n var Origin = {\r\n name: \"origin\",\r\n props: {\r\n origin: Boolean\r\n },\r\n events: {},\r\n render: function (moveable, React) {\r\n var zoom = moveable.props.zoom;\r\n var _a = moveable.state,\r\n beforeOrigin = _a.beforeOrigin,\r\n rotation = _a.rotation;\r\n return [React.createElement(\"div\", {\r\n className: prefix(\"control\", \"origin\"),\r\n style: getControlTransform(rotation, zoom, beforeOrigin),\r\n key: \"beforeOrigin\"\r\n })];\r\n }\r\n };\r\n /**\r\n * Whether or not the origin controlbox will be visible or not (default: true)\r\n * @name Moveable#origin\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.origin = true;\r\n */\r\n\r\n function getDefaultScrollPosition(e) {\r\n var scrollContainer = e.scrollContainer;\r\n return [scrollContainer.scrollLeft, scrollContainer.scrollTop];\r\n }\r\n /**\r\n * @namespace Moveable.Scrollable\r\n * @description Whether or not target can be scrolled to the scroll container (default: false)\r\n */\r\n\r\n\r\n var Scrollable = {\r\n name: \"scrollable\",\r\n canPinch: true,\r\n props: {\r\n scrollable: Boolean,\r\n scrollContainer: Object,\r\n scrollThreshold: Number,\r\n getScrollPosition: Function\r\n },\r\n events: {\r\n onScroll: \"scroll\",\r\n onScrollGroup: \"scrollGroup\"\r\n },\r\n dragStart: function (moveable, e) {\r\n var props = moveable.props;\r\n var _a = props.scrollContainer,\r\n scrollContainer = _a === void 0 ? moveable.getContainer() : _a;\r\n var dragScroll = new DragScroll();\r\n var scrollContainerElement = getRefTarget(scrollContainer, true);\r\n e.datas.dragScroll = dragScroll;\r\n var gestoName = e.isControl ? \"controlGesto\" : \"targetGesto\";\r\n var targets = e.targets;\r\n dragScroll.on(\"scroll\", function (_a) {\r\n var container = _a.container,\r\n direction = _a.direction;\r\n var params = fillParams(moveable, e, {\r\n scrollContainer: container,\r\n direction: direction\r\n });\r\n var eventName = targets ? \"onScrollGroup\" : \"onScroll\";\r\n\r\n if (targets) {\r\n params.targets = targets;\r\n }\r\n\r\n triggerEvent(moveable, eventName, params);\r\n }).on(\"move\", function (_a) {\r\n var offsetX = _a.offsetX,\r\n offsetY = _a.offsetY;\r\n moveable[gestoName].scrollBy(offsetX, offsetY, e.inputEvent, false);\r\n });\r\n dragScroll.dragStart(e, {\r\n container: scrollContainerElement\r\n });\r\n },\r\n checkScroll: function (moveable, e) {\r\n var dragScroll = e.datas.dragScroll;\r\n\r\n if (!dragScroll) {\r\n return;\r\n }\r\n\r\n var _a = moveable.props,\r\n _b = _a.scrollContainer,\r\n scrollContainer = _b === void 0 ? moveable.getContainer() : _b,\r\n _c = _a.scrollThreshold,\r\n scrollThreshold = _c === void 0 ? 0 : _c,\r\n _d = _a.getScrollPosition,\r\n getScrollPosition = _d === void 0 ? getDefaultScrollPosition : _d;\r\n dragScroll.drag(e, {\r\n container: scrollContainer,\r\n threshold: scrollThreshold,\r\n getScrollPosition: function (ev) {\r\n return getScrollPosition({\r\n scrollContainer: ev.container,\r\n direction: ev.direction\r\n });\r\n }\r\n });\r\n return true;\r\n },\r\n drag: function (moveable, e) {\r\n return this.checkScroll(moveable, e);\r\n },\r\n dragEnd: function (moveable, e) {\r\n e.datas.dragScroll.dragEnd();\r\n e.datas.dragScroll = null;\r\n },\r\n dragControlStart: function (moveable, e) {\r\n return this.dragStart(moveable, __assign$2(__assign$2({}, e), {\r\n isControl: true\r\n }));\r\n },\r\n dragControl: function (moveable, e) {\r\n return this.drag(moveable, e);\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n return this.dragEnd(moveable, e);\r\n },\r\n dragGroupStart: function (moveable, e) {\r\n return this.dragStart(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragGroup: function (moveable, e) {\r\n return this.drag(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragGroupEnd: function (moveable, e) {\r\n return this.dragEnd(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragGroupControlStart: function (moveable, e) {\r\n return this.dragStart(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets,\r\n isControl: true\r\n }));\r\n },\r\n dragGroupContro: function (moveable, e) {\r\n return this.drag(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragGroupControEnd: function (moveable, e) {\r\n return this.dragEnd(moveable, __assign$2(__assign$2({}, e), {\r\n targets: moveable.props.targets\r\n }));\r\n }\r\n };\r\n /**\r\n * Whether or not target can be scrolled to the scroll container (default: false)\r\n * @name Moveable.Scrollable#scrollable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * scrollable: true,\r\n * scrollContainer: document.body,\r\n * scrollThreshold: 0,\r\n * getScrollPosition: ({ scrollContainer }) => ([scrollContainer.scrollLeft, scrollContainer.scrollTop]),\r\n * });\r\n *\r\n * moveable.scrollable = true;\r\n */\r\n\r\n /**\r\n * The container to which scroll is applied (default: container)\r\n * @name Moveable.Scrollable#scrollContainer\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * scrollable: true,\r\n * scrollContainer: document.body,\r\n * scrollThreshold: 0,\r\n * getScrollPosition: ({ scrollContainer }) => ([scrollContainer.scrollLeft, scrollContainer.scrollTop]),\r\n * });\r\n */\r\n\r\n /**\r\n * Expand the range of the scroll check area. (default: 0)\r\n * @name Moveable.Scrollable#scrollThreshold\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * scrollable: true,\r\n * scrollContainer: document.body,\r\n * scrollThreshold: 0,\r\n * getScrollPosition: ({ scrollContainer }) => ([scrollContainer.scrollLeft, scrollContainer.scrollTop]),\r\n * });\r\n */\r\n\r\n /**\r\n * Sets a function to get the scroll position. (default: Function)\r\n * @name Moveable.Scrollable#getScrollPosition\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * scrollable: true,\r\n * scrollContainer: document.body,\r\n * scrollThreshold: 0,\r\n * getScrollPosition: ({ scrollContainer }) => ([scrollContainer.scrollLeft, scrollContainer.scrollTop]),\r\n * });\r\n *\r\n */\r\n\r\n /**\r\n * When the drag cursor leaves the scrollContainer, the `scroll` event occur to scroll.\r\n * @memberof Moveable.Scrollable\r\n * @event scroll\r\n * @param {Moveable.Scrollable.OnScroll} - Parameters for the `scroll` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: document.querySelector(\".target\"),\r\n * });\r\n * moveable.on(\"scroll\", ({ scrollContainer, direction }) => {\r\n * scrollContainer.scrollLeft += direction[0] * 10;\r\n * scrollContainer.scrollTop += direction[1] * 10;\r\n * });\r\n */\r\n\r\n /**\r\n * When the drag cursor leaves the scrollContainer, the `scrollGroup` event occur to scroll in group.\r\n * @memberof Moveable.Scrollable\r\n * @event scrollGroup\r\n * @param {Moveable.Scrollable.OnScrollGroup} - Parameters for the `scrollGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * });\r\n * moveable.on(\"scroll\", ({ scrollContainer, direction }) => {\r\n * scrollContainer.scrollLeft += direction[0] * 10;\r\n * scrollContainer.scrollTop += direction[1] * 10;\r\n * });\r\n */\r\n\r\n var Default = {\r\n name: \"\",\r\n props: {\r\n target: Object,\r\n dragTarget: Object,\r\n container: Object,\r\n portalContainer: Object,\r\n rootContainer: Object,\r\n zoom: Number,\r\n transformOrigin: Array,\r\n edge: Boolean,\r\n ables: Array,\r\n className: String,\r\n pinchThreshold: Number,\r\n pinchOutside: Boolean,\r\n triggerAblesSimultaneously: Boolean,\r\n checkInput: Boolean,\r\n cspNonce: String,\r\n translateZ: Number,\r\n props: Object\r\n },\r\n events: {}\r\n };\r\n\r\n var Padding = {\r\n name: \"padding\",\r\n props: {\r\n padding: Object\r\n },\r\n events: {},\r\n render: function (moveable, React) {\r\n var props = moveable.props;\r\n\r\n if (props.dragArea) {\r\n return [];\r\n }\r\n\r\n var padding = props.padding || {};\r\n var _a = padding.left,\r\n left = _a === void 0 ? 0 : _a,\r\n _b = padding.top,\r\n top = _b === void 0 ? 0 : _b,\r\n _c = padding.right,\r\n right = _c === void 0 ? 0 : _c,\r\n _d = padding.bottom,\r\n bottom = _d === void 0 ? 0 : _d;\r\n var _e = moveable.state,\r\n renderPoses = _e.renderPoses,\r\n pos1 = _e.pos1,\r\n pos2 = _e.pos2,\r\n pos3 = _e.pos3,\r\n pos4 = _e.pos4;\r\n var poses = [pos1, pos2, pos3, pos4];\r\n var paddingDirections = [];\r\n\r\n if (left > 0) {\r\n paddingDirections.push([0, 2]);\r\n }\r\n\r\n if (top > 0) {\r\n paddingDirections.push([0, 1]);\r\n }\r\n\r\n if (right > 0) {\r\n paddingDirections.push([1, 3]);\r\n }\r\n\r\n if (bottom > 0) {\r\n paddingDirections.push([2, 3]);\r\n }\r\n\r\n return paddingDirections.map(function (_a, i) {\r\n var dir1 = _a[0],\r\n dir2 = _a[1];\r\n var paddingPos1 = poses[dir1];\r\n var paddingPos2 = poses[dir2];\r\n var paddingPos3 = renderPoses[dir1];\r\n var paddingPos4 = renderPoses[dir2];\r\n var h = createWarpMatrix([0, 0], [100, 0], [0, 100], [100, 100], paddingPos1, paddingPos2, paddingPos3, paddingPos4);\r\n\r\n if (!h.length) {\r\n return undefined;\r\n }\r\n\r\n return React.createElement(\"div\", {\r\n key: \"padding\" + i,\r\n className: prefix(\"padding\"),\r\n style: {\r\n transform: makeMatrixCSS(h, true)\r\n }\r\n });\r\n });\r\n }\r\n };\r\n /**\r\n * Add padding around the target to increase the drag area. (default: null)\r\n * @name Moveable#padding\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: document.querySelector(\".target\"),\r\n * padding: { left: 0, top: 0, right: 0, bottom: 0 },\r\n * });\r\n * moveable.padding = { left: 10, top: 10, right: 10, bottom: 10 },\r\n * moveable.updateRect();\r\n */\r\n\r\n var RADIUS_DIRECTIONS = [\"nw\", \"ne\", \"se\", \"sw\"];\r\n\r\n function calculateRatio(values, size) {\r\n var sumSize = values[0] + values[1];\r\n var sumRatio = sumSize > size ? size / sumSize : 1;\r\n values[0] *= sumRatio;\r\n values[1] = size - values[1] * sumRatio;\r\n return values;\r\n }\r\n\r\n var HORIZONTAL_RADIUS_ORDER = [1, 2, 5, 6];\r\n var VERTICAL_RADIUS_ORDER = [0, 3, 4, 7];\r\n var HORIZONTAL_RADIUS_DIRECTIONS = [1, -1, -1, 1];\r\n var VERTICAL_RADIUS_DIRECTIONS = [1, 1, -1, -1];\r\n function getRadiusStyles(poses, controlPoses, isRelative, width, height, left, top, right, bottom) {\r\n if (left === void 0) {\r\n left = 0;\r\n }\r\n\r\n if (top === void 0) {\r\n top = 0;\r\n }\r\n\r\n if (right === void 0) {\r\n right = width;\r\n }\r\n\r\n if (bottom === void 0) {\r\n bottom = height;\r\n }\r\n\r\n var clipStyles = [];\r\n var isVertical = false;\r\n var raws = poses.map(function (pos, i) {\r\n var _a = controlPoses[i],\r\n horizontal = _a.horizontal,\r\n vertical = _a.vertical;\r\n\r\n if (vertical && !isVertical) {\r\n isVertical = true;\r\n clipStyles.push(\"/\");\r\n }\r\n\r\n if (isVertical) {\r\n var rawPos = Math.max(0, vertical === 1 ? pos[1] - top : bottom - pos[1]);\r\n clipStyles.push(convertCSSSize(rawPos, height, isRelative));\r\n return rawPos;\r\n } else {\r\n var rawPos = Math.max(0, horizontal === 1 ? pos[0] - left : right - pos[0]);\r\n clipStyles.push(convertCSSSize(rawPos, width, isRelative));\r\n return rawPos;\r\n }\r\n });\r\n return {\r\n styles: clipStyles,\r\n raws: raws\r\n };\r\n }\r\n function getRadiusRange(controlPoses) {\r\n // [start, length]\r\n var horizontalRange = [0, 0];\r\n var verticalRange = [0, 0];\r\n var length = controlPoses.length;\r\n\r\n for (var i = 0; i < length; ++i) {\r\n var clipPose = controlPoses[i];\r\n\r\n if (!clipPose.sub) {\r\n continue;\r\n }\r\n\r\n if (clipPose.horizontal) {\r\n if (horizontalRange[1] === 0) {\r\n horizontalRange[0] = i;\r\n }\r\n\r\n horizontalRange[1] = i - horizontalRange[0] + 1;\r\n verticalRange[0] = i + 1;\r\n }\r\n\r\n if (clipPose.vertical) {\r\n if (verticalRange[1] === 0) {\r\n verticalRange[0] = i;\r\n }\r\n\r\n verticalRange[1] = i - verticalRange[0] + 1;\r\n }\r\n }\r\n\r\n return {\r\n horizontalRange: horizontalRange,\r\n verticalRange: verticalRange\r\n };\r\n }\r\n function getRadiusValues(values, width, height, left, top, minCounts) {\r\n var _a, _b, _c, _d;\r\n\r\n if (minCounts === void 0) {\r\n minCounts = [0, 0];\r\n }\r\n\r\n var splitIndex = values.indexOf(\"/\");\r\n var splitLength = (splitIndex > -1 ? values.slice(0, splitIndex) : values).length;\r\n var horizontalValues = values.slice(0, splitLength);\r\n var verticalValues = values.slice(splitLength + 1);\r\n var _e = horizontalValues[0],\r\n nwValue = _e === void 0 ? \"0px\" : _e,\r\n _f = horizontalValues[1],\r\n neValue = _f === void 0 ? nwValue : _f,\r\n _g = horizontalValues[2],\r\n seValue = _g === void 0 ? nwValue : _g,\r\n _h = horizontalValues[3],\r\n swValue = _h === void 0 ? neValue : _h;\r\n var _j = verticalValues[0],\r\n wnValue = _j === void 0 ? nwValue : _j,\r\n _k = verticalValues[1],\r\n enValue = _k === void 0 ? wnValue : _k,\r\n _l = verticalValues[2],\r\n esValue = _l === void 0 ? wnValue : _l,\r\n _m = verticalValues[3],\r\n wsValue = _m === void 0 ? enValue : _m;\r\n var horizontalRawPoses = [nwValue, neValue, seValue, swValue].map(function (pos) {\r\n return convertUnitSize(pos, width);\r\n });\r\n var verticalRawPoses = [wnValue, enValue, esValue, wsValue].map(function (pos) {\r\n return convertUnitSize(pos, height);\r\n });\r\n var horizontalPoses = horizontalRawPoses.slice();\r\n var verticalPoses = verticalRawPoses.slice();\r\n _a = calculateRatio([horizontalPoses[0], horizontalPoses[1]], width), horizontalPoses[0] = _a[0], horizontalPoses[1] = _a[1];\r\n _b = calculateRatio([horizontalPoses[3], horizontalPoses[2]], width), horizontalPoses[3] = _b[0], horizontalPoses[2] = _b[1];\r\n _c = calculateRatio([verticalPoses[0], verticalPoses[3]], height), verticalPoses[0] = _c[0], verticalPoses[3] = _c[1];\r\n _d = calculateRatio([verticalPoses[1], verticalPoses[2]], height), verticalPoses[1] = _d[0], verticalPoses[2] = _d[1];\r\n var nextHorizontalPoses = horizontalPoses.slice(0, Math.max(minCounts[0], horizontalValues.length));\r\n var nextVerticalPoses = verticalPoses.slice(0, Math.max(minCounts[1], verticalValues.length));\r\n return __spreadArrays$1(nextHorizontalPoses.map(function (pos, i) {\r\n var direction = RADIUS_DIRECTIONS[i];\r\n return {\r\n horizontal: HORIZONTAL_RADIUS_DIRECTIONS[i],\r\n vertical: 0,\r\n pos: [left + pos, top + (VERTICAL_RADIUS_DIRECTIONS[i] === -1 ? height : 0)],\r\n sub: true,\r\n raw: horizontalRawPoses[i],\r\n direction: direction\r\n };\r\n }), nextVerticalPoses.map(function (pos, i) {\r\n var direction = RADIUS_DIRECTIONS[i];\r\n return {\r\n horizontal: 0,\r\n vertical: VERTICAL_RADIUS_DIRECTIONS[i],\r\n pos: [left + (HORIZONTAL_RADIUS_DIRECTIONS[i] === -1 ? width : 0), top + pos],\r\n sub: true,\r\n raw: verticalRawPoses[i],\r\n direction: direction\r\n };\r\n }));\r\n }\r\n function removeRadiusPos(controlPoses, poses, index, startIndex, length) {\r\n if (length === void 0) {\r\n length = poses.length;\r\n }\r\n\r\n var _a = getRadiusRange(controlPoses.slice(startIndex)),\r\n horizontalRange = _a.horizontalRange,\r\n verticalRange = _a.verticalRange;\r\n\r\n var radiuslIndex = index - startIndex;\r\n var deleteCount = 0;\r\n\r\n if (radiuslIndex === 0) {\r\n deleteCount = length;\r\n } else if (radiuslIndex > 0 && radiuslIndex < horizontalRange[1]) {\r\n deleteCount = horizontalRange[1] - radiuslIndex;\r\n } else if (radiuslIndex >= verticalRange[0]) {\r\n deleteCount = verticalRange[0] + verticalRange[1] - radiuslIndex;\r\n } else {\r\n return;\r\n }\r\n\r\n controlPoses.splice(index, deleteCount);\r\n poses.splice(index, deleteCount);\r\n }\r\n function addRadiusPos(controlPoses, poses, startIndex, horizontalIndex, verticalIndex, distX, distY, right, bottom, left, top) {\r\n if (left === void 0) {\r\n left = 0;\r\n }\r\n\r\n if (top === void 0) {\r\n top = 0;\r\n }\r\n\r\n var _a = getRadiusRange(controlPoses.slice(startIndex)),\r\n horizontalRange = _a.horizontalRange,\r\n verticalRange = _a.verticalRange;\r\n\r\n if (horizontalIndex > -1) {\r\n var radiusX = HORIZONTAL_RADIUS_DIRECTIONS[horizontalIndex] === 1 ? distX - left : right - distX;\r\n\r\n for (var i = horizontalRange[1]; i <= horizontalIndex; ++i) {\r\n var y = VERTICAL_RADIUS_DIRECTIONS[i] === 1 ? top : bottom;\r\n var x = 0;\r\n\r\n if (horizontalIndex === i) {\r\n x = distX;\r\n } else if (i === 0) {\r\n x = left + radiusX;\r\n } else if (HORIZONTAL_RADIUS_DIRECTIONS[i] === -1) {\r\n x = right - (poses[startIndex][0] - left);\r\n }\r\n\r\n controlPoses.splice(startIndex + i, 0, {\r\n horizontal: HORIZONTAL_RADIUS_DIRECTIONS[i],\r\n vertical: 0,\r\n pos: [x, y]\r\n });\r\n poses.splice(startIndex + i, 0, [x, y]);\r\n\r\n if (i === 0) {\r\n break;\r\n }\r\n }\r\n } else if (verticalIndex > -1) {\r\n var radiusY = VERTICAL_RADIUS_DIRECTIONS[verticalIndex] === 1 ? distY - top : bottom - distY;\r\n\r\n if (horizontalRange[1] === 0 && verticalRange[1] === 0) {\r\n var pos = [left + radiusY, top];\r\n controlPoses.push({\r\n horizontal: HORIZONTAL_RADIUS_DIRECTIONS[0],\r\n vertical: 0,\r\n pos: pos\r\n });\r\n poses.push(pos);\r\n }\r\n\r\n var startVerticalIndex = verticalRange[0];\r\n\r\n for (var i = verticalRange[1]; i <= verticalIndex; ++i) {\r\n var x = HORIZONTAL_RADIUS_DIRECTIONS[i] === 1 ? left : right;\r\n var y = 0;\r\n\r\n if (verticalIndex === i) {\r\n y = distY;\r\n } else if (i === 0) {\r\n y = top + radiusY;\r\n } else if (VERTICAL_RADIUS_DIRECTIONS[i] === 1) {\r\n y = poses[startIndex + startVerticalIndex][1];\r\n } else if (VERTICAL_RADIUS_DIRECTIONS[i] === -1) {\r\n y = bottom - (poses[startIndex + startVerticalIndex][1] - top);\r\n }\r\n\r\n controlPoses.push({\r\n horizontal: 0,\r\n vertical: VERTICAL_RADIUS_DIRECTIONS[i],\r\n pos: [x, y]\r\n });\r\n poses.push([x, y]);\r\n\r\n if (i === 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n function splitRadiusPoses(controlPoses, raws) {\r\n if (raws === void 0) {\r\n raws = controlPoses.map(function (pos) {\r\n return pos.raw;\r\n });\r\n }\r\n\r\n var horizontals = controlPoses.map(function (pos, i) {\r\n return pos.horizontal ? raws[i] : null;\r\n }).filter(function (pos) {\r\n return pos != null;\r\n });\r\n var verticals = controlPoses.map(function (pos, i) {\r\n return pos.vertical ? raws[i] : null;\r\n }).filter(function (pos) {\r\n return pos != null;\r\n });\r\n return {\r\n horizontals: horizontals,\r\n verticals: verticals\r\n };\r\n }\r\n\r\n var CLIP_DIRECTIONS = [[0, -1, \"n\"], [1, 0, \"e\"]];\r\n var CLIP_RECT_DIRECTIONS = [[-1, -1, \"nw\"], [0, -1, \"n\"], [1, -1, \"ne\"], [1, 0, \"e\"], [1, 1, \"se\"], [0, 1, \"s\"], [-1, 1, \"sw\"], [-1, 0, \"w\"]]; // 1 2 5 6 0 3 4 7\r\n // 0 1 2 3 4 5 6 7\r\n\r\n function getClipStyles(moveable, clipPath, poses) {\r\n var clipRelative = moveable.props.clipRelative;\r\n var _a = moveable.state,\r\n width = _a.width,\r\n height = _a.height;\r\n var _b = clipPath,\r\n clipType = _b.type,\r\n clipPoses = _b.poses;\r\n var isRect = clipType === \"rect\";\r\n var isCircle = clipType === \"circle\";\r\n\r\n if (clipType === \"polygon\") {\r\n return poses.map(function (pos) {\r\n return convertCSSSize(pos[0], width, clipRelative) + \" \" + convertCSSSize(pos[1], height, clipRelative);\r\n });\r\n } else if (isRect || clipType === \"inset\") {\r\n var top = poses[1][1];\r\n var right = poses[3][0];\r\n var left = poses[7][0];\r\n var bottom = poses[5][1];\r\n\r\n if (isRect) {\r\n return [top, right, bottom, left].map(function (pos) {\r\n return pos + \"px\";\r\n });\r\n }\r\n\r\n var clipStyles = [top, width - right, height - bottom, left].map(function (pos, i) {\r\n return convertCSSSize(pos, i % 2 ? width : height, clipRelative);\r\n });\r\n\r\n if (poses.length > 8) {\r\n var _c = minus(poses[4], poses[0]),\r\n subWidth = _c[0],\r\n subHeight = _c[1];\r\n\r\n clipStyles.push.apply(clipStyles, __spreadArrays$1([\"round\"], getRadiusStyles(poses.slice(8), clipPoses.slice(8), clipRelative, subWidth, subHeight, left, top, right, bottom).styles));\r\n }\r\n\r\n return clipStyles;\r\n } else if (isCircle || clipType === \"ellipse\") {\r\n var center = poses[0];\r\n var ry = convertCSSSize(Math.abs(poses[1][1] - center[1]), isCircle ? Math.sqrt((width * width + height * height) / 2) : height, clipRelative);\r\n var clipStyles = isCircle ? [ry] : [convertCSSSize(Math.abs(poses[2][0] - center[0]), width, clipRelative), ry];\r\n clipStyles.push(\"at\", convertCSSSize(center[0], width, clipRelative), convertCSSSize(center[1], height, clipRelative));\r\n return clipStyles;\r\n }\r\n }\r\n\r\n function getRectPoses(top, right, bottom, left) {\r\n var xs = [left, (left + right) / 2, right];\r\n var ys = [top, (top + bottom) / 2, bottom];\r\n return CLIP_RECT_DIRECTIONS.map(function (_a) {\r\n var dirx = _a[0],\r\n diry = _a[1],\r\n dir = _a[2];\r\n var x = xs[dirx + 1];\r\n var y = ys[diry + 1];\r\n return {\r\n vertical: Math.abs(diry),\r\n horizontal: Math.abs(dirx),\r\n direction: dir,\r\n pos: [x, y]\r\n };\r\n });\r\n }\r\n\r\n function getClipPath(target, width, height, defaultClip, customClip) {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n\r\n var clipText = customClip;\r\n\r\n if (!clipText) {\r\n var style = getComputedStyle(target);\r\n var clipPath = style.clipPath;\r\n clipText = clipPath !== \"none\" ? clipPath : style.clip;\r\n }\r\n\r\n if (!clipText || clipText === \"none\" || clipText === \"auto\") {\r\n clipText = defaultClip;\r\n\r\n if (!clipText) {\r\n return;\r\n }\r\n }\r\n\r\n var _h = splitBracket(clipText),\r\n _j = _h.prefix,\r\n clipPrefix = _j === void 0 ? clipText : _j,\r\n _k = _h.value,\r\n value = _k === void 0 ? \"\" : _k;\r\n\r\n var isCircle = clipPrefix === \"circle\";\r\n var splitter = \" \";\r\n\r\n if (clipPrefix === \"polygon\") {\r\n var values = splitComma(value || \"0% 0%, 100% 0%, 100% 100%, 0% 100%\");\r\n splitter = \",\";\r\n var poses = values.map(function (pos) {\r\n var _a = pos.split(\" \"),\r\n xPos = _a[0],\r\n yPos = _a[1];\r\n\r\n return {\r\n vertical: 1,\r\n horizontal: 1,\r\n pos: [convertUnitSize(xPos, width), convertUnitSize(yPos, height)]\r\n };\r\n });\r\n return {\r\n type: clipPrefix,\r\n clipText: clipText,\r\n poses: poses,\r\n splitter: splitter\r\n };\r\n } else if (isCircle || clipPrefix === \"ellipse\") {\r\n var xPos = \"\";\r\n var yPos = \"\";\r\n var radiusX_1 = 0;\r\n var radiusY_1 = 0;\r\n var values = splitSpace(value);\r\n\r\n if (isCircle) {\r\n var radius = \"\";\r\n _a = values[0], radius = _a === void 0 ? \"50%\" : _a, _b = values[2], xPos = _b === void 0 ? \"50%\" : _b, _c = values[3], yPos = _c === void 0 ? \"50%\" : _c;\r\n radiusX_1 = convertUnitSize(radius, Math.sqrt((width * width + height * height) / 2));\r\n radiusY_1 = radiusX_1;\r\n } else {\r\n var xRadius = \"\";\r\n var yRadius = \"\";\r\n _d = values[0], xRadius = _d === void 0 ? \"50%\" : _d, _e = values[1], yRadius = _e === void 0 ? \"50%\" : _e, _f = values[3], xPos = _f === void 0 ? \"50%\" : _f, _g = values[4], yPos = _g === void 0 ? \"50%\" : _g;\r\n radiusX_1 = convertUnitSize(xRadius, width);\r\n radiusY_1 = convertUnitSize(yRadius, height);\r\n }\r\n\r\n var centerPos_1 = [convertUnitSize(xPos, width), convertUnitSize(yPos, height)];\r\n\r\n var poses = __spreadArrays$1([{\r\n vertical: 1,\r\n horizontal: 1,\r\n pos: centerPos_1,\r\n direction: \"nesw\"\r\n }], CLIP_DIRECTIONS.slice(0, isCircle ? 1 : 2).map(function (dir) {\r\n return {\r\n vertical: Math.abs(dir[1]),\r\n horizontal: dir[0],\r\n direction: dir[2],\r\n sub: true,\r\n pos: [centerPos_1[0] + dir[0] * radiusX_1, centerPos_1[1] + dir[1] * radiusY_1]\r\n };\r\n }));\r\n\r\n return {\r\n type: clipPrefix,\r\n clipText: clipText,\r\n radiusX: radiusX_1,\r\n radiusY: radiusY_1,\r\n left: centerPos_1[0] - radiusX_1,\r\n top: centerPos_1[1] - radiusY_1,\r\n poses: poses,\r\n splitter: splitter\r\n };\r\n } else if (clipPrefix === \"inset\") {\r\n var values = splitSpace(value || \"0 0 0 0\");\r\n var roundIndex = values.indexOf(\"round\");\r\n var rectLength = (roundIndex > -1 ? values.slice(0, roundIndex) : values).length;\r\n var radiusValues = values.slice(rectLength + 1);\r\n\r\n var _l = values.slice(0, rectLength),\r\n topValue = _l[0],\r\n _m = _l[1],\r\n rightValue = _m === void 0 ? topValue : _m,\r\n _o = _l[2],\r\n bottomValue = _o === void 0 ? topValue : _o,\r\n _p = _l[3],\r\n leftValue = _p === void 0 ? rightValue : _p;\r\n\r\n var _q = [topValue, bottomValue].map(function (pos) {\r\n return convertUnitSize(pos, height);\r\n }),\r\n top = _q[0],\r\n bottom = _q[1];\r\n\r\n var _r = [leftValue, rightValue].map(function (pos) {\r\n return convertUnitSize(pos, width);\r\n }),\r\n left = _r[0],\r\n right = _r[1];\r\n\r\n var nextRight = width - right;\r\n var nextBottom = height - bottom;\r\n var radiusPoses = getRadiusValues(radiusValues, nextRight - left, nextBottom - top, left, top);\r\n\r\n var poses = __spreadArrays$1(getRectPoses(top, nextRight, nextBottom, left), radiusPoses);\r\n\r\n return {\r\n type: \"inset\",\r\n clipText: clipText,\r\n poses: poses,\r\n top: top,\r\n left: left,\r\n right: nextRight,\r\n bottom: nextBottom,\r\n radius: radiusValues,\r\n splitter: splitter\r\n };\r\n } else if (clipPrefix === \"rect\") {\r\n // top right bottom left\r\n var values = splitComma(value || \"0px, \" + width + \"px, \" + height + \"px, 0px\");\r\n splitter = \",\";\r\n\r\n var _s = values.map(function (pos) {\r\n var posValue = splitUnit(pos).value;\r\n return posValue;\r\n }),\r\n top = _s[0],\r\n right = _s[1],\r\n bottom = _s[2],\r\n left = _s[3];\r\n\r\n var poses = getRectPoses(top, right, bottom, left);\r\n return {\r\n type: \"rect\",\r\n clipText: clipText,\r\n poses: poses,\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n left: left,\r\n values: values,\r\n splitter: splitter\r\n };\r\n }\r\n\r\n return;\r\n }\r\n\r\n function addClipPath(moveable, e) {\r\n var _a = calculatePointerDist(moveable, e),\r\n distX = _a[0],\r\n distY = _a[1];\r\n\r\n var _b = e.datas,\r\n clipPath = _b.clipPath,\r\n index = _b.index;\r\n var _c = clipPath,\r\n clipType = _c.type,\r\n clipPoses = _c.poses,\r\n splitter = _c.splitter;\r\n var poses = clipPoses.map(function (pos) {\r\n return pos.pos;\r\n });\r\n\r\n if (clipType === \"polygon\") {\r\n poses.splice(index, 0, [distX, distY]);\r\n } else if (clipType === \"inset\") {\r\n var horizontalIndex = HORIZONTAL_RADIUS_ORDER.indexOf(index);\r\n var verticalIndex = VERTICAL_RADIUS_ORDER.indexOf(index);\r\n var length = clipPoses.length;\r\n addRadiusPos(clipPoses, poses, 8, horizontalIndex, verticalIndex, distX, distY, poses[4][0], poses[4][1], poses[0][0], poses[0][1]);\r\n\r\n if (length === clipPoses.length) {\r\n return;\r\n }\r\n } else {\r\n return;\r\n }\r\n\r\n var clipStyles = getClipStyles(moveable, clipPath, poses);\r\n triggerEvent(moveable, \"onClip\", fillParams(moveable, e, {\r\n clipEventType: \"added\",\r\n clipType: clipType,\r\n poses: poses,\r\n clipStyles: clipStyles,\r\n clipStyle: clipType + \"(\" + clipStyles.join(splitter) + \")\",\r\n distX: 0,\r\n distY: 0\r\n }));\r\n }\r\n\r\n function removeClipPath(moveable, e) {\r\n var _a = e.datas,\r\n clipPath = _a.clipPath,\r\n index = _a.index;\r\n var _b = clipPath,\r\n clipType = _b.type,\r\n clipPoses = _b.poses,\r\n splitter = _b.splitter;\r\n var poses = clipPoses.map(function (pos) {\r\n return pos.pos;\r\n });\r\n var length = poses.length;\r\n\r\n if (clipType === \"polygon\") {\r\n clipPoses.splice(index, 1);\r\n poses.splice(index, 1);\r\n } else if (clipType === \"inset\") {\r\n if (index < 8) {\r\n return;\r\n }\r\n\r\n removeRadiusPos(clipPoses, poses, index, 8, length);\r\n\r\n if (length === clipPoses.length) {\r\n return;\r\n }\r\n } else {\r\n return;\r\n }\r\n\r\n var clipStyles = getClipStyles(moveable, clipPath, poses);\r\n triggerEvent(moveable, \"onClip\", fillParams(moveable, e, {\r\n clipEventType: \"removed\",\r\n clipType: clipType,\r\n poses: poses,\r\n clipStyles: clipStyles,\r\n clipStyle: clipType + \"(\" + clipStyles.join(splitter) + \")\",\r\n distX: 0,\r\n distY: 0\r\n }));\r\n }\r\n /**\r\n * @namespace Moveable.Clippable\r\n * @description Whether to clip the target.\r\n */\r\n\r\n\r\n var Clippable = {\r\n name: \"clippable\",\r\n props: {\r\n clippable: Boolean,\r\n defaultClipPath: String,\r\n customClipPath: String,\r\n clipRelative: Boolean,\r\n clipArea: Boolean,\r\n dragWithClip: Boolean,\r\n clipTargetBounds: Boolean,\r\n clipVerticalGuidelines: Array,\r\n clipHorizontalGuidelines: Array,\r\n clipSnapThreshold: Boolean\r\n },\r\n events: {\r\n onClipStart: \"clipStart\",\r\n onClip: \"clip\",\r\n onClipEnd: \"clipEnd\"\r\n },\r\n css: [\".control.clip-control {\\n background: #6d6;\\n cursor: pointer;\\n}\\n.control.clip-control.clip-radius {\\n background: #d66;\\n}\\n.line.clip-line {\\n background: #6e6;\\n cursor: move;\\n z-index: 1;\\n}\\n.clip-area {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n.clip-ellipse {\\n position: absolute;\\n cursor: move;\\n border: 1px solid #6d6;\\n border: var(--zoompx) solid #6d6;\\n border-radius: 50%;\\n transform-origin: 0px 0px;\\n}\", \":host {\\n --bounds-color: #d66;\\n}\", \".guideline {\\n pointer-events: none;\\n z-index: 2;\\n}\", \".line.guideline.bounds {\\n background: #d66;\\n background: var(--bounds-color);\\n}\"],\r\n render: function (moveable, React) {\r\n var _a = moveable.props,\r\n customClipPath = _a.customClipPath,\r\n defaultClipPath = _a.defaultClipPath,\r\n clipArea = _a.clipArea,\r\n zoom = _a.zoom;\r\n var _b = moveable.state,\r\n target = _b.target,\r\n width = _b.width,\r\n height = _b.height,\r\n allMatrix = _b.allMatrix,\r\n is3d = _b.is3d,\r\n left = _b.left,\r\n top = _b.top,\r\n pos1 = _b.pos1,\r\n pos2 = _b.pos2,\r\n pos3 = _b.pos3,\r\n pos4 = _b.pos4,\r\n clipPathState = _b.clipPathState,\r\n snapBoundInfos = _b.snapBoundInfos;\r\n\r\n if (!target) {\r\n return [];\r\n }\r\n\r\n var clipPath = getClipPath(target, width, height, defaultClipPath || \"inset\", clipPathState || customClipPath);\r\n\r\n if (!clipPath) {\r\n return [];\r\n }\r\n\r\n var n = is3d ? 4 : 3;\r\n var type = clipPath.type;\r\n var clipPoses = clipPath.poses;\r\n var poses = clipPoses.map(function (pos) {\r\n // return [x, y];\r\n var calculatedPos = calculatePosition(allMatrix, pos.pos, n);\r\n return [calculatedPos[0] - left, calculatedPos[1] - top];\r\n });\r\n var controls = [];\r\n var lines = [];\r\n var isRect = type === \"rect\";\r\n var isInset = type === \"inset\";\r\n var isPolygon = type === \"polygon\";\r\n\r\n if (isRect || isInset || isPolygon) {\r\n var linePoses_1 = isInset ? poses.slice(0, 8) : poses;\r\n lines = linePoses_1.map(function (to, i) {\r\n var from = i === 0 ? linePoses_1[linePoses_1.length - 1] : linePoses_1[i - 1];\r\n var rad = getRad$1(from, to);\r\n var dist = getDiagonalSize(from, to);\r\n return React.createElement(\"div\", {\r\n key: \"clipLine\" + i,\r\n className: prefix(\"line\", \"clip-line\", \"snap-control\"),\r\n \"data-clip-index\": i,\r\n style: {\r\n width: dist + \"px\",\r\n transform: \"translate(\" + from[0] + \"px, \" + from[1] + \"px) rotate(\" + rad + \"rad) scaleY(\" + zoom + \")\"\r\n }\r\n });\r\n });\r\n }\r\n\r\n controls = poses.map(function (pos, i) {\r\n return React.createElement(\"div\", {\r\n key: \"clipControl\" + i,\r\n className: prefix(\"control\", \"clip-control\", \"snap-control\"),\r\n \"data-clip-index\": i,\r\n style: {\r\n transform: \"translate(\" + pos[0] + \"px, \" + pos[1] + \"px) scale(\" + zoom + \")\"\r\n }\r\n });\r\n });\r\n\r\n if (isInset) {\r\n controls.push.apply(controls, poses.slice(8).map(function (pos, i) {\r\n return React.createElement(\"div\", {\r\n key: \"clipRadiusControl\" + i,\r\n className: prefix(\"control\", \"clip-control\", \"clip-radius\", \"snap-control\"),\r\n \"data-clip-index\": 8 + i,\r\n style: {\r\n transform: \"translate(\" + pos[0] + \"px, \" + pos[1] + \"px) scale(\" + zoom + \")\"\r\n }\r\n });\r\n }));\r\n }\r\n\r\n if (type === \"circle\" || type === \"ellipse\") {\r\n var clipLeft = clipPath.left,\r\n clipTop = clipPath.top,\r\n radiusX = clipPath.radiusX,\r\n radiusY = clipPath.radiusY;\r\n\r\n var _c = minus(calculatePosition(allMatrix, [clipLeft, clipTop], n), calculatePosition(allMatrix, [0, 0], n)),\r\n distLeft = _c[0],\r\n distTop = _c[1];\r\n\r\n var ellipseClipPath = \"none\";\r\n\r\n if (!clipArea) {\r\n var piece = Math.max(10, radiusX / 5, radiusY / 5);\r\n var areaPoses = [];\r\n\r\n for (var i = 0; i <= piece; ++i) {\r\n var rad = Math.PI * 2 / piece * i;\r\n areaPoses.push([radiusX + (radiusX - zoom) * Math.cos(rad), radiusY + (radiusY - zoom) * Math.sin(rad)]);\r\n }\r\n\r\n areaPoses.push([radiusX, -2]);\r\n areaPoses.push([-2, -2]);\r\n areaPoses.push([-2, radiusY * 2 + 2]);\r\n areaPoses.push([radiusX * 2 + 2, radiusY * 2 + 2]);\r\n areaPoses.push([radiusX * 2 + 2, -2]);\r\n areaPoses.push([radiusX, -2]);\r\n ellipseClipPath = \"polygon(\" + areaPoses.map(function (pos) {\r\n return pos[0] + \"px \" + pos[1] + \"px\";\r\n }).join(\", \") + \")\";\r\n }\r\n\r\n controls.push(React.createElement(\"div\", {\r\n key: \"clipEllipse\",\r\n className: prefix(\"clip-ellipse\", \"snap-control\"),\r\n style: {\r\n width: radiusX * 2 + \"px\",\r\n height: radiusY * 2 + \"px\",\r\n clipPath: ellipseClipPath,\r\n transform: \"translate(\" + (-left + distLeft) + \"px, \" + (-top + distTop) + \"px) \" + makeMatrixCSS(allMatrix)\r\n }\r\n }));\r\n }\r\n\r\n if (clipArea) {\r\n var _d = getRect(__spreadArrays$1([pos1, pos2, pos3, pos4], poses)),\r\n allWidth = _d.width,\r\n allHeight = _d.height,\r\n allLeft_1 = _d.left,\r\n allTop_1 = _d.top;\r\n\r\n if (isPolygon || isRect || isInset) {\r\n var areaPoses = isInset ? poses.slice(0, 8) : poses;\r\n controls.push(React.createElement(\"div\", {\r\n key: \"clipArea\",\r\n className: prefix(\"clip-area\", \"snap-control\"),\r\n style: {\r\n width: allWidth + \"px\",\r\n height: allHeight + \"px\",\r\n transform: \"translate(\" + allLeft_1 + \"px, \" + allTop_1 + \"px)\",\r\n clipPath: \"polygon(\" + areaPoses.map(function (pos) {\r\n return pos[0] - allLeft_1 + \"px \" + (pos[1] - allTop_1) + \"px\";\r\n }).join(\", \") + \")\"\r\n }\r\n }));\r\n }\r\n }\r\n\r\n if (snapBoundInfos) {\r\n [\"vertical\", \"horizontal\"].forEach(function (directionType) {\r\n var info = snapBoundInfos[directionType];\r\n var isHorizontal = directionType === \"horizontal\";\r\n\r\n if (info.isSnap) {\r\n lines.push.apply(lines, info.snap.posInfos.map(function (_a, i) {\r\n var pos = _a.pos;\r\n var snapPos1 = minus(calculatePosition(allMatrix, isHorizontal ? [0, pos] : [pos, 0], n), [left, top]);\r\n var snapPos2 = minus(calculatePosition(allMatrix, isHorizontal ? [width, pos] : [pos, height], n), [left, top]);\r\n return renderLine(React, \"\", snapPos1, snapPos2, zoom, \"clip\" + directionType + \"snap\" + i, \"guideline\");\r\n }));\r\n }\r\n\r\n if (info.isBound) {\r\n lines.push.apply(lines, info.bounds.map(function (_a, i) {\r\n var pos = _a.pos;\r\n var snapPos1 = minus(calculatePosition(allMatrix, isHorizontal ? [0, pos] : [pos, 0], n), [left, top]);\r\n var snapPos2 = minus(calculatePosition(allMatrix, isHorizontal ? [width, pos] : [pos, height], n), [left, top]);\r\n return renderLine(React, \"\", snapPos1, snapPos2, zoom, \"clip\" + directionType + \"bounds\" + i, \"guideline\", \"bounds\", \"bold\");\r\n }));\r\n }\r\n });\r\n }\r\n\r\n return __spreadArrays$1(controls, lines);\r\n },\r\n dragControlCondition: function (e) {\r\n return e.inputEvent && (e.inputEvent.target.getAttribute(\"class\") || \"\").indexOf(\"clip\") > -1;\r\n },\r\n dragStart: function (moveable, e) {\r\n var props = moveable.props;\r\n var _a = props.dragWithClip,\r\n dragWithClip = _a === void 0 ? true : _a;\r\n\r\n if (dragWithClip) {\r\n return false;\r\n }\r\n\r\n return this.dragControlStart(moveable, e);\r\n },\r\n drag: function (moveable, e) {\r\n return this.dragControl(moveable, e);\r\n },\r\n dragEnd: function (moveable, e) {\r\n return this.dragControlEnd(moveable, e);\r\n },\r\n dragControlStart: function (moveable, e) {\r\n var state = moveable.state;\r\n var _a = moveable.props,\r\n defaultClipPath = _a.defaultClipPath,\r\n customClipPath = _a.customClipPath;\r\n var target = state.target,\r\n width = state.width,\r\n height = state.height;\r\n var inputTarget = e.inputEvent ? e.inputEvent.target : null;\r\n var className = inputTarget ? inputTarget.getAttribute(\"class\") : \"\";\r\n var datas = e.datas;\r\n var clipPath = getClipPath(target, width, height, defaultClipPath || \"inset\", customClipPath);\r\n\r\n if (!clipPath) {\r\n return false;\r\n }\r\n\r\n var clipText = clipPath.clipText,\r\n type = clipPath.type,\r\n poses = clipPath.poses;\r\n var result = triggerEvent(moveable, \"onClipStart\", fillParams(moveable, e, {\r\n clipType: type,\r\n clipStyle: clipText,\r\n poses: poses.map(function (pos) {\r\n return pos.pos;\r\n })\r\n }));\r\n\r\n if (result === false) {\r\n datas.isClipStart = false;\r\n return false;\r\n }\r\n\r\n datas.isControl = className.indexOf(\"clip-control\") > -1;\r\n datas.isLine = className.indexOf(\"clip-line\") > -1;\r\n datas.isArea = className.indexOf(\"clip-area\") > -1 || className.indexOf(\"clip-ellipse\") > -1;\r\n datas.index = inputTarget ? parseInt(inputTarget.getAttribute(\"data-clip-index\"), 10) : -1;\r\n datas.clipPath = clipPath;\r\n datas.isClipStart = true;\r\n state.clipPathState = clipText;\r\n setDragStart(moveable, e);\r\n return true;\r\n },\r\n dragControl: function (moveable, e) {\r\n var datas = e.datas,\r\n originalDatas = e.originalDatas;\r\n\r\n if (!datas.isClipStart) {\r\n return false;\r\n }\r\n\r\n var draggableData = originalDatas && originalDatas.draggable || {};\r\n var _a = datas,\r\n isControl = _a.isControl,\r\n isLine = _a.isLine,\r\n isArea = _a.isArea,\r\n index = _a.index,\r\n clipPath = _a.clipPath;\r\n\r\n if (!clipPath) {\r\n return false;\r\n }\r\n\r\n var _b = draggableData.isDrag ? draggableData.prevDist : getDragDist(e),\r\n distX = _b[0],\r\n distY = _b[1];\r\n\r\n var props = moveable.props;\r\n var state = moveable.state;\r\n var width = state.width,\r\n height = state.height;\r\n var isDragWithTarget = !isArea && !isControl && !isLine;\r\n var clipType = clipPath.type,\r\n clipPoses = clipPath.poses,\r\n splitter = clipPath.splitter;\r\n var poses = clipPoses.map(function (pos) {\r\n return pos.pos;\r\n });\r\n\r\n if (isDragWithTarget) {\r\n distX = -distX;\r\n distY = -distY;\r\n }\r\n\r\n var isAll = !isControl || clipPoses[index].direction === \"nesw\";\r\n var isRect = clipType === \"inset\" || clipType === \"rect\";\r\n var dists = clipPoses.map(function () {\r\n return [0, 0];\r\n });\r\n\r\n if (isControl && !isAll) {\r\n var _c = clipPoses[index],\r\n horizontal = _c.horizontal,\r\n vertical = _c.vertical;\r\n var dist = [distX * Math.abs(horizontal), distY * Math.abs(vertical)];\r\n dists = moveControlPos(clipPoses, index, dist, isRect);\r\n } else if (isAll) {\r\n dists = poses.map(function () {\r\n return [distX, distY];\r\n });\r\n }\r\n\r\n var nextPoses = poses.map(function (pos, i) {\r\n return plus(pos, dists[i]);\r\n });\r\n\r\n var guidePoses = __spreadArrays$1(nextPoses);\r\n\r\n state.snapBoundInfos = null;\r\n var isCircle = clipPath.type === \"circle\";\r\n var isEllipse = clipPath.type === \"ellipse\";\r\n\r\n if (isCircle || isEllipse) {\r\n var guideRect = getRect(nextPoses);\r\n var ry = Math.abs(guideRect.bottom - guideRect.top);\r\n var rx = Math.abs(isEllipse ? guideRect.right - guideRect.left : ry);\r\n var bottom = nextPoses[0][1] + ry;\r\n var left = nextPoses[0][0] - rx;\r\n var right = nextPoses[0][0] + rx; // right\r\n\r\n if (isCircle) {\r\n guidePoses.push([right, guideRect.bottom]);\r\n dists.push([1, 0]);\r\n } // bottom\r\n\r\n\r\n guidePoses.push([guideRect.left, bottom]);\r\n dists.push([0, 1]); // left\r\n\r\n guidePoses.push([left, guideRect.bottom]);\r\n dists.push([1, 0]);\r\n }\r\n\r\n var guidelines = addGuidelines([], width, height, (props.clipHorizontalGuidelines || []).map(function (v) {\r\n return convertUnitSize(\"\" + v, height);\r\n }), (props.clipVerticalGuidelines || []).map(function (v) {\r\n return convertUnitSize(\"\" + v, width);\r\n }));\r\n var guideXPoses = [];\r\n var guideYPoses = [];\r\n\r\n if (isCircle || isEllipse) {\r\n guideXPoses = [guidePoses[4][0], guidePoses[2][0]];\r\n guideYPoses = [guidePoses[1][1], guidePoses[3][1]];\r\n } else if (isRect) {\r\n var rectPoses = [guidePoses[0], guidePoses[2], guidePoses[4], guidePoses[6]];\r\n var rectDists_1 = [dists[0], dists[2], dists[4], dists[6]];\r\n guideXPoses = rectPoses.filter(function (_, i) {\r\n return rectDists_1[i][0];\r\n }).map(function (pos) {\r\n return pos[0];\r\n });\r\n guideYPoses = rectPoses.filter(function (_, i) {\r\n return rectDists_1[i][1];\r\n }).map(function (pos) {\r\n return pos[1];\r\n });\r\n } else {\r\n guideXPoses = guidePoses.filter(function (_, i) {\r\n return dists[i][0];\r\n }).map(function (pos) {\r\n return pos[0];\r\n });\r\n guideYPoses = guidePoses.filter(function (_, i) {\r\n return dists[i][1];\r\n }).map(function (pos) {\r\n return pos[1];\r\n });\r\n }\r\n\r\n var _loop_1 = function (i) {\r\n var _a = checkSnapBounds(guidelines, props.clipTargetBounds && {\r\n left: 0,\r\n top: 0,\r\n right: width,\r\n bottom: height\r\n }, guideXPoses, guideYPoses, {\r\n snapThreshold: 5\r\n }),\r\n horizontalSnapInfo = _a.horizontal,\r\n verticalSnapInfo = _a.vertical;\r\n\r\n var snapOffsetY = horizontalSnapInfo.offset;\r\n var snapOffsetX = verticalSnapInfo.offset;\r\n\r\n if ((isEllipse || isCircle) && dists[0][0] === 0 && dists[0][1] === 0) {\r\n var guideRect = getRect(nextPoses);\r\n var cy = guideRect.bottom - guideRect.top;\r\n var cx = isEllipse ? guideRect.right - guideRect.left : cy;\r\n var distSnapX = verticalSnapInfo.isBound ? Math.abs(snapOffsetX) : verticalSnapInfo.snapIndex === 0 ? -snapOffsetX : snapOffsetX;\r\n var distSnapY = horizontalSnapInfo.isBound ? Math.abs(snapOffsetY) : horizontalSnapInfo.snapIndex === 0 ? -snapOffsetY : snapOffsetY;\r\n cx -= distSnapX;\r\n cy -= distSnapY;\r\n\r\n if (isCircle) {\r\n cy = checkSnapBoundPriority(verticalSnapInfo, horizontalSnapInfo) > 0 ? cy : cx;\r\n cx = cy;\r\n }\r\n\r\n var center = guidePoses[0];\r\n guidePoses[1][1] = center[1] - cy;\r\n guidePoses[2][0] = center[0] + cx;\r\n guidePoses[3][1] = center[1] + cy;\r\n guidePoses[4][0] = center[0] - cx;\r\n } else {\r\n guidePoses.forEach(function (pos, j) {\r\n var dist = dists[j];\r\n\r\n if (dist[0]) {\r\n pos[0] -= snapOffsetX;\r\n }\r\n\r\n if (dist[1]) {\r\n pos[1] -= snapOffsetY;\r\n }\r\n });\r\n return \"break\";\r\n }\r\n };\r\n\r\n for (var i = 0; i < 2; ++i) {\r\n var state_1 = _loop_1();\r\n\r\n if (state_1 === \"break\") break;\r\n }\r\n\r\n var nextClipStyles = getClipStyles(moveable, clipPath, nextPoses);\r\n var clipStyle = clipType + \"(\" + nextClipStyles.join(splitter) + \")\";\r\n state.clipPathState = clipStyle;\r\n\r\n if (isCircle || isEllipse) {\r\n guideXPoses = [guidePoses[4][0], guidePoses[2][0]];\r\n guideYPoses = [guidePoses[1][1], guidePoses[3][1]];\r\n } else if (isRect) {\r\n var rectPoses = [guidePoses[0], guidePoses[2], guidePoses[4], guidePoses[6]];\r\n guideXPoses = rectPoses.map(function (pos) {\r\n return pos[0];\r\n });\r\n guideYPoses = rectPoses.map(function (pos) {\r\n return pos[1];\r\n });\r\n } else {\r\n guideXPoses = guidePoses.map(function (pos) {\r\n return pos[0];\r\n });\r\n guideYPoses = guidePoses.map(function (pos) {\r\n return pos[1];\r\n });\r\n }\r\n\r\n state.snapBoundInfos = checkSnapBounds(guidelines, props.clipTargetBounds && {\r\n left: 0,\r\n top: 0,\r\n right: width,\r\n bottom: height\r\n }, guideXPoses, guideYPoses, {\r\n snapThreshold: 1\r\n });\r\n triggerEvent(moveable, \"onClip\", fillParams(moveable, e, {\r\n clipEventType: \"changed\",\r\n clipType: clipType,\r\n poses: nextPoses,\r\n clipStyle: clipStyle,\r\n clipStyles: nextClipStyles,\r\n distX: distX,\r\n distY: distY\r\n }));\r\n return true;\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n this.unset(moveable);\r\n var isDrag = e.isDrag,\r\n datas = e.datas,\r\n isDouble = e.isDouble;\r\n var isLine = datas.isLine,\r\n isClipStart = datas.isClipStart,\r\n isControl = datas.isControl;\r\n\r\n if (!isClipStart) {\r\n return false;\r\n }\r\n\r\n triggerEvent(moveable, \"onClipEnd\", fillEndParams(moveable, e, {}));\r\n\r\n if (isDouble) {\r\n if (isControl) {\r\n removeClipPath(moveable, e);\r\n } else if (isLine) {\r\n // add\r\n addClipPath(moveable, e);\r\n }\r\n }\r\n\r\n return isDouble || isDrag;\r\n },\r\n unset: function (moveable) {\r\n moveable.state.clipPathState = \"\";\r\n moveable.state.snapBoundInfos = null;\r\n }\r\n };\r\n /**\r\n * Whether to clip the target. (default: false)\r\n * @name Moveable.Clippable#clippable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * If clippath is not set, the default value can be set. (defaultClipPath < style < customClipPath < dragging clipPath)\r\n * @name Moveable.Clippable#defaultClipPath\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * % Can be used instead of the absolute px (`rect` not possible) (default: false)\r\n * @name Moveable.Clippable#clipRelative\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * You can force the custom clipPath. (defaultClipPath < style < customClipPath < dragging clipPath)\r\n * @name Moveable.Clippable#customClipPath\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When dragging the target, the clip also moves. (default: true)\r\n * @name Moveable.Clippable#dragWithClip\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * You can drag the clip by setting clipArea. (default: false)\r\n * @name Moveable.Clippable#clipArea\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * Whether the clip is bound to the target. (default: false)\r\n * @name Moveable.Clippable#clipTargetBounds\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * clipTargetBounds: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * Add clip guidelines in the vertical direction. (default: [])\r\n * @name Moveable.Clippable#clipVerticalGuidelines\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * clipVerticalGuidelines: [0, 100, 200],\r\n * clipHorizontalGuidelines: [0, 100, 200],\r\n * clipSnapThreshold: 5,\r\n * });\r\n */\r\n\r\n /**\r\n * Add clip guidelines in the horizontal direction. (default: [])\r\n * @name Moveable.Clippable#clipHorizontalGuidelines\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * clipVerticalGuidelines: [0, 100, 200],\r\n * clipHorizontalGuidelines: [0, 100, 200],\r\n * clipSnapThreshold: 5,\r\n * });\r\n */\r\n\r\n /**\r\n * istance value that can snap to clip guidelines. (default: 5)\r\n * @name Moveable.Clippable#clipSnapThreshold\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * clipVerticalGuidelines: [0, 100, 200],\r\n * clipHorizontalGuidelines: [0, 100, 200],\r\n * clipSnapThreshold: 5,\r\n * });\r\n */\r\n\r\n /**\r\n * When drag start the clip area or controls, the `clipStart` event is called.\r\n * @memberof Moveable.Clippable\r\n * @event clipStart\r\n * @param {Moveable.Clippable.OnClipStart} - Parameters for the `clipStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When drag the clip area or controls, the `clip` event is called.\r\n * @memberof Moveable.Clippable\r\n * @event clip\r\n * @param {Moveable.Clippable.OnClip} - Parameters for the `clip` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When drag end the clip area or controls, the `clipEnd` event is called.\r\n * @memberof Moveable.Clippable\r\n * @event clipEnd\r\n * @param {Moveable.Clippable.OnClipEnd} - Parameters for the `clipEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * clippable: true,\r\n * defaultClipPath: \"inset\",\r\n * customClipPath: \"\",\r\n * clipRelative: false,\r\n * clipArea: false,\r\n * dragWithClip: true,\r\n * });\r\n * moveable.on(\"clipStart\", e => {\r\n * console.log(e);\r\n * }).on(\"clip\", e => {\r\n * if (e.clipType === \"rect\") {\r\n * e.target.style.clip = e.clipStyle;\r\n * } else {\r\n * e.target.style.clipPath = e.clipStyle;\r\n * }\r\n * }).on(\"clipEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * @namespace OriginDraggable\r\n * @memberof Moveable\r\n * @description Whether to drag origin (default: false)\r\n */\r\n\r\n var OriginDraggable = {\r\n name: \"originDraggable\",\r\n props: {\r\n originDraggable: Boolean,\r\n originRelative: Boolean\r\n },\r\n events: {\r\n onDragOriginStart: \"dragOriginStart\",\r\n onDragOrigin: \"dragOrigin\",\r\n onDragOriginEnd: \"dragOriginEnd\"\r\n },\r\n css: [\":host[data-able-origindraggable] .control.origin {\\n pointer-events: auto;\\n}\"],\r\n dragControlCondition: function (e) {\r\n if (e.isRequest) {\r\n return e.requestAble === \"originDraggable\";\r\n }\r\n\r\n return hasClass(e.inputEvent.target, prefix(\"origin\"));\r\n },\r\n dragControlStart: function (moveable, e) {\r\n var datas = e.datas;\r\n setDragStart(moveable, e);\r\n var params = fillParams(moveable, e, {\r\n dragStart: Draggable.dragStart(moveable, new CustomGesto().dragStart([0, 0], e))\r\n });\r\n var result = triggerEvent(moveable, \"onDragOriginStart\", params);\r\n datas.startOrigin = moveable.state.transformOrigin;\r\n datas.startTargetOrigin = moveable.state.targetOrigin;\r\n datas.prevOrigin = [0, 0];\r\n datas.isDragOrigin = true;\r\n\r\n if (result === false) {\r\n datas.isDragOrigin = false;\r\n return false;\r\n }\r\n\r\n return params;\r\n },\r\n dragControl: function (moveable, e) {\r\n var datas = e.datas,\r\n isPinch = e.isPinch,\r\n isRequest = e.isRequest;\r\n\r\n if (!datas.isDragOrigin) {\r\n return false;\r\n }\r\n\r\n var _a = getDragDist(e),\r\n distX = _a[0],\r\n distY = _a[1];\r\n\r\n var state = moveable.state;\r\n var width = state.width,\r\n height = state.height,\r\n offsetMatrix = state.offsetMatrix,\r\n targetMatrix = state.targetMatrix,\r\n is3d = state.is3d;\r\n var _b = moveable.props.originRelative,\r\n originRelative = _b === void 0 ? true : _b;\r\n var n = is3d ? 4 : 3;\r\n var dist = [distX, distY];\r\n\r\n if (isRequest) {\r\n var distOrigin = e.distOrigin;\r\n\r\n if (distOrigin[0] || distOrigin[1]) {\r\n dist = distOrigin;\r\n }\r\n }\r\n\r\n var origin = plus(datas.startOrigin, dist);\r\n var targetOrigin = plus(datas.startTargetOrigin, dist);\r\n var delta = minus(dist, datas.prevOrigin);\r\n var nextMatrix = getNextMatrix(offsetMatrix, targetMatrix, origin, n);\r\n var rect = moveable.getRect();\r\n var nextRect = getRect(calculatePoses(nextMatrix, width, height, n));\r\n var dragDelta = [rect.left - nextRect.left, rect.top - nextRect.top];\r\n datas.prevOrigin = dist;\r\n var transformOrigin = [convertCSSSize(targetOrigin[0], width, originRelative), convertCSSSize(targetOrigin[1], height, originRelative)].join(\" \");\r\n var params = fillParams(moveable, e, {\r\n width: width,\r\n height: height,\r\n origin: origin,\r\n dist: dist,\r\n delta: delta,\r\n transformOrigin: transformOrigin,\r\n drag: Draggable.drag(moveable, setCustomDrag(e, moveable.state, dragDelta, !!isPinch, false))\r\n });\r\n triggerEvent(moveable, \"onDragOrigin\", params);\r\n return params;\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n var datas = e.datas;\r\n\r\n if (!datas.isDragOrigin) {\r\n return false;\r\n }\r\n\r\n triggerEvent(moveable, \"onDragOriginEnd\", fillEndParams(moveable, e, {}));\r\n return true;\r\n },\r\n dragGroupControlCondition: function (e) {\r\n return this.dragControlCondition(e);\r\n },\r\n dragGroupControlStart: function (moveable, e) {\r\n var params = this.dragControlStart(moveable, e);\r\n\r\n if (!params) {\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n var params = this.dragControl(moveable, e);\r\n\r\n if (!params) {\r\n return false;\r\n }\r\n\r\n moveable.transformOrigin = params.transformOrigin;\r\n return true;\r\n },\r\n\r\n /**\r\n * @method Moveable.OriginDraggable#request\r\n * @param {object} e - the OriginDraggable's request parameter\r\n * @param {number} [e.x] - x position\r\n * @param {number} [e.y] - y position\r\n * @param {number} [e.deltaX] - x number to move\r\n * @param {number} [e.deltaY] - y number to move\r\n * @param {array} [e.deltaOrigin] - left, top number to move transform-origin\r\n * @param {array} [e.origin] - transform-origin position\r\n * @param {number} [e.isInstant] - Whether to execute the request instantly\r\n * @return {Moveable.Requester} Moveable Requester\r\n * @example\r\n * // Instantly Request (requestStart - request - requestEnd)\r\n * // Use Relative Value\r\n * moveable.request(\"originDraggable\", { deltaX: 10, deltaY: 10 }, true);\r\n * // Use Absolute Value\r\n * moveable.request(\"originDraggable\", { x: 200, y: 100 }, true);\r\n * // Use Transform Value\r\n * moveable.request(\"originDraggable\", { deltaOrigin: [10, 0] }, true);\r\n * moveable.request(\"originDraggable\", { origin: [100, 0] }, true);\r\n * // requestStart\r\n * const requester = moveable.request(\"originDraggable\");\r\n *\r\n * // request\r\n * // Use Relative Value\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * // Use Absolute Value\r\n * moveable.request(\"originDraggable\", { x: 200, y: 100 });\r\n * moveable.request(\"originDraggable\", { x: 220, y: 100 });\r\n * moveable.request(\"originDraggable\", { x: 240, y: 100 });\r\n *\r\n * // requestEnd\r\n * requester.requestEnd();\r\n */\r\n request: function (moveable) {\r\n var datas = {};\r\n var rect = moveable.getRect();\r\n var distX = 0;\r\n var distY = 0;\r\n var transformOrigin = rect.transformOrigin;\r\n var distOrigin = [0, 0];\r\n return {\r\n isControl: true,\r\n requestStart: function () {\r\n return {\r\n datas: datas\r\n };\r\n },\r\n request: function (e) {\r\n if (\"deltaOrigin\" in e) {\r\n distOrigin[0] += e.deltaOrigin[0];\r\n distOrigin[1] += e.deltaOrigin[1];\r\n } else if (\"origin\" in e) {\r\n distOrigin[0] = e.origin[0] - transformOrigin[0];\r\n distOrigin[1] = e.origin[1] - transformOrigin[1];\r\n } else {\r\n if (\"x\" in e) {\r\n distX = e.x - rect.left;\r\n } else if (\"deltaX\" in e) {\r\n distX += e.deltaX;\r\n }\r\n\r\n if (\"y\" in e) {\r\n distY = e.y - rect.top;\r\n } else if (\"deltaY\" in e) {\r\n distY += e.deltaY;\r\n }\r\n }\r\n\r\n return {\r\n datas: datas,\r\n distX: distX,\r\n distY: distY,\r\n distOrigin: distOrigin\r\n };\r\n },\r\n requestEnd: function () {\r\n return {\r\n datas: datas,\r\n isDrag: true\r\n };\r\n }\r\n };\r\n }\r\n };\r\n /**\r\n * Whether to drag origin (default: false)\r\n * @name Moveable.OriginDraggable#originDraggable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * originDraggable: true,\r\n * });\r\n * let translate = [0, 0];\r\n * moveable.on(\"dragOriginStart\", e => {\r\n * e.dragStart && e.dragStart.set(translate);\r\n * }).on(\"dragOrigin\", e => {\r\n * translate = e.drag.beforeTranslate;\r\n * e.target.style.cssText\r\n * = `transform-origin: ${e.transformOrigin};`\r\n * + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\r\n * }).on(\"dragOriginEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * % Can be used instead of the absolute px (default: true)\r\n * @name Moveable.OriginDraggable#originRelative\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * originDraggable: true,\r\n * originRelative: false,\r\n * });\r\n * moveable.originRelative = true;\r\n */\r\n\r\n /**\r\n * When drag start the origin, the `dragOriginStart` event is called.\r\n * @memberof Moveable.OriginDraggable\r\n * @event dragOriginStart\r\n * @param {Moveable.OriginDraggable.OnDragOriginStart} - Parameters for the `dragOriginStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * originDraggable: true,\r\n * });\r\n * let translate = [0, 0];\r\n * moveable.on(\"dragOriginStart\", e => {\r\n * e.dragStart && e.dragStart.set(translate);\r\n * }).on(\"dragOrigin\", e => {\r\n * translate = e.drag.beforeTranslate;\r\n * e.target.style.cssText\r\n * = `transform-origin: ${e.transformOrigin};`\r\n * + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\r\n * }).on(\"dragOriginEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When drag the origin, the `dragOrigin` event is called.\r\n * @memberof Moveable.OriginDraggable\r\n * @event dragOrigin\r\n * @param {Moveable.OriginDraggable.OnDragOrigin} - Parameters for the `dragOrigin` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * originDraggable: true,\r\n * });\r\n * let translate = [0, 0];\r\n * moveable.on(\"dragOriginStart\", e => {\r\n * e.dragStart && e.dragStart.set(translate);\r\n * }).on(\"dragOrigin\", e => {\r\n * translate = e.drag.beforeTranslate;\r\n * e.target.style.cssText\r\n * = `transform-origin: ${e.transformOrigin};`\r\n * + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\r\n * }).on(\"dragOriginEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When drag end the origin, the `dragOriginEnd` event is called.\r\n * @memberof Moveable.OriginDraggable\r\n * @event dragOriginEnd\r\n * @param {Moveable.OriginDraggable.OnDragOriginEnd} - Parameters for the `dragOriginEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * originDraggable: true,\r\n * });\r\n * let translate = [0, 0];\r\n * moveable.on(\"dragOriginStart\", e => {\r\n * e.dragStart && e.dragStart.set(translate);\r\n * }).on(\"dragOrigin\", e => {\r\n * translate = e.drag.beforeTranslate;\r\n * e.target.style.cssText\r\n * = `transform-origin: ${e.transformOrigin};`\r\n * + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\r\n * }).on(\"dragOriginEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n function addBorderRadius(controlPoses, poses, lineIndex, distX, distY, width, height) {\r\n var _a = splitRadiusPoses(controlPoses),\r\n horizontals = _a.horizontals,\r\n verticals = _a.verticals;\r\n\r\n var horizontalsLength = horizontals.length;\r\n var verticalsLength = verticals.length; // lineIndex\r\n // 0 top\r\n // 1 right\r\n // 2 left\r\n // 3 bottom\r\n // 0 top - left\r\n // 1 top - right\r\n // 2 bottom - right\r\n // 3 bottom - left\r\n // 0 left - top\r\n // 1 right - top\r\n // 2 right - bottom\r\n // 3 left - bottom\r\n\r\n var horizontalIndex = -1;\r\n var verticalIndex = -1;\r\n\r\n if (lineIndex === 0) {\r\n if (horizontalsLength === 0) {\r\n horizontalIndex = 0;\r\n } else if (horizontalsLength === 1) {\r\n horizontalIndex = 1;\r\n }\r\n } else if (lineIndex === 3) {\r\n if (horizontalsLength <= 2) {\r\n horizontalIndex = 2;\r\n } else if (horizontalsLength <= 3) {\r\n horizontalIndex = 3;\r\n }\r\n }\r\n\r\n if (lineIndex === 2) {\r\n if (verticalsLength === 0) {\r\n verticalIndex = 0;\r\n } else if (verticalsLength < 4) {\r\n verticalIndex = 3;\r\n }\r\n } else if (lineIndex === 1) {\r\n if (verticalsLength <= 1) {\r\n verticalIndex = 1;\r\n } else if (verticalsLength <= 2) {\r\n verticalIndex = 2;\r\n }\r\n }\r\n\r\n addRadiusPos(controlPoses, poses, 0, horizontalIndex, verticalIndex, distX, distY, width, height);\r\n }\r\n\r\n function getBorderRadius(target, width, height, minCounts, state) {\r\n if (minCounts === void 0) {\r\n minCounts = [0, 0];\r\n }\r\n\r\n var borderRadius;\r\n var values = [];\r\n\r\n if (!state) {\r\n var style = window.getComputedStyle(target);\r\n borderRadius = style && style.borderRadius || \"\";\r\n } else {\r\n borderRadius = state;\r\n }\r\n\r\n if (!borderRadius || !state && borderRadius === \"0px\") {\r\n values = [];\r\n } else {\r\n values = splitSpace(borderRadius);\r\n }\r\n\r\n return getRadiusValues(values, width, height, 0, 0, minCounts);\r\n }\r\n\r\n function triggerRoundEvent(moveable, e, dist, delta, controlPoses, nextPoses) {\r\n var state = moveable.state;\r\n var width = state.width,\r\n height = state.height;\r\n\r\n var _a = getRadiusStyles(nextPoses, controlPoses, moveable.props.roundRelative, width, height),\r\n raws = _a.raws,\r\n styles = _a.styles;\r\n\r\n var _b = splitRadiusPoses(controlPoses, raws),\r\n horizontals = _b.horizontals,\r\n verticals = _b.verticals;\r\n\r\n var borderRadius = styles.join(\" \");\r\n state.borderRadiusState = borderRadius;\r\n triggerEvent(moveable, \"onRound\", fillParams(moveable, e, {\r\n horizontals: horizontals,\r\n verticals: verticals,\r\n borderRadius: borderRadius,\r\n width: width,\r\n height: height,\r\n delta: delta,\r\n dist: dist\r\n }));\r\n }\r\n /**\r\n * @namespace Moveable.Roundable\r\n * @description Whether to show and drag or double click border-radius\r\n */\r\n\r\n\r\n var Roundable = {\r\n name: \"roundable\",\r\n props: {\r\n roundable: Boolean,\r\n roundRelative: Boolean,\r\n minRoundControls: Array,\r\n maxRoundControls: Array,\r\n roundClickable: Boolean\r\n },\r\n events: {\r\n onRoundStart: \"roundStart\",\r\n onRound: \"round\",\r\n onRoundEnd: \"roundEnd\"\r\n },\r\n css: [\".control.border-radius {\\n background: #d66;\\n cursor: pointer;\\n}\", \":host[data-able-roundable] .line.direction {\\n cursor: pointer;\\n}\"],\r\n render: function (moveable, React) {\r\n var _a = moveable.state,\r\n target = _a.target,\r\n width = _a.width,\r\n height = _a.height,\r\n allMatrix = _a.allMatrix,\r\n is3d = _a.is3d,\r\n left = _a.left,\r\n top = _a.top,\r\n borderRadiusState = _a.borderRadiusState;\r\n var _b = moveable.props,\r\n _c = _b.minRoundControls,\r\n minRoundControls = _c === void 0 ? [0, 0] : _c,\r\n _d = _b.maxRoundControls,\r\n maxRoundControls = _d === void 0 ? [4, 4] : _d,\r\n zoom = _b.zoom;\r\n\r\n if (!target) {\r\n return null;\r\n }\r\n\r\n var n = is3d ? 4 : 3;\r\n var radiusValues = getBorderRadius(target, width, height, minRoundControls, borderRadiusState);\r\n\r\n if (!radiusValues) {\r\n return null;\r\n }\r\n\r\n var verticalCount = 0;\r\n var horizontalCount = 0;\r\n return radiusValues.map(function (v, i) {\r\n horizontalCount += Math.abs(v.horizontal);\r\n verticalCount += Math.abs(v.vertical);\r\n var pos = minus(calculatePosition(allMatrix, v.pos, n), [left, top]);\r\n var isDisplay = v.vertical ? verticalCount <= maxRoundControls[1] : horizontalCount <= maxRoundControls[0];\r\n return React.createElement(\"div\", {\r\n key: \"borderRadiusControl\" + i,\r\n className: prefix(\"control\", \"border-radius\"),\r\n \"data-radius-index\": i,\r\n style: {\r\n display: isDisplay ? \"block\" : \"none\",\r\n transform: \"translate(\" + pos[0] + \"px, \" + pos[1] + \"px) scale(\" + zoom + \")\"\r\n }\r\n });\r\n });\r\n },\r\n dragControlCondition: function (e) {\r\n if (!e.inputEvent || e.isRequest) {\r\n return false;\r\n }\r\n\r\n var className = e.inputEvent.target.getAttribute(\"class\") || \"\";\r\n return className.indexOf(\"border-radius\") > -1 || className.indexOf(\"moveable-line\") > -1 && className.indexOf(\"moveable-direction\") > -1;\r\n },\r\n dragControlStart: function (moveable, e) {\r\n var inputEvent = e.inputEvent,\r\n datas = e.datas;\r\n var inputTarget = inputEvent.target;\r\n var className = inputTarget.getAttribute(\"class\") || \"\";\r\n var isControl = className.indexOf(\"border-radius\") > -1;\r\n var isLine = className.indexOf(\"moveable-line\") > -1 && className.indexOf(\"moveable-direction\") > -1;\r\n var controlIndex = isControl ? parseInt(inputTarget.getAttribute(\"data-radius-index\"), 10) : -1;\r\n var lineIndex = isLine ? parseInt(inputTarget.getAttribute(\"data-line-index\"), 10) : -1;\r\n\r\n if (!isControl && !isLine) {\r\n return false;\r\n }\r\n\r\n var result = triggerEvent(moveable, \"onRoundStart\", fillParams(moveable, e, {}));\r\n\r\n if (result === false) {\r\n return false;\r\n }\r\n\r\n datas.lineIndex = lineIndex;\r\n datas.controlIndex = controlIndex;\r\n datas.isControl = isControl;\r\n datas.isLine = isLine;\r\n setDragStart(moveable, e);\r\n var _a = moveable.props,\r\n roundRelative = _a.roundRelative,\r\n _b = _a.minRoundControls,\r\n minRoundControls = _b === void 0 ? [0, 0] : _b;\r\n var state = moveable.state;\r\n var target = state.target,\r\n width = state.width,\r\n height = state.height;\r\n datas.isRound = true;\r\n datas.prevDist = [0, 0];\r\n var controlPoses = getBorderRadius(target, width, height, minRoundControls) || [];\r\n datas.controlPoses = controlPoses;\r\n state.borderRadiusState = getRadiusStyles(controlPoses.map(function (pos) {\r\n return pos.pos;\r\n }), controlPoses, roundRelative, width, height).styles.join(\" \");\r\n return true;\r\n },\r\n dragControl: function (moveable, e) {\r\n var datas = e.datas;\r\n\r\n if (!datas.isRound || !datas.isControl || !datas.controlPoses.length) {\r\n return false;\r\n }\r\n\r\n var index = datas.controlIndex;\r\n var controlPoses = datas.controlPoses;\r\n\r\n var _a = getDragDist(e),\r\n distX = _a[0],\r\n distY = _a[1];\r\n\r\n var dist = [distX, distY];\r\n var delta = minus(dist, datas.prevDist);\r\n var _b = moveable.props.maxRoundControls,\r\n maxRoundControls = _b === void 0 ? [4, 4] : _b;\r\n var _c = moveable.state,\r\n width = _c.width,\r\n height = _c.height;\r\n var selectedControlPose = controlPoses[index];\r\n var selectedVertical = selectedControlPose.vertical;\r\n var selectedHorizontal = selectedControlPose.horizontal; // 0: [0, 1, 2, 3] maxCount === 1\r\n // 0: [0, 2] maxCount === 2\r\n // 1: [1, 3] maxCount === 2\r\n // 0: [0] maxCount === 3\r\n // 1: [1, 3] maxCount === 3\r\n\r\n var dists = controlPoses.map(function (pose) {\r\n var horizontal = pose.horizontal,\r\n vertical = pose.vertical;\r\n var poseDist = [horizontal * selectedHorizontal * dist[0], vertical * selectedVertical * dist[1]];\r\n\r\n if (horizontal) {\r\n if (maxRoundControls[0] === 1) {\r\n return poseDist;\r\n } else if (maxRoundControls[0] < 4 && horizontal !== selectedHorizontal) {\r\n return poseDist;\r\n }\r\n } else if (maxRoundControls[1] === 0) {\r\n poseDist[1] = vertical * selectedHorizontal * dist[0] / width * height;\r\n return poseDist;\r\n } else if (selectedVertical) {\r\n if (maxRoundControls[1] === 1) {\r\n return poseDist;\r\n } else if (maxRoundControls[1] < 4 && vertical !== selectedVertical) {\r\n return poseDist;\r\n }\r\n }\r\n\r\n return [0, 0];\r\n });\r\n dists[index] = dist;\r\n var nextPoses = controlPoses.map(function (pos, i) {\r\n return plus(pos.pos, dists[i]);\r\n });\r\n datas.prevDist = [distX, distY];\r\n triggerRoundEvent(moveable, e, dist, delta, controlPoses, nextPoses);\r\n return true;\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n var state = moveable.state;\r\n state.borderRadiusState = \"\";\r\n var datas = e.datas,\r\n isDouble = e.isDouble;\r\n\r\n if (!datas.isRound) {\r\n return false;\r\n }\r\n\r\n var width = state.width,\r\n height = state.height;\r\n var isControl = datas.isControl,\r\n controlIndex = datas.controlIndex,\r\n isLine = datas.isLine,\r\n lineIndex = datas.lineIndex;\r\n var controlPoses = datas.controlPoses;\r\n var poses = controlPoses.map(function (pos) {\r\n return pos.pos;\r\n });\r\n var length = poses.length;\r\n var _a = moveable.props.roundClickable,\r\n roundClickable = _a === void 0 ? true : _a;\r\n\r\n if (isDouble && roundClickable) {\r\n if (isControl) {\r\n removeRadiusPos(controlPoses, poses, controlIndex, 0);\r\n } else if (isLine) {\r\n var _b = calculatePointerDist(moveable, e),\r\n distX = _b[0],\r\n distY = _b[1];\r\n\r\n addBorderRadius(controlPoses, poses, lineIndex, distX, distY, width, height);\r\n }\r\n\r\n if (length !== controlPoses.length) {\r\n triggerRoundEvent(moveable, e, [0, 0], [0, 0], controlPoses, poses);\r\n }\r\n\r\n triggerEvent(moveable, \"onRoundEnd\", fillEndParams(moveable, e, {}));\r\n }\r\n\r\n state.borderRadiusState = \"\";\r\n return true;\r\n },\r\n unset: function (moveable) {\r\n moveable.state.borderRadiusState = \"\";\r\n }\r\n };\r\n /**\r\n * Whether to show and drag or double click border-radius, (default: false)\r\n * @name Moveable.Roundable#roundable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * });\r\n * moveable.on(\"roundStart\", e => {\r\n * console.log(e);\r\n * }).on(\"round\", e => {\r\n * e.target.style.borderRadius = e.borderRadius;\r\n * }).on(\"roundEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * % Can be used instead of the absolute px\r\n * @name Moveable.Roundable#roundRelative\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * });\r\n * moveable.on(\"roundStart\", e => {\r\n * console.log(e);\r\n * }).on(\"round\", e => {\r\n * e.target.style.borderRadius = e.borderRadius;\r\n * }).on(\"roundEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * Minimum number of round controls. It moves in proportion by control. [horizontal, vertical] (default: [0, 0])\r\n * @name Moveable.Roundable#minRoundControls\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * minRoundControls: [0, 0],\r\n * });\r\n * moveable.maxRoundControls = [1, 0];\r\n */\r\n\r\n /**\r\n * Maximum number of round controls. It moves in proportion by control. [horizontal, vertical] (default: [4, 4])\r\n * @name Moveable.Roundable#maxRoundControls\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * maxRoundControls: [4, 4],\r\n * });\r\n * moveable.maxRoundControls = [1, 0];\r\n */\r\n\r\n /**\r\n * @property - Whether you can add/delete round controls by double-clicking a line or control. (default: true)\r\n * @name Moveable.Roundable#roundClickable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * roundClickable: true,\r\n * });\r\n * moveable.roundClickable = false;\r\n */\r\n\r\n /**\r\n * When drag start the clip area or controls, the `roundStart` event is called.\r\n * @memberof Moveable.Roundable\r\n * @event roundStart\r\n * @param {Moveable.Roundable.OnRoundStart} - Parameters for the `roundStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * });\r\n * moveable.on(\"roundStart\", e => {\r\n * console.log(e);\r\n * }).on(\"round\", e => {\r\n * e.target.style.borderRadius = e.borderRadius;\r\n * }).on(\"roundEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When drag or double click the border area or controls, the `round` event is called.\r\n * @memberof Moveable.Roundable\r\n * @event round\r\n * @param {Moveable.Roundable.OnRound} - Parameters for the `round` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * });\r\n * moveable.on(\"roundStart\", e => {\r\n * console.log(e);\r\n * }).on(\"round\", e => {\r\n * e.target.style.borderRadius = e.borderRadius;\r\n * }).on(\"roundEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n /**\r\n * When drag end the border area or controls, the `roundEnd` event is called.\r\n * @memberof Moveable.Roundable\r\n * @event roundEnd\r\n * @param {Moveable.Roundable.onRoundEnd} - Parameters for the `roundEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * roundable: true,\r\n * roundRelative: false,\r\n * });\r\n * moveable.on(\"roundStart\", e => {\r\n * console.log(e);\r\n * }).on(\"round\", e => {\r\n * e.target.style.borderRadius = e.borderRadius;\r\n * }).on(\"roundEnd\", e => {\r\n * console.log(e);\r\n * });\r\n */\r\n\r\n var BeforeRenderable = {\r\n isPinch: true,\r\n name: \"beforeRenderable\",\r\n props: {},\r\n events: {\r\n onBeforeRenderStart: \"beforeRenderStart\",\r\n onBeforeRender: \"beforeRender\",\r\n onBeforeRenderEnd: \"beforeRenderEnd\",\r\n onBeforeRenderGroupStart: \"beforeRenderGroupStart\",\r\n onBeforeRenderGroup: \"beforeRenderGroup\",\r\n onBeforeRenderGroupEnd: \"beforeRenderGroupEnd\"\r\n },\r\n setTransform: function (moveable, e) {\r\n var _a = moveable.state,\r\n is3d = _a.is3d,\r\n targetMatrix = _a.targetMatrix;\r\n var cssMatrix = is3d ? \"matrix3d(\" + targetMatrix.join(\",\") + \")\" : \"matrix(\" + convertMatrixtoCSS(targetMatrix, true) + \")\";\r\n e.datas.startTransforms = [cssMatrix];\r\n },\r\n resetTransform: function (moveable, e) {\r\n e.datas.nextTransforms = e.datas.startTransforms;\r\n e.datas.nextTransformAppendedIndexes = [];\r\n },\r\n fillDragStartParams: function (moveable, e) {\r\n return fillParams(moveable, e, {\r\n setTransform: function (transform) {\r\n e.datas.startTransforms = isArray(transform) ? transform : splitSpace(transform);\r\n },\r\n isPinch: !!e.isPinch\r\n });\r\n },\r\n fillDragParams: function (moveable, e) {\r\n return fillParams(moveable, e, {\r\n isPinch: !!e.isPinch\r\n });\r\n },\r\n dragStart: function (moveable, e) {\r\n this.setTransform(moveable, e);\r\n triggerEvent(moveable, \"onBeforeRenderStart\", this.fillDragStartParams(moveable, e));\r\n },\r\n drag: function (moveable, e) {\r\n this.resetTransform(moveable, e);\r\n triggerEvent(moveable, \"onBeforeRender\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch\r\n }));\r\n },\r\n dragEnd: function (moveable, e) {\r\n triggerEvent(moveable, \"onBeforeRenderEnd\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n isDrag: e.isDrag\r\n }));\r\n },\r\n dragGroupStart: function (moveable, e) {\r\n var _this = this;\r\n\r\n this.dragStart(moveable, e);\r\n var events = fillChildEvents(moveable, \"beforeRenderable\", e);\r\n var moveables = moveable.moveables;\r\n var params = events.map(function (childEvent, i) {\r\n var childMoveable = moveables[i];\r\n\r\n _this.setTransform(childMoveable, childEvent);\r\n\r\n return _this.fillDragStartParams(childMoveable, childEvent);\r\n });\r\n triggerEvent(moveable, \"onBeforeRenderGroupStart\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n targets: moveable.props.targets,\r\n setTransform: function () {},\r\n events: params\r\n }));\r\n },\r\n dragGroup: function (moveable, e) {\r\n var _this = this;\r\n\r\n this.drag(moveable, e);\r\n var events = fillChildEvents(moveable, \"beforeRenderable\", e);\r\n var moveables = moveable.moveables;\r\n var params = events.map(function (childEvent, i) {\r\n var childMoveable = moveables[i];\r\n\r\n _this.resetTransform(childMoveable, childEvent);\r\n\r\n return _this.fillDragParams(childMoveable, childEvent);\r\n });\r\n triggerEvent(moveable, \"onBeforeRenderGroup\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n targets: moveable.props.targets,\r\n events: params\r\n }));\r\n },\r\n dragGroupEnd: function (moveable, e) {\r\n this.dragEnd(moveable, e);\r\n triggerEvent(moveable, \"onBeforeRenderGroupEnd\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n isDrag: e.isDrag,\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragControlStart: function (moveable, e) {\r\n return this.dragStart(moveable, e);\r\n },\r\n dragControl: function (moveable, e) {\r\n return this.drag(moveable, e);\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n return this.dragEnd(moveable, e);\r\n },\r\n dragGroupControlStart: function (moveable, e) {\r\n return this.dragGroupStart(moveable, e);\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n return this.dragGroup(moveable, e);\r\n },\r\n dragGroupControlEnd: function (moveable, e) {\r\n return this.dragGroupEnd(moveable, e);\r\n }\r\n };\r\n\r\n var Renderable = {\r\n name: \"Renderable\",\r\n props: {},\r\n events: {\r\n onRenderStart: \"renderStart\",\r\n onRender: \"render\",\r\n onRenderEnd: \"renderEnd\",\r\n onRenderGroupStart: \"renderGroupStart\",\r\n onRenderGroup: \"renderGroup\",\r\n onRenderGroupEnd: \"renderGroupEnd\"\r\n },\r\n dragStart: function (moveable, e) {\r\n triggerEvent(moveable, \"onRenderStart\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch\r\n }));\r\n },\r\n drag: function (moveable, e) {\r\n triggerEvent(moveable, \"onRender\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch\r\n }));\r\n },\r\n dragEnd: function (moveable, e) {\r\n triggerEvent(moveable, \"onRenderEnd\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n isDrag: e.isDrag\r\n }));\r\n },\r\n dragGroupStart: function (moveable, e) {\r\n triggerEvent(moveable, \"onRenderGroupStart\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragGroup: function (moveable, e) {\r\n triggerEvent(moveable, \"onRenderGroup\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragGroupEnd: function (moveable, e) {\r\n triggerEvent(moveable, \"onRenderGroupEnd\", fillParams(moveable, e, {\r\n isPinch: !!e.isPinch,\r\n isDrag: e.isDrag,\r\n targets: moveable.props.targets\r\n }));\r\n },\r\n dragControlStart: function (moveable, e) {\r\n return this.dragStart(moveable, e);\r\n },\r\n dragControl: function (moveable, e) {\r\n return this.drag(moveable, e);\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n return this.dragEnd(moveable, e);\r\n },\r\n dragGroupControlStart: function (moveable, e) {\r\n return this.dragGroupStart(moveable, e);\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n return this.dragGroup(moveable, e);\r\n },\r\n dragGroupControlEnd: function (moveable, e) {\r\n return this.dragGroupEnd(moveable, e);\r\n }\r\n };\r\n\r\n function triggerAble(moveable, ableType, eventOperation, eventAffix, eventType, e, requestInstant) {\r\n var isStart = eventType === \"Start\";\r\n var target = moveable.state.target;\r\n var isRequest = e.isRequest;\r\n\r\n if (!target || isStart && eventAffix.indexOf(\"Control\") > -1 && !isRequest && moveable.areaElement === e.inputEvent.target) {\r\n return false;\r\n }\r\n\r\n var eventName = \"\" + eventOperation + eventAffix + eventType;\r\n var conditionName = \"\" + eventOperation + eventAffix + \"Condition\";\r\n var isEnd = eventType === \"End\";\r\n var isAfter = eventType.indexOf(\"After\") > -1;\r\n var isFirstStart = isStart && (!moveable.targetGesto || !moveable.controlGesto || !moveable.targetGesto.isFlag() || !moveable.controlGesto.isFlag());\r\n\r\n if (isFirstStart) {\r\n moveable.updateRect(eventType, true, false);\r\n }\r\n\r\n if (eventType === \"\" && !isAfter && !isRequest) {\r\n convertDragDist(moveable.state, e);\r\n }\r\n\r\n var isGroup = eventAffix.indexOf(\"Group\") > -1;\r\n\r\n var ables = __spreadArrays$1([BeforeRenderable], moveable[ableType].slice(), [Renderable]);\r\n\r\n if (isRequest) {\r\n var requestAble_1 = e.requestAble;\r\n\r\n if (!ables.some(function (able) {\r\n return able.name === requestAble_1;\r\n })) {\r\n ables.push.apply(ables, moveable.props.ables.filter(function (able) {\r\n return able.name === requestAble_1;\r\n }));\r\n }\r\n }\r\n\r\n if (!ables.length) {\r\n return false;\r\n }\r\n\r\n var events = ables.filter(function (able) {\r\n return able[eventName];\r\n });\r\n var datas = e.datas;\r\n\r\n if (isFirstStart) {\r\n events.forEach(function (able) {\r\n able.unset && able.unset(moveable);\r\n });\r\n }\r\n\r\n var inputEvent = e.inputEvent;\r\n var inputTarget;\r\n\r\n if (isEnd && inputEvent) {\r\n inputTarget = document.elementFromPoint(e.clientX, e.clientY) || inputEvent.target;\r\n }\r\n\r\n var results = events.filter(function (able) {\r\n var ableName = able.name;\r\n var nextDatas = datas[ableName] || (datas[ableName] = {});\r\n\r\n if (isStart) {\r\n nextDatas.isEventStart = !able[conditionName] || able[conditionName](e, moveable);\r\n }\r\n\r\n if (nextDatas.isEventStart) {\r\n return able[eventName](moveable, __assign$2(__assign$2({}, e), {\r\n datas: nextDatas,\r\n originalDatas: datas,\r\n inputTarget: inputTarget\r\n }));\r\n }\r\n\r\n return false;\r\n });\r\n var isUpdate = results.length;\r\n var isForceEnd = isStart && events.length && !isUpdate;\r\n\r\n if (isEnd || isForceEnd) {\r\n moveable.state.gesto = null;\r\n\r\n if (moveable.moveables) {\r\n moveable.moveables.forEach(function (childMoveable) {\r\n childMoveable.state.gesto = null;\r\n });\r\n }\r\n }\r\n\r\n if (isFirstStart && isForceEnd) {\r\n events.forEach(function (able) {\r\n able.unset && able.unset(moveable);\r\n });\r\n }\r\n\r\n if (moveable.isUnmounted || isForceEnd) {\r\n return false;\r\n }\r\n\r\n if (!isStart && isUpdate && !requestInstant || isEnd) {\r\n if (results.some(function (able) {\r\n return able.updateRect;\r\n }) && !isGroup) {\r\n moveable.updateRect(eventType, false, false);\r\n } else {\r\n moveable.updateRect(eventType, true, false);\r\n }\r\n\r\n moveable.forceUpdate();\r\n }\r\n\r\n if (!isStart && !isEnd && !isAfter && isUpdate && !requestInstant) {\r\n triggerAble(moveable, ableType, eventOperation, eventAffix, eventType + \"After\", e);\r\n }\r\n\r\n return true;\r\n }\r\n function getTargetAbleGesto(moveable, moveableTarget, eventAffix) {\r\n var controlBox = moveable.controlBox.getElement();\r\n var targets = [];\r\n targets.push(controlBox);\r\n\r\n if (!moveable.props.dragArea || moveable.props.dragTarget) {\r\n targets.push(moveableTarget);\r\n }\r\n\r\n var startFunc = function (e) {\r\n var eventTarget = e.inputEvent.target;\r\n var areaElement = moveable.areaElement;\r\n return eventTarget === areaElement || !moveable.isMoveableElement(eventTarget) || hasClass(eventTarget, \"moveable-area\") || hasClass(eventTarget, \"moveable-padding\");\r\n };\r\n\r\n return getAbleGesto(moveable, targets, \"targetAbles\", eventAffix, {\r\n dragStart: startFunc,\r\n pinchStart: startFunc\r\n });\r\n }\r\n function getAbleGesto(moveable, target, ableType, eventAffix, conditionFunctions) {\r\n if (conditionFunctions === void 0) {\r\n conditionFunctions = {};\r\n }\r\n\r\n var _a = moveable.props,\r\n pinchOutside = _a.pinchOutside,\r\n pinchThreshold = _a.pinchThreshold;\r\n var options = {\r\n container: window,\r\n pinchThreshold: pinchThreshold,\r\n pinchOutside: pinchOutside\r\n };\r\n var gesto = new Gesto(target, options);\r\n [\"drag\", \"pinch\"].forEach(function (eventOperation) {\r\n [\"Start\", \"\", \"End\"].forEach(function (eventType) {\r\n gesto.on(\"\" + eventOperation + eventType, function (e) {\r\n var eventName = e.eventType;\r\n\r\n if (conditionFunctions[eventName] && !conditionFunctions[eventName](e)) {\r\n e.stop();\r\n return;\r\n }\r\n\r\n var result = triggerAble(moveable, ableType, eventOperation, eventAffix, eventType, e);\r\n\r\n if (!result) {\r\n e.stop();\r\n }\r\n });\r\n });\r\n });\r\n return gesto;\r\n }\r\n\r\n var EventManager =\r\n /*#__PURE__*/\r\n function () {\r\n function EventManager(target, moveable, eventName) {\r\n var _this = this;\r\n\r\n this.target = target;\r\n this.moveable = moveable;\r\n this.eventName = eventName;\r\n this.ables = [];\r\n\r\n this.onEvent = function (e) {\r\n var eventName = _this.eventName;\r\n var moveable = _this.moveable;\r\n\r\n _this.ables.forEach(function (able) {\r\n able[eventName]({\r\n inputEvent: e\r\n }, moveable);\r\n });\r\n };\r\n\r\n this.target.addEventListener(this.eventName.toLowerCase(), this.onEvent);\r\n }\r\n\r\n var __proto = EventManager.prototype;\r\n\r\n __proto.setAbles = function (ables) {\r\n this.ables = ables;\r\n };\r\n\r\n __proto.destroy = function () {\r\n this.target.removeEventListener(this.eventName.toLowerCase(), this.onEvent);\r\n this.target = null;\r\n this.moveable = null;\r\n };\r\n\r\n return EventManager;\r\n }();\r\n\r\n var MoveableManager$1 =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$1(MoveableManager, _super);\r\n\r\n function MoveableManager() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.state = __assign$2({\r\n container: null,\r\n target: null,\r\n gesto: null,\r\n renderPoses: [[0, 0], [0, 0], [0, 0], [0, 0]]\r\n }, getTargetInfo(null));\r\n _this.enabledAbles = [];\r\n _this.targetAbles = [];\r\n _this.controlAbles = [];\r\n _this.rotation = 0;\r\n _this.scale = [1, 1];\r\n _this.isUnmounted = false;\r\n _this.events = {\r\n \"mouseEnter\": null,\r\n \"mouseLeave\": null\r\n };\r\n return _this;\r\n }\r\n\r\n var __proto = MoveableManager.prototype;\r\n\r\n __proto.render = function () {\r\n var props = this.props;\r\n var state = this.state;\r\n var edge = props.edge,\r\n parentPosition = props.parentPosition,\r\n className = props.className,\r\n propsTarget = props.target,\r\n zoom = props.zoom,\r\n cspNonce = props.cspNonce,\r\n translateZ = props.translateZ,\r\n ControlBoxElement = props.cssStyled,\r\n portalContainer = props.portalContainer;\r\n this.checkUpdate();\r\n this.updateRenderPoses();\r\n\r\n var _a = parentPosition || {\r\n left: 0,\r\n top: 0\r\n },\r\n parentLeft = _a.left,\r\n parentTop = _a.top;\r\n\r\n var left = state.left,\r\n top = state.top,\r\n stateTarget = state.target,\r\n direction = state.direction,\r\n renderPoses = state.renderPoses;\r\n var groupTargets = props.targets;\r\n var isDisplay = (groupTargets && groupTargets.length || propsTarget) && stateTarget;\r\n var isDragging = this.isDragging();\r\n var ableAttributes = {};\r\n var Renderer = {\r\n createElement: createElement\r\n };\r\n this.getEnabledAbles().forEach(function (able) {\r\n ableAttributes[\"data-able-\" + able.name.toLowerCase()] = true;\r\n });\r\n return createElement(ControlBoxElement, __assign$2({\r\n cspNonce: cspNonce,\r\n ref: ref(this, \"controlBox\"),\r\n className: prefix(\"control-box\", direction === -1 ? \"reverse\" : \"\", isDragging ? \"dragging\" : \"\") + \" \" + className\r\n }, ableAttributes, {\r\n portalContainer: portalContainer,\r\n style: {\r\n \"position\": \"absolute\",\r\n \"display\": isDisplay ? \"block\" : \"none\",\r\n \"transform\": \"translate3d(\" + (left - parentLeft) + \"px, \" + (top - parentTop) + \"px, \" + translateZ + \")\",\r\n \"--zoom\": zoom,\r\n \"--zoompx\": zoom + \"px\"\r\n }\r\n }), this.renderAbles(), renderLine(Renderer, edge ? \"n\" : \"\", renderPoses[0], renderPoses[1], zoom, 0), renderLine(Renderer, edge ? \"e\" : \"\", renderPoses[1], renderPoses[3], zoom, 1), renderLine(Renderer, edge ? \"w\" : \"\", renderPoses[0], renderPoses[2], zoom, 2), renderLine(Renderer, edge ? \"s\" : \"\", renderPoses[2], renderPoses[3], zoom, 3));\r\n };\r\n\r\n __proto.componentDidMount = function () {\r\n this.controlBox.getElement();\r\n var props = this.props;\r\n var parentMoveable = props.parentMoveable,\r\n container = props.container,\r\n wrapperMoveable = props.wrapperMoveable;\r\n this.updateEvent(props);\r\n this.updateNativeEvents(props);\r\n\r\n if (!container && !parentMoveable && !wrapperMoveable) {\r\n this.updateRect(\"\", false, true);\r\n }\r\n\r\n this.updateCheckInput();\r\n };\r\n\r\n __proto.componentDidUpdate = function (prevProps) {\r\n this.updateNativeEvents(prevProps);\r\n this.updateEvent(prevProps);\r\n this.updateCheckInput();\r\n };\r\n\r\n __proto.componentWillUnmount = function () {\r\n this.isUnmounted = true;\r\n unset(this, \"targetGesto\");\r\n unset(this, \"controlGesto\");\r\n var events = this.events;\r\n\r\n for (var name in events) {\r\n var manager = events[name];\r\n manager && manager.destroy();\r\n }\r\n };\r\n\r\n __proto.getContainer = function () {\r\n var _a = this.props,\r\n parentMoveable = _a.parentMoveable,\r\n wrapperMoveable = _a.wrapperMoveable,\r\n container = _a.container;\r\n return container || wrapperMoveable && wrapperMoveable.getContainer() || parentMoveable && parentMoveable.getContainer() || this.controlBox.getElement().parentElement;\r\n };\r\n /**\r\n * Check if the target is an element included in the moveable.\r\n * @method Moveable#isMoveableElement\r\n * @param - the target\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * window.addEventListener(\"click\", e => {\r\n * if (!moveable.isMoveableElement(e.target)) {\r\n * moveable.target = e.target;\r\n * }\r\n * });\r\n */\r\n\r\n\r\n __proto.isMoveableElement = function (target) {\r\n return target && (target.getAttribute(\"class\") || \"\").indexOf(PREFIX) > -1;\r\n };\r\n /**\r\n * You can drag start the Moveable through the external `MouseEvent`or `TouchEvent`. (Angular: ngDragStart)\r\n * @method Moveable#dragStart\r\n * @param - external `MouseEvent`or `TouchEvent`\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * document.body.addEventListener(\"mousedown\", e => {\r\n * if (!moveable.isMoveableElement(e.target)) {\r\n * moveable.dragStart(e);\r\n * }\r\n * });\r\n */\r\n\r\n\r\n __proto.dragStart = function (e) {\r\n if (this.targetGesto) {\r\n this.targetGesto.triggerDragStart(e);\r\n }\r\n\r\n return this;\r\n };\r\n /**\r\n * Hit test an element or rect on a moveable target.\r\n * @method Moveable#hitTest\r\n * @param - element or rect to test\r\n * @return - Get hit test rate (rate > 0 is hitted)\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * document.body.addEventListener(\"mousedown\", e => {\r\n * if (moveable.hitTest(e.target) > 0) {\r\n * console.log(\"hiited\");\r\n * }\r\n * });\r\n */\r\n\r\n\r\n __proto.hitTest = function (el) {\r\n var _a = this.state,\r\n target = _a.target,\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n pos3 = _a.pos3,\r\n pos4 = _a.pos4,\r\n targetClientRect = _a.targetClientRect;\r\n\r\n if (!target) {\r\n return 0;\r\n }\r\n\r\n var rect;\r\n\r\n if (el instanceof Element) {\r\n var clientRect = el.getBoundingClientRect();\r\n rect = {\r\n left: clientRect.left,\r\n top: clientRect.top,\r\n width: clientRect.width,\r\n height: clientRect.height\r\n };\r\n } else {\r\n rect = __assign$2({\r\n width: 0,\r\n height: 0\r\n }, el);\r\n }\r\n\r\n var rectLeft = rect.left,\r\n rectTop = rect.top,\r\n rectWidth = rect.width,\r\n rectHeight = rect.height;\r\n var points = fitPoints([pos1, pos2, pos4, pos3], targetClientRect);\r\n var size = getOverlapSize(points, [[rectLeft, rectTop], [rectLeft + rectWidth, rectTop], [rectLeft + rectWidth, rectTop + rectHeight], [rectLeft, rectTop + rectHeight]]);\r\n var totalSize = getAreaSize(points);\r\n\r\n if (!size || !totalSize) {\r\n return 0;\r\n }\r\n\r\n return Math.min(100, size / totalSize * 100);\r\n };\r\n /**\r\n * Whether the coordinates are inside Moveable\r\n * @method Moveable#isInside\r\n * @param - x coordinate\r\n * @param - y coordinate\r\n * @return - True if the coordinate is in moveable or false\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * document.body.addEventListener(\"mousedown\", e => {\r\n * if (moveable.isInside(e.clientX, e.clientY)) {\r\n * console.log(\"inside\");\r\n * }\r\n * });\r\n */\r\n\r\n\r\n __proto.isInside = function (clientX, clientY) {\r\n var _a = this.state,\r\n target = _a.target,\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n pos3 = _a.pos3,\r\n pos4 = _a.pos4,\r\n targetClientRect = _a.targetClientRect;\r\n\r\n if (!target) {\r\n return false;\r\n }\r\n\r\n return isInside([clientX, clientY], fitPoints([pos1, pos2, pos4, pos3], targetClientRect));\r\n };\r\n /**\r\n * If the width, height, left, and top of all elements change, update the shape of the moveable.\r\n * @method Moveable#updateRect\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * window.addEventListener(\"resize\", e => {\r\n * moveable.updateRect();\r\n * });\r\n */\r\n\r\n\r\n __proto.updateRect = function (type, isTarget, isSetState) {\r\n if (isSetState === void 0) {\r\n isSetState = true;\r\n }\r\n\r\n var props = this.props;\r\n var parentMoveable = props.parentMoveable;\r\n var state = this.state;\r\n var target = state.target || this.props.target;\r\n var container = this.getContainer();\r\n var rootContainer = parentMoveable ? parentMoveable.props.rootContainer : props.rootContainer;\r\n this.updateState(getTargetInfo(this.controlBox && this.controlBox.getElement(), target, container, container, rootContainer || container), parentMoveable ? false : isSetState);\r\n };\r\n\r\n __proto.isTargetChanged = function (prevProps, useDragArea) {\r\n var props = this.props;\r\n var target = props.dragTarget || props.target;\r\n var prevTarget = prevProps.dragTarget || prevProps.target;\r\n var dragArea = props.dragArea;\r\n var prevDragArea = prevProps.dragArea;\r\n var isTargetChanged = !dragArea && prevTarget !== target;\r\n return isTargetChanged || (useDragArea || dragArea) && prevDragArea !== dragArea;\r\n };\r\n\r\n __proto.updateNativeEvents = function (prevProps) {\r\n var _this = this;\r\n\r\n var props = this.props;\r\n var target = props.dragArea ? this.areaElement : this.state.target;\r\n var events = this.events;\r\n var eventKeys = getKeys(events);\r\n\r\n if (this.isTargetChanged(prevProps)) {\r\n for (var eventName in events) {\r\n var manager = events[eventName];\r\n manager && manager.destroy();\r\n events[eventName] = null;\r\n }\r\n }\r\n\r\n if (!target) {\r\n return;\r\n }\r\n\r\n var enabledAbles = this.enabledAbles;\r\n eventKeys.forEach(function (eventName) {\r\n var ables = filterAbles(enabledAbles, [eventName]);\r\n var hasAbles = ables.length > 0;\r\n var manager = events[eventName];\r\n\r\n if (!hasAbles) {\r\n if (manager) {\r\n manager.destroy();\r\n events[eventName] = null;\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (!manager) {\r\n manager = new EventManager(target, _this, eventName);\r\n events[eventName] = manager;\r\n }\r\n\r\n manager.setAbles(ables);\r\n });\r\n };\r\n\r\n __proto.updateEvent = function (prevProps) {\r\n var controlBoxElement = this.controlBox.getElement();\r\n var hasTargetAble = this.targetAbles.length;\r\n var hasControlAble = this.controlAbles.length;\r\n var props = this.props;\r\n var target = props.dragTarget || props.target;\r\n var isTargetChanged = this.isTargetChanged(prevProps, true);\r\n var isUnset = !hasTargetAble && this.targetGesto || isTargetChanged;\r\n\r\n if (isUnset) {\r\n unset(this, \"targetGesto\");\r\n this.updateState({\r\n gesto: null\r\n });\r\n }\r\n\r\n if (!hasControlAble) {\r\n unset(this, \"controlGesto\");\r\n }\r\n\r\n if (target && hasTargetAble && !this.targetGesto) {\r\n this.targetGesto = getTargetAbleGesto(this, target, \"\");\r\n }\r\n\r\n if (!this.controlGesto && hasControlAble) {\r\n this.controlGesto = getAbleGesto(this, controlBoxElement, \"controlAbles\", \"Control\");\r\n }\r\n\r\n if (isUnset) {\r\n this.unsetAbles();\r\n }\r\n };\r\n /**\r\n * Check if the moveable state is being dragged.\r\n * @method Moveable#isDragging\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * // false\r\n * console.log(moveable.isDragging());\r\n *\r\n * moveable.on(\"drag\", () => {\r\n * // true\r\n * console.log(moveable.isDragging());\r\n * });\r\n */\r\n\r\n\r\n __proto.isDragging = function () {\r\n return (this.targetGesto ? this.targetGesto.isFlag() : false) || (this.controlGesto ? this.controlGesto.isFlag() : false);\r\n };\r\n /**\r\n * If the width, height, left, and top of the only target change, update the shape of the moveable.\r\n * @method Moveable#updateTarget\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.updateTarget();\r\n */\r\n\r\n\r\n __proto.updateTarget = function (type) {\r\n this.updateRect(type, true);\r\n };\r\n /**\r\n * You can get the vertex information, position and offset size information of the target based on the container.\r\n * @method Moveable#getRect\r\n * @return - The Rect Info\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * const rectInfo = moveable.getRect();\r\n */\r\n\r\n\r\n __proto.getRect = function () {\r\n var state = this.state;\r\n var poses = getAbsolutePosesByState(this.state);\r\n var pos1 = poses[0],\r\n pos2 = poses[1],\r\n pos3 = poses[2],\r\n pos4 = poses[3];\r\n var rect = getRect(poses);\r\n var offsetWidth = state.width,\r\n offsetHeight = state.height;\r\n var width = rect.width,\r\n height = rect.height,\r\n left = rect.left,\r\n top = rect.top;\r\n var statePos = [state.left, state.top];\r\n var origin = plus(statePos, state.origin);\r\n var beforeOrigin = plus(statePos, state.beforeOrigin);\r\n var transformOrigin = state.transformOrigin;\r\n return {\r\n width: width,\r\n height: height,\r\n left: left,\r\n top: top,\r\n pos1: pos1,\r\n pos2: pos2,\r\n pos3: pos3,\r\n pos4: pos4,\r\n offsetWidth: offsetWidth,\r\n offsetHeight: offsetHeight,\r\n beforeOrigin: beforeOrigin,\r\n origin: origin,\r\n transformOrigin: transformOrigin,\r\n rotation: this.getRotation()\r\n };\r\n };\r\n /**\r\n * Get a manager that manages the moveable's state and props.\r\n * @method Moveable#getManager\r\n * @return - The Rect Info\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * const manager = moveable.getManager(); // real moveable class instance\r\n */\r\n\r\n\r\n __proto.getManager = function () {\r\n return this;\r\n };\r\n\r\n __proto.getRotation = function () {\r\n var _a = this.state,\r\n pos1 = _a.pos1,\r\n pos2 = _a.pos2,\r\n direction = _a.direction;\r\n return getAbsoluteRotation(pos1, pos2, direction);\r\n };\r\n /**\r\n * Request able through a method rather than an event.\r\n * At the moment of execution, requestStart is executed,\r\n * and then request and requestEnd can be executed through Requester.\r\n * @method Moveable#request\r\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Draggable.html#request|Draggable Requester}\r\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Resizable.html#request|Resizable Requester}\r\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Scalable.html#request|Scalable Requester}\r\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Rotatable.html#request|Rotatable Requester}\r\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.OriginDraggable.html#request|OriginDraggable Requester}\r\n * @param - ableName\r\n * @param - request to be able params.\r\n * @param - If isInstant is true, request and requestEnd are executed immediately.\r\n * @return - Able Requester. If there is no request in able, nothing will work.\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * // Instantly Request (requestStart - request - requestEnd)\r\n * moveable.request(\"draggable\", { deltaX: 10, deltaY: 10 }, true);\r\n *\r\n * // Start move\r\n * const requester = moveable.request(\"draggable\");\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.request({ deltaX: 10, deltaY: 10 });\r\n * requester.requestEnd();\r\n */\r\n\r\n\r\n __proto.request = function (ableName, param, isInstant) {\r\n if (param === void 0) {\r\n param = {};\r\n }\r\n\r\n var _a = this.props,\r\n ables = _a.ables,\r\n groupable = _a.groupable;\r\n var requsetAble = ables.filter(function (able) {\r\n return able.name === ableName;\r\n })[0];\r\n\r\n if (this.isDragging() || !requsetAble || !requsetAble.request) {\r\n return {\r\n request: function () {\r\n return this;\r\n },\r\n requestEnd: function () {\r\n return this;\r\n }\r\n };\r\n }\r\n\r\n var self = this;\r\n var ableRequester = requsetAble.request(this);\r\n var requestInstant = isInstant || param.isInstant;\r\n var ableType = ableRequester.isControl ? \"controlAbles\" : \"targetAbles\";\r\n var eventAffix = \"\" + (groupable ? \"Group\" : \"\") + (ableRequester.isControl ? \"Control\" : \"\");\r\n var requester = {\r\n request: function (ableParam) {\r\n triggerAble(self, ableType, \"drag\", eventAffix, \"\", __assign$2(__assign$2({}, ableRequester.request(ableParam)), {\r\n requestAble: ableName,\r\n isRequest: true\r\n }), requestInstant);\r\n return this;\r\n },\r\n requestEnd: function () {\r\n triggerAble(self, ableType, \"drag\", eventAffix, \"End\", __assign$2(__assign$2({}, ableRequester.requestEnd()), {\r\n requestAble: ableName,\r\n isRequest: true\r\n }), requestInstant);\r\n return this;\r\n }\r\n };\r\n triggerAble(self, ableType, \"drag\", eventAffix, \"Start\", __assign$2(__assign$2({}, ableRequester.requestStart(param)), {\r\n requestAble: ableName,\r\n isRequest: true\r\n }), requestInstant);\r\n return requestInstant ? requester.request(param).requestEnd() : requester;\r\n };\r\n /**\r\n * Remove the Moveable object and the events.\r\n * @method Moveable#destroy\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n *\r\n * moveable.destroy();\r\n */\r\n\r\n\r\n __proto.destroy = function () {\r\n this.componentWillUnmount();\r\n };\r\n\r\n __proto.updateRenderPoses = function () {\r\n var state = this.state;\r\n var props = this.props;\r\n var originalBeforeOrigin = state.originalBeforeOrigin,\r\n transformOrigin = state.transformOrigin,\r\n allMatrix = state.allMatrix,\r\n is3d = state.is3d,\r\n pos1 = state.pos1,\r\n pos2 = state.pos2,\r\n pos3 = state.pos3,\r\n pos4 = state.pos4,\r\n stateLeft = state.left,\r\n stateTop = state.top;\r\n\r\n var _a = props.padding || {},\r\n _b = _a.left,\r\n left = _b === void 0 ? 0 : _b,\r\n _c = _a.top,\r\n top = _c === void 0 ? 0 : _c,\r\n _d = _a.bottom,\r\n bottom = _d === void 0 ? 0 : _d,\r\n _e = _a.right,\r\n right = _e === void 0 ? 0 : _e;\r\n\r\n var n = is3d ? 4 : 3;\r\n var absoluteOrigin = props.groupable ? originalBeforeOrigin : plus(originalBeforeOrigin, [stateLeft, stateTop]);\r\n state.renderPoses = [plus(pos1, calculatePadding(allMatrix, [-left, -top], transformOrigin, absoluteOrigin, n)), plus(pos2, calculatePadding(allMatrix, [right, -top], transformOrigin, absoluteOrigin, n)), plus(pos3, calculatePadding(allMatrix, [-left, bottom], transformOrigin, absoluteOrigin, n)), plus(pos4, calculatePadding(allMatrix, [right, bottom], transformOrigin, absoluteOrigin, n))];\r\n };\r\n\r\n __proto.checkUpdate = function () {\r\n var _a = this.props,\r\n target = _a.target,\r\n container = _a.container,\r\n parentMoveable = _a.parentMoveable;\r\n var _b = this.state,\r\n stateTarget = _b.target,\r\n stateContainer = _b.container;\r\n\r\n if (!stateTarget && !target) {\r\n return;\r\n }\r\n\r\n this.updateAbles();\r\n var isChanged = !equals(stateTarget, target) || !equals(stateContainer, container);\r\n\r\n if (!isChanged) {\r\n return;\r\n }\r\n\r\n this.updateState({\r\n target: target,\r\n container: container\r\n });\r\n\r\n if (!parentMoveable && (container || this.controlBox)) {\r\n this.updateRect(\"End\", false, false);\r\n }\r\n };\r\n\r\n __proto.triggerEvent = function (name, e) {\r\n var callback = this.props[name];\r\n return callback && callback(e);\r\n };\r\n\r\n __proto.useCSS = function (tag, css) {\r\n var customStyleMap = this.props.customStyledMap;\r\n var key = tag + css;\r\n\r\n if (!customStyleMap[key]) {\r\n customStyleMap[key] = styled(tag, css);\r\n }\r\n\r\n return customStyleMap[key];\r\n };\r\n\r\n __proto.unsetAbles = function () {\r\n var _this = this;\r\n\r\n if (this.targetAbles.filter(function (able) {\r\n if (able.unset) {\r\n able.unset(_this);\r\n return true;\r\n }\r\n\r\n return false;\r\n }).length) {\r\n this.forceUpdate();\r\n }\r\n };\r\n\r\n __proto.updateAbles = function (ables, eventAffix) {\r\n if (ables === void 0) {\r\n ables = this.props.ables;\r\n }\r\n\r\n if (eventAffix === void 0) {\r\n eventAffix = \"\";\r\n }\r\n\r\n var props = this.props;\r\n var triggerAblesSimultaneously = props.triggerAblesSimultaneously;\r\n var enabledAbles = ables.filter(function (able) {\r\n return able && (able.always || props[able.name]);\r\n });\r\n var dragStart = \"drag\" + eventAffix + \"Start\";\r\n var pinchStart = \"pinch\" + eventAffix + \"Start\";\r\n var dragControlStart = \"drag\" + eventAffix + \"ControlStart\";\r\n var targetAbles = filterAbles(enabledAbles, [dragStart, pinchStart], triggerAblesSimultaneously);\r\n var controlAbles = filterAbles(enabledAbles, [dragControlStart], triggerAblesSimultaneously);\r\n this.enabledAbles = enabledAbles;\r\n this.targetAbles = targetAbles;\r\n this.controlAbles = controlAbles;\r\n };\r\n\r\n __proto.updateState = function (nextState, isSetState) {\r\n if (isSetState) {\r\n this.setState(nextState);\r\n } else {\r\n var state = this.state;\r\n\r\n for (var name in nextState) {\r\n state[name] = nextState[name];\r\n }\r\n }\r\n };\r\n\r\n __proto.getEnabledAbles = function () {\r\n var props = this.props;\r\n var ables = props.ables;\r\n return ables.filter(function (able) {\r\n return able && props[able.name];\r\n });\r\n };\r\n\r\n __proto.renderAbles = function () {\r\n var _this = this;\r\n\r\n var props = this.props;\r\n var triggerAblesSimultaneously = props.triggerAblesSimultaneously;\r\n var Renderer = {\r\n createElement: createElement\r\n };\r\n return groupByMap(flat(filterAbles(this.getEnabledAbles(), [\"render\"], triggerAblesSimultaneously).map(function (_a) {\r\n var render = _a.render;\r\n return render(_this, Renderer) || [];\r\n })).filter(function (el) {\r\n return el;\r\n }), function (_a) {\r\n var key = _a.key;\r\n return key;\r\n }).map(function (group) {\r\n return group[0];\r\n });\r\n };\r\n\r\n __proto.updateCheckInput = function () {\r\n this.targetGesto && (this.targetGesto.options.checkInput = this.props.checkInput);\r\n };\r\n\r\n MoveableManager.defaultProps = {\r\n target: null,\r\n dragTarget: null,\r\n container: null,\r\n rootContainer: null,\r\n origin: true,\r\n edge: false,\r\n parentMoveable: null,\r\n wrapperMoveable: null,\r\n parentPosition: null,\r\n portalContainer: null,\r\n ables: [],\r\n pinchThreshold: 20,\r\n dragArea: false,\r\n passDragArea: false,\r\n transformOrigin: \"\",\r\n className: \"\",\r\n zoom: 1,\r\n triggerAblesSimultaneously: false,\r\n padding: {},\r\n pinchOutside: true,\r\n checkInput: false,\r\n groupable: false,\r\n cspNonce: \"\",\r\n translateZ: 0,\r\n cssStyled: null,\r\n customStyledMap: {},\r\n props: {}\r\n };\r\n return MoveableManager;\r\n }(PureComponent);\r\n /**\r\n * The target to indicate Moveable Control Box.\r\n * @name Moveable#target\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n * moveable.target = document.querySelector(\".target\");\r\n */\r\n\r\n /**\r\n * Zooms in the elements of a moveable. (default: 1)\r\n * @name Moveable#zoom\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n * moveable.zoom = 2;\r\n */\r\n\r\n /**\r\n * Resize, Scale Events at edges\r\n * @name Moveable#edge\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n * moveable.edge = true;\r\n */\r\n\r\n /**\r\n * You can specify the className of the moveable controlbox. (default: \"\")\r\n * @name Moveable#className\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * className: \"\",\r\n * });\r\n *\r\n * moveable.className = \"moveable1\";\r\n */\r\n\r\n /**\r\n * The target(s) to drag Moveable target(s) (default: target)\r\n * @name Moveable#dragTarget\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body);\r\n * moveable.target = document.querySelector(\".target\");\r\n * moveable.dragTarget = document.querySelector(\".dragTarget\");\r\n */\r\n\r\n /**\r\n * `renderStart` event occurs at the first start of all events.\r\n * @memberof Moveable\r\n * @event renderStart\r\n * @param {Moveable.OnRenderStart} - Parameters for the `renderStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: document.querySelector(\".target\"),\r\n * });\r\n * moveable.on(\"renderStart\", ({ target }) => {\r\n * console.log(\"onRenderStart\", target);\r\n * });\r\n */\r\n\r\n /**\r\n * `render` event occurs before the target is drawn on the screen.\r\n * @memberof Moveable\r\n * @event render\r\n * @param {Moveable.OnRender} - Parameters for the `render` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: document.querySelector(\".target\"),\r\n * });\r\n * moveable.on(\"render\", ({ target }) => {\r\n * console.log(\"onRender\", target);\r\n * });\r\n */\r\n\r\n /**\r\n * `renderEnd` event occurs at the end of all events.\r\n * @memberof Moveable\r\n * @event renderEnd\r\n * @param {Moveable.OnRenderEnd} - Parameters for the `renderEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: document.querySelector(\".target\"),\r\n * });\r\n * moveable.on(\"renderEnd\", ({ target }) => {\r\n * console.log(\"onRenderEnd\", target);\r\n * });\r\n */\r\n\r\n /**\r\n * `renderGroupStart` event occurs at the first start of all events in group.\r\n * @memberof Moveable\r\n * @event renderGroupStart\r\n * @param {Moveable.OnRenderGroupStart} - Parameters for the `renderGroupStart` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * });\r\n * moveable.on(\"renderGroupStart\", ({ targets }) => {\r\n * console.log(\"onRenderGroupStart\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * `renderGroup` event occurs before the target is drawn on the screen in group.\r\n * @memberof Moveable\r\n * @event renderGroup\r\n * @param {Moveable.OnRenderGroup} - Parameters for the `renderGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * });\r\n * moveable.on(\"renderGroup\", ({ targets }) => {\r\n * console.log(\"onRenderGroup\", targets);\r\n * });\r\n */\r\n\r\n /**\r\n * `renderGroupEnd` event occurs at the end of all events in group.\r\n * @memberof Moveable\r\n * @event renderGroupEnd\r\n * @param {Moveable.OnRenderGroupEnd} - Parameters for the `renderGroupEnd` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * });\r\n * moveable.on(\"renderGroupEnd\", ({ targets }) => {\r\n * console.log(\"onRenderGroupEnd\", targets);\r\n * });\r\n */\r\n\r\n var Groupable = {\r\n name: \"groupable\",\r\n props: {\r\n defaultGroupRotate: Number,\r\n defaultGroupOrigin: String,\r\n groupable: Boolean\r\n },\r\n events: {},\r\n render: function (moveable, React) {\r\n var targets = moveable.props.targets || [];\r\n moveable.moveables = [];\r\n var _a = moveable.state,\r\n left = _a.left,\r\n top = _a.top;\r\n var position = {\r\n left: left,\r\n top: top\r\n };\r\n return targets.map(function (target, i) {\r\n return React.createElement(MoveableManager$1, {\r\n key: \"moveable\" + i,\r\n ref: refs(moveable, \"moveables\", i),\r\n target: target,\r\n origin: false,\r\n cssStyled: moveable.props.cssStyled,\r\n customStyledMap: moveable.props.customStyledMap,\r\n parentMoveable: moveable,\r\n parentPosition: position\r\n });\r\n });\r\n }\r\n };\r\n\r\n var Clickable = {\r\n name: \"clickable\",\r\n props: {},\r\n events: {\r\n onClick: \"click\",\r\n onClickGroup: \"clickGroup\"\r\n },\r\n always: true,\r\n dragStart: function () {},\r\n dragGroupStart: function (moveable, e) {\r\n e.datas.inputTarget = e.inputEvent && e.inputEvent.target;\r\n },\r\n dragEnd: function (moveable, e) {\r\n var target = moveable.state.target;\r\n var inputEvent = e.inputEvent;\r\n var inputTarget = e.inputTarget;\r\n\r\n if (!inputEvent || !inputTarget || e.isDrag || moveable.isMoveableElement(inputTarget) // External event duplicate target or dragAreaElement\r\n ) {\r\n return;\r\n }\r\n\r\n var containsTarget = target.contains(inputTarget);\r\n triggerEvent(moveable, \"onClick\", fillParams(moveable, e, {\r\n isDouble: e.isDouble,\r\n inputTarget: inputTarget,\r\n isTarget: target === inputTarget,\r\n containsTarget: containsTarget\r\n }));\r\n },\r\n dragGroupEnd: function (moveable, e) {\r\n var inputEvent = e.inputEvent;\r\n var inputTarget = e.inputTarget;\r\n\r\n if (!inputEvent || !inputTarget || e.isDrag || moveable.isMoveableElement(inputTarget) // External event duplicate target or dragAreaElement\r\n || e.datas.inputTarget === inputTarget) {\r\n return;\r\n }\r\n\r\n var targets = moveable.props.targets;\r\n var targetIndex = targets.indexOf(inputTarget);\r\n var isTarget = targetIndex > -1;\r\n var containsTarget = false;\r\n\r\n if (targetIndex === -1) {\r\n targetIndex = findIndex(targets, function (parentTarget) {\r\n return parentTarget.contains(inputTarget);\r\n });\r\n containsTarget = targetIndex > -1;\r\n }\r\n\r\n triggerEvent(moveable, \"onClickGroup\", fillParams(moveable, e, {\r\n isDouble: e.isDouble,\r\n targets: targets,\r\n inputTarget: inputTarget,\r\n targetIndex: targetIndex,\r\n isTarget: isTarget,\r\n containsTarget: containsTarget\r\n }));\r\n }\r\n };\r\n /**\r\n * When you click on the element, the `click` event is called.\r\n * @memberof Moveable\r\n * @event click\r\n * @param {Moveable.OnClick} - Parameters for the `click` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: document.querySelector(\".target\"),\r\n * });\r\n * moveable.on(\"click\", ({ hasTarget, containsTarget, targetIndex }) => {\r\n * // If you click on an element other than the target and not included in the target, index is -1.\r\n * console.log(\"onClickGroup\", target, hasTarget, containsTarget, targetIndex);\r\n * });\r\n */\r\n\r\n /**\r\n * When you click on the element inside the group, the `clickGroup` event is called.\r\n * @memberof Moveable\r\n * @event clickGroup\r\n * @param {Moveable.OnClickGroup} - Parameters for the `clickGroup` event\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * target: [].slice.call(document.querySelectorAll(\".target\")),\r\n * });\r\n * moveable.on(\"clickGroup\", ({ inputTarget, isTarget, containsTarget, targetIndex }) => {\r\n * // If you click on an element other than the target and not included in the target, index is -1.\r\n * console.log(\"onClickGroup\", inputTarget, isTarget, containsTarget, targetIndex);\r\n * });\r\n */\r\n\r\n function getDraggableEvent(e) {\r\n var datas = e.originalDatas.draggable;\r\n\r\n if (!datas) {\r\n e.originalDatas.draggable = {};\r\n datas = e.originalDatas.draggable;\r\n }\r\n\r\n return __assign$2(__assign$2({}, e), {\r\n datas: datas\r\n });\r\n }\r\n\r\n var edgeDraggable = {\r\n name: \"edgeDraggable\",\r\n props: {\r\n edgeDraggable: Boolean\r\n },\r\n events: {},\r\n dragControlCondition: function (e, moveable) {\r\n if (!moveable.props.edgeDraggable || !e.inputEvent) {\r\n return false;\r\n }\r\n\r\n var target = e.inputEvent.target;\r\n return hasClass(target, prefix(\"direction\")) && hasClass(target, prefix(\"line\"));\r\n },\r\n dragControlStart: function (moveable, e) {\r\n return Draggable.dragStart(moveable, getDraggableEvent(e));\r\n },\r\n dragControl: function (moveable, e) {\r\n return Draggable.drag(moveable, getDraggableEvent(e));\r\n },\r\n dragControlEnd: function (moveable, e) {\r\n return Draggable.dragEnd(moveable, getDraggableEvent(e));\r\n },\r\n dragGroupControlCondition: function (e, moveable) {\r\n if (!moveable.props.edgeDraggable || !e.inputEvent) {\r\n return false;\r\n }\r\n\r\n var target = e.inputEvent.target;\r\n return hasClass(target, prefix(\"direction\")) && hasClass(target, prefix(\"line\"));\r\n },\r\n dragGroupControlStart: function (moveable, e) {\r\n return Draggable.dragGroupStart(moveable, getDraggableEvent(e));\r\n },\r\n dragGroupControl: function (moveable, e) {\r\n return Draggable.dragGroup(moveable, getDraggableEvent(e));\r\n },\r\n dragGroupControlEnd: function (moveable, e) {\r\n return Draggable.dragGroupEnd(moveable, getDraggableEvent(e));\r\n },\r\n unset: function (moveable) {\r\n moveable.state.dragInfo = null;\r\n }\r\n };\r\n /**\r\n * Whether to move by dragging the edge line (default: false)\r\n * @name Moveable.Draggable#edgeDraggable\r\n * @example\r\n * import Moveable from \"moveable\";\r\n *\r\n * const moveable = new Moveable(document.body, {\r\n * draggable: true,\r\n * edgeDraggable: false,\r\n * });\r\n *\r\n * moveable.edgeDraggable = true;\r\n */\r\n\r\n var IndividualGroupable = {\r\n name: \"individualGroupable\",\r\n props: {\r\n individualGroupable: Boolean\r\n },\r\n events: {}\r\n };\r\n\r\n var MOVEABLE_ABLES = /*#__PURE__*/[BeforeRenderable, Default, Snappable, Pinchable, Draggable, edgeDraggable, Rotatable, Resizable, Scalable, Warpable, Scrollable, Padding, Origin, OriginDraggable, Clippable, Roundable, Groupable, IndividualGroupable, Clickable, DragArea, Renderable];\r\n var MOVEABLE_EVENTS_PROPS_MAP = /*#__PURE__*/MOVEABLE_ABLES.reduce(function (current, able) {\r\n return __assign$2(__assign$2({}, current), able.events);\r\n }, {});\r\n var MOVEABLE_PROPS_MAP = /*#__PURE__*/MOVEABLE_ABLES.reduce(function (current, able) {\r\n return __assign$2(__assign$2({}, current), able.props);\r\n }, {});\r\n var MOVEABLE_EVENTS_MAP = /*#__PURE__*/invertObject(MOVEABLE_EVENTS_PROPS_MAP);\r\n var MOVEABLE_EVENTS = Object.keys(MOVEABLE_EVENTS_MAP);\r\n var MOVEABLE_PROPS = Object.keys(MOVEABLE_PROPS_MAP);\r\n\r\n function getMaxPos(poses, index) {\r\n return Math.max.apply(Math, poses.map(function (_a) {\r\n var pos1 = _a[0],\r\n pos2 = _a[1],\r\n pos3 = _a[2],\r\n pos4 = _a[3];\r\n return Math.max(pos1[index], pos2[index], pos3[index], pos4[index]);\r\n }));\r\n }\r\n\r\n function getMinPos(poses, index) {\r\n return Math.min.apply(Math, poses.map(function (_a) {\r\n var pos1 = _a[0],\r\n pos2 = _a[1],\r\n pos3 = _a[2],\r\n pos4 = _a[3];\r\n return Math.min(pos1[index], pos2[index], pos3[index], pos4[index]);\r\n }));\r\n }\r\n\r\n function getGroupRect(moveables, rotation) {\r\n if (!moveables.length) {\r\n return [0, 0, 0, 0];\r\n }\r\n\r\n var moveablePoses = moveables.map(function (_a) {\r\n var state = _a.state;\r\n return getAbsolutePosesByState(state);\r\n });\r\n var minX = MAX_NUM;\r\n var minY = MAX_NUM;\r\n var groupWidth = 0;\r\n var groupHeight = 0;\r\n var fixedRotation = throttle(rotation, TINY_NUM);\r\n\r\n if (fixedRotation % 90) {\r\n var rad_1 = fixedRotation / 180 * Math.PI;\r\n var a1_1 = Math.tan(rad_1);\r\n var a2_1 = -1 / a1_1;\r\n var b1MinMax_1 = [MIN_NUM, MAX_NUM];\r\n var b2MinMax_1 = [MIN_NUM, MAX_NUM];\r\n moveablePoses.forEach(function (poses) {\r\n poses.forEach(function (pos) {\r\n // ax + b = y\r\n // b = y - ax\r\n var b1 = pos[1] - a1_1 * pos[0];\r\n var b2 = pos[1] - a2_1 * pos[0];\r\n b1MinMax_1[0] = Math.max(b1MinMax_1[0], b1);\r\n b1MinMax_1[1] = Math.min(b1MinMax_1[1], b1);\r\n b2MinMax_1[0] = Math.max(b2MinMax_1[0], b2);\r\n b2MinMax_1[1] = Math.min(b2MinMax_1[1], b2);\r\n });\r\n });\r\n b1MinMax_1.forEach(function (b1) {\r\n // a1x + b1 = a2x + b2\r\n b2MinMax_1.forEach(function (b2) {\r\n // (a1 - a2)x = b2 - b1\r\n var x = (b2 - b1) / (a1_1 - a2_1);\r\n var y = a1_1 * x + b1;\r\n minX = Math.min(minX, x);\r\n minY = Math.min(minY, y);\r\n });\r\n });\r\n var rotatePoses = moveablePoses.map(function (_a) {\r\n var pos1 = _a[0],\r\n pos2 = _a[1],\r\n pos3 = _a[2],\r\n pos4 = _a[3];\r\n return [rotate(pos1, -rad_1), rotate(pos2, -rad_1), rotate(pos3, -rad_1), rotate(pos4, -rad_1)];\r\n });\r\n groupWidth = getMaxPos(rotatePoses, 0) - getMinPos(rotatePoses, 0);\r\n groupHeight = getMaxPos(rotatePoses, 1) - getMinPos(rotatePoses, 1);\r\n } else {\r\n minX = getMinPos(moveablePoses, 0);\r\n minY = getMinPos(moveablePoses, 1);\r\n groupWidth = getMaxPos(moveablePoses, 0) - minX;\r\n groupHeight = getMaxPos(moveablePoses, 1) - minY;\r\n\r\n if (fixedRotation % 180) {\r\n var changedWidth = groupWidth;\r\n groupWidth = groupHeight;\r\n groupHeight = changedWidth;\r\n }\r\n }\r\n\r\n return [minX, minY, groupWidth, groupHeight];\r\n }\r\n /**\r\n * @namespace Moveable.Group\r\n * @description You can make targets moveable.\r\n */\r\n\r\n\r\n var MoveableGroup =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$1(MoveableGroup, _super);\r\n\r\n function MoveableGroup() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.differ = new ChildrenDiffer();\r\n _this.moveables = [];\r\n _this.transformOrigin = \"50% 50%\";\r\n return _this;\r\n }\r\n\r\n var __proto = MoveableGroup.prototype;\r\n\r\n __proto.updateEvent = function (prevProps) {\r\n var state = this.state;\r\n var props = this.props;\r\n var prevTarget = prevProps.dragTarget || state.target;\r\n var nextTarget = props.dragTarget || this.areaElement;\r\n\r\n if (prevTarget !== nextTarget) {\r\n unset(this, \"targetGesto\");\r\n unset(this, \"controlGesto\");\r\n state.target = null;\r\n }\r\n\r\n if (!state.target) {\r\n state.target = this.areaElement;\r\n this.controlBox.getElement().style.display = \"block\";\r\n this.targetGesto = getTargetAbleGesto(this, nextTarget, \"Group\");\r\n this.controlGesto = getAbleGesto(this, this.controlBox.getElement(), \"controlAbles\", \"GroupControl\");\r\n }\r\n\r\n var isContainerChanged = !equals(prevProps.container, props.container);\r\n\r\n if (isContainerChanged) {\r\n state.container = props.container;\r\n }\r\n\r\n var _a = this.differ.update(props.targets),\r\n added = _a.added,\r\n changed = _a.changed,\r\n removed = _a.removed;\r\n\r\n if (isContainerChanged || added.length || changed.length || removed.length) {\r\n this.updateRect();\r\n }\r\n };\r\n\r\n __proto.checkUpdate = function () {\r\n this.updateAbles();\r\n };\r\n\r\n __proto.updateRect = function (type, isTarget, isSetState) {\r\n if (isSetState === void 0) {\r\n isSetState = true;\r\n }\r\n\r\n if (!this.controlBox) {\r\n return;\r\n }\r\n\r\n this.moveables.forEach(function (moveable) {\r\n moveable.updateRect(type, false, false);\r\n });\r\n var state = this.state;\r\n var props = this.props;\r\n var target = state.target || props.target;\r\n\r\n if (!isTarget || type !== \"\" && props.updateGroup) {\r\n // reset rotataion\r\n this.rotation = props.defaultGroupRotate;\r\n this.transformOrigin = props.defaultGroupOrigin || \"50% 50%\";\r\n this.scale = [1, 1];\r\n }\r\n\r\n var rotation = this.rotation;\r\n var scale = this.scale;\r\n\r\n var _a = getGroupRect(this.moveables, rotation),\r\n left = _a[0],\r\n top = _a[1],\r\n width = _a[2],\r\n height = _a[3]; // tslint:disable-next-line: max-line-length\r\n\r\n\r\n var transform = \"rotate(\" + rotation + \"deg) scale(\" + (scale[0] >= 0 ? 1 : -1) + \", \" + (scale[1] >= 0 ? 1 : -1) + \")\";\r\n target.style.cssText += \"left:0px;top:0px; transform-origin: \" + this.transformOrigin + \"; width:\" + width + \"px; height:\" + height + \"px;\" + (\"transform:\" + transform);\r\n state.width = width;\r\n state.height = height;\r\n var container = this.getContainer();\r\n var info = getTargetInfo(this.controlBox.getElement(), target, this.controlBox.getElement(), this.getContainer(), this.props.rootContainer || container);\r\n var pos = [info.left, info.top];\r\n\r\n var _b = getAbsolutePosesByState(info),\r\n pos1 = _b[0],\r\n pos2 = _b[1],\r\n pos3 = _b[2],\r\n pos4 = _b[3]; // info.left + info.pos(1 ~ 4)\r\n\r\n\r\n var minPos = getMinMaxs([pos1, pos2, pos3, pos4]);\r\n var delta = [minPos.minX, minPos.minY];\r\n info.pos1 = minus(pos1, delta);\r\n info.pos2 = minus(pos2, delta);\r\n info.pos3 = minus(pos3, delta);\r\n info.pos4 = minus(pos4, delta);\r\n info.left = left - info.left + delta[0];\r\n info.top = top - info.top + delta[1];\r\n info.origin = minus(plus(pos, info.origin), delta);\r\n info.beforeOrigin = minus(plus(pos, info.beforeOrigin), delta);\r\n info.originalBeforeOrigin = plus(pos, info.originalBeforeOrigin); // info.transformOrigin = minus(plus(pos, info.transformOrigin!), delta);\r\n\r\n var clientRect = info.targetClientRect;\r\n var direction = scale[0] * scale[1] > 0 ? 1 : -1;\r\n clientRect.top += info.top - state.top;\r\n clientRect.left += info.left - state.left;\r\n target.style.transform = \"translate(\" + -delta[0] + \"px, \" + -delta[1] + \"px) \" + transform;\r\n this.updateState(__assign$2(__assign$2({}, info), {\r\n direction: direction,\r\n beforeDirection: direction\r\n }), isSetState);\r\n };\r\n\r\n __proto.getRect = function () {\r\n return __assign$2(__assign$2({}, _super.prototype.getRect.call(this)), {\r\n children: this.moveables.map(function (child) {\r\n return child.getRect();\r\n })\r\n });\r\n };\r\n\r\n __proto.triggerEvent = function (name, e, isManager) {\r\n if (isManager || name.indexOf(\"Group\") > -1) {\r\n return _super.prototype.triggerEvent.call(this, name, e);\r\n }\r\n };\r\n\r\n __proto.updateAbles = function () {\r\n _super.prototype.updateAbles.call(this, __spreadArrays$1(this.props.ables, [Groupable]), \"Group\");\r\n };\r\n\r\n MoveableGroup.defaultProps = __assign$2(__assign$2({}, MoveableManager$1.defaultProps), {\r\n transformOrigin: [\"50%\", \"50%\"],\r\n groupable: true,\r\n dragArea: true,\r\n keepRatio: true,\r\n targets: [],\r\n defaultGroupRotate: 0,\r\n defaultGroupOrigin: \"50% 50%\"\r\n });\r\n return MoveableGroup;\r\n }(MoveableManager$1);\r\n\r\n /**\r\n * @namespace Moveable.IndividualGroup\r\n * @description Create targets individually, not as a group.Create targets individually, not as a group.\r\n */\r\n\r\n var MoveableIndividualGroup =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$1(MoveableIndividualGroup, _super);\r\n\r\n function MoveableIndividualGroup() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.moveables = [];\r\n return _this;\r\n }\r\n\r\n var __proto = MoveableIndividualGroup.prototype;\r\n\r\n __proto.render = function () {\r\n var _this = this;\r\n\r\n var _a = this.props,\r\n cspNonce = _a.cspNonce,\r\n ControlBoxElement = _a.cssStyled,\r\n targets = _a.targets;\r\n return createElement(ControlBoxElement, {\r\n cspNonce: cspNonce,\r\n ref: ref(this, \"controlBox\"),\r\n className: prefix(\"control-box\")\r\n }, targets.map(function (target, i) {\r\n return createElement(MoveableManager$1, __assign$2({\r\n key: \"moveable\" + i,\r\n ref: refs(_this, \"moveables\", i)\r\n }, _this.props, {\r\n target: target,\r\n wrapperMoveable: _this\r\n }));\r\n }));\r\n };\r\n\r\n __proto.componentDidUpdate = function () {};\r\n\r\n __proto.updateRect = function (type, isTarget, isSetState) {\r\n if (isSetState === void 0) {\r\n isSetState = true;\r\n }\r\n\r\n this.moveables.forEach(function (moveable) {\r\n moveable.updateRect(type, isTarget, isSetState);\r\n });\r\n };\r\n\r\n __proto.getRect = function () {\r\n return __assign$2(__assign$2({}, _super.prototype.getRect.call(this)), {\r\n children: this.moveables.map(function (child) {\r\n return child.getRect();\r\n })\r\n });\r\n };\r\n\r\n __proto.request = function () {\r\n return {\r\n request: function () {\r\n return this;\r\n },\r\n requestEnd: function () {\r\n return this;\r\n }\r\n };\r\n };\r\n\r\n __proto.dragStart = function () {\r\n return this;\r\n };\r\n\r\n __proto.hitTest = function () {\r\n return 0;\r\n };\r\n\r\n __proto.isInside = function () {\r\n return false;\r\n };\r\n\r\n __proto.isDragging = function () {\r\n return false;\r\n };\r\n\r\n __proto.updateRenderPoses = function () {};\r\n\r\n __proto.updateEvent = function () {};\r\n\r\n __proto.checkUpdate = function () {};\r\n\r\n __proto.triggerEvent = function () {};\r\n\r\n __proto.updateAbles = function () {};\r\n\r\n return MoveableIndividualGroup;\r\n }(MoveableManager$1);\r\n\r\n var InitialMoveable =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$1(InitialMoveable, _super);\r\n\r\n function InitialMoveable() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.refTargets = [];\r\n _this.selectorMap = {};\r\n return _this;\r\n }\r\n\r\n var __proto = InitialMoveable.prototype;\r\n\r\n InitialMoveable.makeStyled = function () {\r\n var cssMap = {};\r\n var ables = this.getTotalAbles();\r\n ables.forEach(function (_a) {\r\n var css = _a.css;\r\n\r\n if (!css) {\r\n return;\r\n }\r\n\r\n css.forEach(function (text) {\r\n cssMap[text] = true;\r\n });\r\n });\r\n var style = getKeys(cssMap).join(\"\\n\");\r\n this.defaultStyled = styled(\"div\", prefixCSS(PREFIX, MOVEABLE_CSS + style));\r\n };\r\n\r\n InitialMoveable.getTotalAbles = function () {\r\n return __spreadArrays$1([Default, Groupable, IndividualGroupable, DragArea], this.defaultAbles);\r\n };\r\n\r\n __proto.render = function () {\r\n var moveableContructor = this.constructor;\r\n\r\n if (!moveableContructor.defaultStyled) {\r\n moveableContructor.makeStyled();\r\n }\r\n\r\n var _a = this.props,\r\n userAbles = _a.ables,\r\n userProps = _a.props,\r\n props = __rest(_a, [\"ables\", \"props\"]);\r\n\r\n var refTargets = getRefTargets(props.target || props.targets);\r\n var elementTargets = getElementTargets(refTargets, this.selectorMap);\r\n this.refTargets = refTargets;\r\n var isGroup = elementTargets.length > 1;\r\n var totalAbles = moveableContructor.getTotalAbles();\r\n\r\n var ables = __spreadArrays$1(totalAbles, userAbles || []);\r\n\r\n var nextProps = __assign$2(__assign$2(__assign$2({}, props), userProps || {}), {\r\n ables: ables,\r\n cssStyled: moveableContructor.defaultStyled,\r\n customStyledMap: moveableContructor.customStyledMap\r\n });\r\n\r\n if (isGroup) {\r\n if (props.individualGroupable) {\r\n return createElement(MoveableIndividualGroup, __assign$2({\r\n key: \"individual-group\",\r\n ref: ref(this, \"moveable\")\r\n }, nextProps, {\r\n target: null,\r\n targets: elementTargets\r\n }));\r\n }\r\n\r\n return createElement(MoveableGroup, __assign$2({\r\n key: \"group\",\r\n ref: ref(this, \"moveable\")\r\n }, nextProps, {\r\n target: null,\r\n targets: elementTargets\r\n }));\r\n } else {\r\n return createElement(MoveableManager$1, __assign$2({\r\n key: \"single\",\r\n ref: ref(this, \"moveable\")\r\n }, nextProps, {\r\n target: elementTargets[0]\r\n }));\r\n }\r\n };\r\n\r\n __proto.componentDidMount = function () {\r\n this.updateRefs();\r\n };\r\n\r\n __proto.componentDidUpdate = function () {\r\n this.updateRefs();\r\n };\r\n\r\n __proto.updateRefs = function (isReset) {\r\n var refTargets = getRefTargets(this.props.target || this.props.targets);\r\n var isUpdate = this.refTargets.some(function (target, i) {\r\n var nextTarget = refTargets[i];\r\n\r\n if (!target && !nextTarget) {\r\n return false;\r\n } else if (target !== nextTarget) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n var selectorMap = isReset ? {} : this.selectorMap;\r\n var nextSelectorMap = {};\r\n this.refTargets.forEach(function (target) {\r\n if (isString(target)) {\r\n if (!selectorMap[target]) {\r\n isUpdate = true;\r\n nextSelectorMap[target] = [].slice.call(document.querySelectorAll(target));\r\n } else {\r\n nextSelectorMap[target] = selectorMap[target];\r\n }\r\n }\r\n });\r\n this.selectorMap = nextSelectorMap;\r\n\r\n if (isUpdate) {\r\n this.forceUpdate();\r\n }\r\n };\r\n\r\n __proto.getManager = function () {\r\n return this.moveable;\r\n };\r\n\r\n InitialMoveable.defaultAbles = [];\r\n InitialMoveable.customStyledMap = {};\r\n InitialMoveable.defaultStyled = null;\r\n\r\n __decorate$1([withMethods(MOVEABLE_METHODS)], InitialMoveable.prototype, \"moveable\", void 0);\r\n\r\n return InitialMoveable;\r\n }(PureComponent);\r\n\r\n var Moveable$1 =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends$1(Moveable, _super);\r\n\r\n function Moveable() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n\r\n Moveable.defaultAbles = MOVEABLE_ABLES;\r\n return Moveable;\r\n }(InitialMoveable);\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: moveable\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/moveable.git\r\n version: 0.24.5\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n }\r\n\r\n var InnerMoveable =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends(InnerMoveable, _super);\r\n\r\n function InnerMoveable(props) {\r\n var _this = _super.call(this, props) || this;\r\n\r\n _this.state = {};\r\n _this.state = _this.props;\r\n return _this;\r\n }\r\n\r\n var __proto = InnerMoveable.prototype;\r\n\r\n __proto.render = function () {\r\n return createPortal(createElement(Moveable$1, __assign({\r\n ref: ref(this, \"moveable\")\r\n }, this.state)), this.state.parentElement);\r\n };\r\n\r\n return InnerMoveable;\r\n }(Component);\r\n\r\n var PROPERTIES = MOVEABLE_PROPS;\r\n var METHODS = MOVEABLE_METHODS;\r\n var EVENTS = MOVEABLE_EVENTS;\r\n\r\n /*\r\n Copyright (c) 2019 Daybrush\r\n name: @scena/event-emitter\r\n license: MIT\r\n author: Daybrush\r\n repository: git+https://github.com/daybrush/gesture.git\r\n version: 1.0.3\r\n */\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n var __assign$1 = function () {\r\n __assign$1 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n\r\n return t;\r\n };\r\n\r\n return __assign$1.apply(this, arguments);\r\n };\r\n function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\r\n\r\n return r;\r\n }\r\n\r\n /**\r\n * Implement EventEmitter on object or component.\r\n */\r\n\r\n var EventEmitter =\r\n /*#__PURE__*/\r\n function () {\r\n function EventEmitter() {\r\n this._events = {};\r\n }\r\n /**\r\n * Add a listener to the registered event.\r\n * @param - Name of the event to be added\r\n * @param - listener function of the event to be added\r\n * @example\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n * cosnt emitter = new EventEmitter();\r\n *\r\n * // Add listener in \"a\" event\r\n * emitter.on(\"a\", () => {\r\n * });\r\n * // Add listeners\r\n * emitter.on({\r\n * a: () => {},\r\n * b: () => {},\r\n * });\r\n */\r\n\r\n\r\n var __proto = EventEmitter.prototype;\r\n\r\n __proto.on = function (eventName, listener) {\r\n if (isObject(eventName)) {\r\n for (var name in eventName) {\r\n this.on(name, eventName[name]);\r\n }\r\n } else {\r\n this._addEvent(eventName, listener, {});\r\n }\r\n\r\n return this;\r\n };\r\n /**\r\n * Remove listeners registered in the event target.\r\n * @param - Name of the event to be removed\r\n * @param - listener function of the event to be removed\r\n * @example\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n * cosnt emitter = new EventEmitter();\r\n *\r\n * // Remove all listeners.\r\n * emitter.off();\r\n *\r\n * // Remove all listeners in \"A\" event.\r\n * emitter.off(\"a\");\r\n *\r\n *\r\n * // Remove \"listener\" listener in \"a\" event.\r\n * emitter.off(\"a\", listener);\r\n */\r\n\r\n\r\n __proto.off = function (eventName, listener) {\r\n if (!eventName) {\r\n this._events = {};\r\n } else if (isObject(eventName)) {\r\n for (var name in eventName) {\r\n this.off(name);\r\n }\r\n } else if (!listener) {\r\n this._events[eventName] = [];\r\n } else {\r\n var events = this._events[eventName];\r\n\r\n if (events) {\r\n var index = findIndex(events, function (e) {\r\n return e.listener === listener;\r\n });\r\n\r\n if (index > -1) {\r\n events.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n /**\r\n * Add a disposable listener and Use promise to the registered event.\r\n * @param - Name of the event to be added\r\n * @param - disposable listener function of the event to be added\r\n * @example\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n * cosnt emitter = new EventEmitter();\r\n *\r\n * // Add a disposable listener in \"a\" event\r\n * emitter.once(\"a\", () => {\r\n * });\r\n *\r\n * // Use Promise\r\n * emitter.once(\"a\").then(e => {\r\n * });\r\n */\r\n\r\n\r\n __proto.once = function (eventName, listener) {\r\n var _this = this;\r\n\r\n if (listener) {\r\n this._addEvent(eventName, listener, {\r\n once: true\r\n });\r\n }\r\n\r\n return new Promise(function (resolve) {\r\n _this._addEvent(eventName, resolve, {\r\n once: true\r\n });\r\n });\r\n };\r\n /**\r\n * Fires an event to call listeners.\r\n * @param - Event name\r\n * @param - Event parameter\r\n * @return If false, stop the event.\r\n * @example\r\n *\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n *\r\n *\r\n * const emitter = new EventEmitter();\r\n *\r\n * emitter.on(\"a\", e => {\r\n * });\r\n *\r\n *\r\n * emitter.emit(\"a\", {\r\n * a: 1,\r\n * });\r\n */\r\n\r\n\r\n __proto.emit = function (eventName, param) {\r\n var _this = this;\r\n\r\n if (param === void 0) {\r\n param = {};\r\n }\r\n\r\n var events = this._events[eventName];\r\n\r\n if (!eventName || !events) {\r\n return true;\r\n }\r\n\r\n var isStop = false;\r\n param.eventType = eventName;\r\n\r\n param.stop = function () {\r\n isStop = true;\r\n };\r\n\r\n param.currentTarget = this;\r\n\r\n __spreadArrays(events).forEach(function (info) {\r\n info.listener(param);\r\n\r\n if (info.once) {\r\n _this.off(eventName, info.listener);\r\n }\r\n });\r\n\r\n return !isStop;\r\n };\r\n /**\r\n * Fires an event to call listeners.\r\n * @param - Event name\r\n * @param - Event parameter\r\n * @return If false, stop the event.\r\n * @example\r\n *\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n *\r\n *\r\n * const emitter = new EventEmitter();\r\n *\r\n * emitter.on(\"a\", e => {\r\n * });\r\n *\r\n *\r\n * emitter.emit(\"a\", {\r\n * a: 1,\r\n * });\r\n */\r\n\r\n /**\r\n * Fires an event to call listeners.\r\n * @param - Event name\r\n * @param - Event parameter\r\n * @return If false, stop the event.\r\n * @example\r\n *\r\n * import EventEmitter from \"@scena/event-emitter\";\r\n *\r\n *\r\n * const emitter = new EventEmitter();\r\n *\r\n * emitter.on(\"a\", e => {\r\n * });\r\n *\r\n * // emit\r\n * emitter.trigger(\"a\", {\r\n * a: 1,\r\n * });\r\n */\r\n\r\n\r\n __proto.trigger = function (eventName, param) {\r\n if (param === void 0) {\r\n param = {};\r\n }\r\n\r\n return this.emit(eventName, param);\r\n };\r\n\r\n __proto._addEvent = function (eventName, listener, options) {\r\n var events = this._events;\r\n events[eventName] = events[eventName] || [];\r\n var listeners = events[eventName];\r\n listeners.push(__assign$1({\r\n listener: listener\r\n }, options));\r\n };\r\n\r\n return EventEmitter;\r\n }();\r\n\r\n /**\r\n * Moveable is Draggable! Resizable! Scalable! Rotatable!\r\n * @sort 1\r\n * @alias Moveable\r\n * @extends EventEmitter\r\n */\r\n\r\n var MoveableManager =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends(MoveableManager, _super);\r\n /**\r\n *\r\n */\r\n\r\n\r\n function MoveableManager(parentElement, options) {\r\n if (options === void 0) {\r\n options = {};\r\n }\r\n\r\n var _this = _super.call(this) || this;\r\n\r\n _this.tempElement = document.createElement(\"div\");\r\n\r\n var nextOptions = __assign({\r\n container: parentElement || document.body\r\n }, options);\r\n\r\n var events = {};\r\n EVENTS.forEach(function (name) {\r\n events[camelize(\"on \" + name)] = function (e) {\r\n return _this.trigger(name, e);\r\n };\r\n });\r\n render(createElement(InnerMoveable, __assign({\r\n ref: ref(_this, \"innerMoveable\"),\r\n parentElement: parentElement\r\n }, nextOptions, events)), _this.tempElement);\r\n var target = nextOptions.target;\r\n\r\n if (isArray(target) && target.length > 1) {\r\n _this.updateRect();\r\n }\r\n\r\n return _this;\r\n }\r\n\r\n var __proto = MoveableManager.prototype;\r\n\r\n __proto.setState = function (state, callback) {\r\n this.innerMoveable.setState(state, callback);\r\n };\r\n\r\n __proto.destroy = function () {\r\n render(null, this.tempElement);\r\n this.off();\r\n this.tempElement = null;\r\n this.innerMoveable = null;\r\n };\r\n\r\n __proto.getMoveable = function () {\r\n return this.innerMoveable.moveable;\r\n };\r\n\r\n MoveableManager = __decorate([Properties(METHODS, function (prototype, property) {\r\n if (prototype[property]) {\r\n return;\r\n }\r\n\r\n prototype[property] = function () {\r\n var args = [];\r\n\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n\r\n var self = this.getMoveable();\r\n\r\n if (!self || !self[property]) {\r\n return;\r\n }\r\n\r\n return self[property].apply(self, args);\r\n };\r\n }), Properties(PROPERTIES, function (prototype, property) {\r\n Object.defineProperty(prototype, property, {\r\n get: function () {\r\n return this.getMoveable().props[property];\r\n },\r\n set: function (value) {\r\n var _a;\r\n\r\n this.setState((_a = {}, _a[property] = value, _a));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n })], MoveableManager);\r\n return MoveableManager;\r\n }(EventEmitter);\r\n\r\n var Moveable =\r\n /*#__PURE__*/\r\n function (_super) {\r\n __extends(Moveable, _super);\r\n\r\n function Moveable() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n\r\n return Moveable;\r\n }(MoveableManager);\r\n\r\n var dom$u = new Dom();\r\n var Image = /*#__PURE__*/function () {\r\n function Image(builder) {\r\n var _this2 = this;\r\n\r\n _classCallCheck$1(this, Image);\r\n\r\n this.builder = builder;\r\n var util = new Util(builder);\r\n this.util = util;\r\n var builderStuff = util.builderStuff();\r\n var imageTool = builderStuff.querySelector('#divImageTool');\r\n var imageResizer;\r\n\r\n if (!imageTool) {\r\n var html = \"\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n\\t\\t\\t\\t \\n \\n \\n
\\n\\n \\n
\\n
\\n\\n \\n\\n
\\n \\n
\\n
\\n\\t\\t\\t\\t \\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \");\r\n dom$u.appendHtml(builderStuff, html); // Image Tool (#divImageTool) ~~~~~~~~~~~~\r\n\r\n imageTool = builderStuff.querySelector('#divImageTool');\r\n this.imageTool = imageTool; // Image Resizer (#divImageResizer)\r\n\r\n imageResizer = document.querySelector('#divImageResizer');\r\n this.imageResizer = imageResizer; // moveable\r\n\r\n this.builder.moveable = new Moveable(document.body, {\r\n target: imageResizer,\r\n //document.querySelector('.resizable'),\r\n resizable: true,\r\n throttleResize: 0,\r\n keepRatio: true\r\n }).on('resize', function (_ref) {\r\n var target = _ref.target,\r\n width = _ref.width,\r\n height = _ref.height;\r\n\r\n if (width === 0 || height === 0 || isNaN(width) || isNaN(height)) {\r\n return;\r\n } // hide image tool\r\n\r\n\r\n _this2.imageTool.style.display = ''; // hide element tool\r\n\r\n var elementTool = builderStuff.querySelector('.is-element-tool');\r\n elementTool.style.display = ''; // get active image\r\n\r\n var activeImage = _this2.builder.activeImage;\r\n var bCircular = false;\r\n\r\n if (dom$u.hasClass(activeImage.parentNode, 'img-circular')) {\r\n activeImage = activeImage.parentNode;\r\n bCircular = true;\r\n }\r\n\r\n if (!bCircular) {\r\n activeImage.style.width = \"\".concat(width, \"px\");\r\n activeImage.style.height = 'auto';\r\n } else {\r\n var pl = parseFloat(window.getComputedStyle(activeImage.parentNode).getPropertyValue('padding-left'));\r\n var pr = parseFloat(window.getComputedStyle(activeImage.parentNode).getPropertyValue('padding-right'));\r\n var maxWidth = activeImage.parentNode.offsetWidth - pl - pr;\r\n if (width >= maxWidth) width = maxWidth;\r\n\r\n if (height >= width) {\r\n activeImage.style.width = \"\".concat(width, \"px\");\r\n activeImage.style.height = \"\".concat(width, \"px\");\r\n activeImage.querySelector('img').style.width = \"\".concat(width, \"px\");\r\n activeImage.querySelector('img').style.height = \"\".concat(width, \"px\");\r\n } else {\r\n activeImage.style.width = \"\".concat(width, \"px\");\r\n activeImage.style.height = \"\".concat(height, \"px\");\r\n activeImage.querySelector('img').style.width = \"\".concat(width, \"px\");\r\n activeImage.querySelector('img').style.height = \"\".concat(height, \"px\");\r\n }\r\n } // sync (target = imageResizer)\r\n\r\n\r\n target.style.top = activeImage.getBoundingClientRect().top + window.pageYOffset + 'px';\r\n target.style.left = activeImage.getBoundingClientRect().left + window.pageXOffset + 'px';\r\n target.style.width = activeImage.offsetWidth + 'px';\r\n target.style.height = activeImage.offsetHeight + 'px';\r\n\r\n _this2.repositionHandler(activeImage.offsetWidth, activeImage.offsetHeight); // https://stackoverflow.com/questions/29908261/prevent-text-selection-on-mouse-drag\r\n // prevent text selection\r\n\r\n\r\n if (document.selection) {\r\n document.selection.empty();\r\n } else {\r\n window.getSelection().removeAllRanges();\r\n } // Hide column tool\r\n\r\n\r\n var columnTool = builderStuff.querySelector('.is-column-tool');\r\n dom$u.removeClass(columnTool, 'active');\r\n }).on('resizeEnd', function (_ref2) {\r\n var target = _ref2.target;\r\n var activeImage = _this2.builder.activeImage;\r\n var bCircular = false;\r\n\r\n if (dom$u.hasClass(activeImage.parentNode, 'img-circular')) {\r\n activeImage = activeImage.parentNode;\r\n bCircular = true;\r\n } //target = imageResizer\r\n // var originalWidth = target.getAttribute('data-width');\r\n // var currentWidth = activeImage.offsetWidth;\r\n // var percentage = (currentWidth / originalWidth) * 100;\r\n // activeImage.style.width = percentage + '%';\r\n // https://stackoverflow.com/questions/25197184/get-the-height-of-an-element-minus-padding-margin-border-widths\r\n\r\n\r\n var cs = getComputedStyle(activeImage.parentNode);\r\n var paddingX = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight); //var paddingY = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom);\r\n\r\n var borderX = parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth); //var borderY = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth);\r\n // Element width and height minus padding and border\r\n\r\n var elementWidth = activeImage.parentNode.offsetWidth - paddingX - borderX; //var elementHeight = activeImage.parentNode.offsetHeight - paddingY - borderY;\r\n\r\n if (!bCircular) {\r\n var parentWidth = elementWidth; //activeImage.parentNode.offsetWidth;\r\n\r\n var currentWidth = activeImage.offsetWidth;\r\n var percentage = currentWidth / parentWidth * 100;\r\n activeImage.style.width = percentage + '%';\r\n }\r\n\r\n if (_this2.builder.opts.emailMode) {\r\n //activeImage.setAttribute('width', percentage + '%');\r\n activeImage.setAttribute('width', currentWidth);\r\n }\r\n\r\n target.setAttribute('data-resized', 1);\r\n setTimeout(function () {\r\n target.setAttribute('data-resized', 0);\r\n }, 300); //Trigger Change event\r\n\r\n _this2.builder.opts.onChange(); // Show column tool\r\n\r\n\r\n var columnTool = builderStuff.querySelector('.is-column-tool');\r\n dom$u.addClass(columnTool, 'active');\r\n });\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n imageResizer.addEventListener('click', function () {\r\n _this2.repositionImageTool();\r\n\r\n _this2.builder.elmTool.repositionElementTool();\r\n }); // Browse local image\r\n\r\n var elm = imageTool.querySelector('#fileEmbedImage');\r\n dom$u.addEventListener(elm, 'change', function (e) {\r\n _this2.builder.uo.saveForUndo();\r\n\r\n var input = e.target;\r\n var img = _this2.builder.activeImage;\r\n /*\r\n var canvas = document.getElementById('Canvas'),\r\n context = canvas.getContext('2d');\r\n var reader = new FileReader();\r\n reader.addEventListener(\"load\", (e)=>{\r\n var src_image = document.querySelector('#_preview');\r\n src_image.addEventListener(\"load\", ()=>{\r\n canvas.height = src_image.height;\r\n canvas.width = src_image.width;\r\n context.drawImage(src_image, 0, 0);\r\n var imageData = canvas.toDataURL(\"image/png\"); \r\n img.src = imageData;\r\n });\r\n src_image.src = e.target.result;\r\n });\r\n reader.readAsDataURL(input.files[0]);\r\n return;\r\n */\r\n //imageTool.style.display = 'none';\r\n\r\n var imageProgress = builderStuff.querySelector('#divImageProgress');\r\n imageProgress.style.display = 'table';\r\n imageProgress.style.width = img.offsetWidth + 'px';\r\n imageProgress.style.height = img.offsetHeight + 'px';\r\n imageProgress.style.top = img.getBoundingClientRect().top + window.pageYOffset + 'px';\r\n imageProgress.style.left = img.getBoundingClientRect().left + window.pageXOffset + 'px'; //The #fileEmbedImage triggered 2 times in IE (because of clearInputs below). This makes input.files[0].name returns error on 2nd trigger. Just add try{}!\r\n\r\n try {\r\n img.setAttribute('data-filename', input.files[0].name); //needed for saveimage.js | \r\n\r\n _this2.processImage(input.files[0], img, function () {\r\n imageProgress.style.display = 'none';\r\n elm = imageTool.querySelector('#fileEmbedImage');\r\n elm.value = ''; //clear input\r\n //Check if image is part of module snippet. If so, refresh the (active) module (hide imageTool). If not, refresh imageTool position\r\n\r\n _this2.refreshIfIsModule(img); //Trigger Change event\r\n\r\n\r\n _this2.builder.opts.onChange();\r\n\r\n _this2.builder.elmTool.refresh();\r\n });\r\n } catch (e) {\r\n imageProgress.style.display = 'none';\r\n }\r\n }); // Trigger onImageBrowseClick (if set), will cancel browsing local image\r\n\r\n if (this.builder.opts.onImageBrowseClick) {\r\n elm = imageTool.querySelector('.image-embed');\r\n dom$u.addEventListener(elm, 'click', function (e) {\r\n _this2.builder.opts.onImageBrowseClick();\r\n\r\n e.preventDefault();\r\n return false;\r\n });\r\n } // Image Link Dialog (.is-modal.imagelink) ~~~~~~~~~~~~\r\n\r\n\r\n var modalImageLink = builderStuff.querySelector('.imagelink');\r\n\r\n if (this.builder.opts.largerImageHandler === '') {\r\n modalImageLink.querySelector('.image-larger1').style.display = 'none';\r\n modalImageLink.querySelector('.image-larger2').style.display = 'none';\r\n }\r\n\r\n if (!this.builder.opts.onImageSelectClick && this.builder.opts.imageselect === '') {\r\n modalImageLink.querySelector('.input-select').style.display = 'none';\r\n } // Open Link dialog. Old: 9886\r\n\r\n\r\n elm = imageTool.querySelector('.image-link');\r\n dom$u.addEventListener(elm, 'click', function () {\r\n //imageTool.style.display = 'none';\r\n document.querySelector('.moveable-control-box').style.display = 'none'; //needed by Safari (prevent z-index problem)\r\n\r\n if (_this2.builder.opts.onImageSettingClick) {\r\n _this2.builder.opts.onImageSettingClick();\r\n\r\n return false;\r\n }\r\n\r\n var img = _this2.builder.activeImage;\r\n var lnk;\r\n\r\n if (img.parentNode.tagName.toLowerCase() === 'a' && img.parentNode.childElementCount === 1) {\r\n lnk = img.parentNode;\r\n } //get values\r\n\r\n\r\n var src = img.getAttribute('src'); //img.src;\r\n\r\n var title = img.getAttribute('alt');\r\n var inputSrc = modalImageLink.querySelector('.input-src');\r\n\r\n if (src.indexOf('base64') === -1) {\r\n inputSrc.value = src;\r\n } else {\r\n inputSrc.value = '[Image Data]';\r\n }\r\n\r\n var inputTitle = modalImageLink.querySelector('.input-title');\r\n inputTitle.value = title;\r\n var inputLink = modalImageLink.querySelector('.input-link');\r\n inputLink.value = '';\r\n var inputTarget = modalImageLink.querySelector('.input-newwindow');\r\n inputTarget.checked = false;\r\n\r\n if (lnk) {\r\n inputLink.value = lnk.getAttribute('href');\r\n\r\n if (title === '') {\r\n var lnkTitle = lnk.getAttribute('title');\r\n if (lnkTitle) inputTitle.value = lnkTitle;\r\n }\r\n\r\n var target = lnk.getAttribute('target');\r\n\r\n if (target === '_blank') {\r\n inputTarget.checked = true;\r\n } else {\r\n inputTarget.checked = false;\r\n }\r\n }\r\n\r\n util.showModal(modalImageLink, true, null, true);\r\n inputSrc.focus();\r\n }); // Cancel\r\n\r\n elm = modalImageLink.querySelector('.input-cancel');\r\n dom$u.addEventListener(elm, 'click', function () {\r\n util.hideModal(modalImageLink);\r\n document.querySelector('.moveable-control-box').style.display = 'block'; //needed by Safari (prevent z-index problem)\r\n }); // Apply link to image\r\n\r\n elm = modalImageLink.querySelector('.input-ok');\r\n dom$u.addEventListener(elm, 'click', function () {\r\n _this2.builder.uo.saveForUndo();\r\n\r\n var img = _this2.builder.activeImage;\r\n var lnk;\r\n\r\n if (img.parentNode.tagName.toLowerCase() === 'a' && img.parentNode.childElementCount === 1) {\r\n lnk = img.parentNode;\r\n }\r\n\r\n var src = modalImageLink.querySelector('.input-src').value;\r\n var title = modalImageLink.querySelector('.input-title').value;\r\n var link = modalImageLink.querySelector('.input-link').value;\r\n\r\n if (src.indexOf('[Image Data]') === -1) {\r\n img.setAttribute('src', src);\r\n }\r\n\r\n img.setAttribute('alt', title);\r\n\r\n if (link !== '') {\r\n if (lnk) {\r\n lnk.setAttribute('href', link);\r\n lnk.setAttribute('title', title);\r\n\r\n if (modalImageLink.querySelector('.input-newwindow').checked) {\r\n lnk.setAttribute('target', '_blank');\r\n } else {\r\n lnk.removeAttribute('target');\r\n }\r\n\r\n if (link.toLowerCase().indexOf('.jpg') !== -1 || link.toLowerCase().indexOf('.jpeg') !== -1 || link.toLowerCase().indexOf('.png') !== -1 || link.toLowerCase().indexOf('.gif') !== -1) {\r\n dom$u.addClass(lnk, 'is-lightbox');\r\n } else {\r\n dom$u.removeClass(lnk, 'is-lightbox');\r\n }\r\n } else {\r\n //Create link\r\n lnk = dom$u.createElement('a');\r\n lnk.setAttribute('href', link);\r\n lnk.setAttribute('title', title);\r\n lnk.innerHTML = img.outerHTML;\r\n\r\n if (modalImageLink.querySelector('.input-newwindow').checked) {\r\n lnk.setAttribute('target', '_blank');\r\n } else {\r\n lnk.removeAttribute('target');\r\n }\r\n\r\n if (link.toLowerCase().indexOf('.jpg') !== -1 || link.toLowerCase().indexOf('.jpeg') !== -1 || link.toLowerCase().indexOf('.png') !== -1 || link.toLowerCase().indexOf('.gif') !== -1) {\r\n dom$u.addClass(lnk, 'is-lightbox');\r\n } else {\r\n dom$u.removeClass(lnk, 'is-lightbox');\r\n }\r\n\r\n img.outerHTML = lnk.outerHTML;\r\n }\r\n } else {\r\n if (lnk) {\r\n //Remove link\r\n lnk.outerHTML = lnk.innerHTML;\r\n }\r\n } //Check if image is part of module snippet. If so, refresh the (active) module (hide imageTool). If not, refresh imageTool position\r\n\r\n\r\n _this2.refreshIfIsModule(img); //Trigger Change event\r\n\r\n\r\n _this2.builder.opts.onChange(); //Trigger Render event\r\n\r\n\r\n _this2.builder.opts.onRender();\r\n\r\n util.hideModal(modalImageLink);\r\n\r\n _this2.builder.elmTool.refresh();\r\n }); // Select image (opens Asset Manager plugin or custom dialog)\r\n\r\n var divImageSrc = modalImageLink.querySelector('.image-src');\r\n\r\n if (this.builder.opts.onImageSelectClick || this.builder.opts.imageselect) {\r\n elm = modalImageLink.querySelector('.input-select');\r\n if (elm) dom$u.addEventListener(elm, 'click', function () {\r\n if (_this2.builder.opts.onImageSelectClick) {\r\n _this2.builder.opts.onImageSelectClick({\r\n targetInput: modalImageLink.querySelector('.input-src'),\r\n theTrigger: elm\r\n });\r\n } else {\r\n var modalImageSelect = builderStuff.querySelector('.is-modal.imageselect');\r\n var iframe = modalImageSelect.querySelector('iframe');\r\n\r\n if (iframe.src === 'about:blank') {\r\n iframe.src = _this2.builder.opts.imageselect;\r\n }\r\n\r\n util.showModal(modalImageSelect);\r\n }\r\n });\r\n } else {\r\n dom$u.removeClass(divImageSrc, 'image-select');\r\n }\r\n\r\n var fileLargerImage1 = modalImageLink.querySelector('#fileImage1');\r\n dom$u.addEventListener(fileLargerImage1, 'change', function (e) {\r\n var element = fileLargerImage1;\r\n\r\n while (element.nodeName.toLowerCase() !== 'form') {\r\n element = element.parentNode;\r\n }\r\n\r\n var frmUpload = element;\r\n dom$u.addClass(frmUpload, 'please-wait');\r\n modalImageLink.querySelector('#hidRefId1').value = _this2.builder.opts.customval; // frmUpload.submit();\r\n\r\n if (_this2.builder.opts.onLargerImageUpload) {\r\n _this2.builder.opts.onLargerImageUpload(e);\r\n } else {\r\n frmUpload.submit();\r\n }\r\n });\r\n var fileLargerImage2 = modalImageLink.querySelector('#fileImage2');\r\n dom$u.addEventListener(fileLargerImage2, 'change', function (e) {\r\n var element = fileLargerImage2;\r\n\r\n while (element.nodeName.toLowerCase() !== 'form') {\r\n element = element.parentNode;\r\n }\r\n\r\n var frmUpload = element;\r\n dom$u.addClass(frmUpload, 'please-wait');\r\n modalImageLink.querySelector('#hidRefId2').value = _this2.builder.opts.customval; // frmUpload.submit();\r\n\r\n if (_this2.builder.opts.onLargerImageUpload) {\r\n _this2.builder.opts.onLargerImageUpload(e);\r\n } else {\r\n frmUpload.submit();\r\n }\r\n }); // Image Edit Dialog (.is-modal.imageedit) ~~~~~~~~~~~~\r\n\r\n var modalImageEdit = builderStuff.querySelector('.imageedit'); // Edit (crop) image\r\n\r\n elm = imageTool.querySelector('.image-edit');\r\n dom$u.addEventListener(elm, 'click', function () {\r\n var img = _this2.builder.activeImage;\r\n util.showModal(modalImageEdit, true);\r\n var preview = modalImageEdit.querySelector('.imageedit-preview');\r\n var maxW = 800;\r\n var maxH = 550;\r\n\r\n if (img.offsetWidth < maxW && img.offsetHeight < maxH) {\r\n preview.style.width = img.offsetWidth + 'px';\r\n } else {\r\n var h = maxW * img.offsetHeight / img.offsetWidth; // test useing maxW\r\n\r\n if (h <= maxH) {\r\n //ok\r\n preview.style.width = maxW + 'px';\r\n } else {\r\n preview.style.height = maxH + 'px';\r\n }\r\n }\r\n\r\n preview.innerHTML = '';\r\n var imagePreview = modalImageEdit.querySelector('img');\r\n imagePreview.src = img.src;\r\n _this2.cropper = new Cropper(imagePreview, {\r\n zoomable: false\r\n });\r\n document.querySelector('.moveable-control-box').style.display = 'none'; //needed by Safari (prevent z-index problem)\r\n }); // Set crop proportion\r\n\r\n var cropOptions = modalImageEdit.querySelector('.imageedit-crop');\r\n var btns = cropOptions.querySelectorAll('button');\r\n Array.prototype.forEach.call(btns, function (btn) {\r\n dom$u.addEventListener(btn, 'click', function () {\r\n var aspectRatio = btn.getAttribute('data-crop-size') * 1;\r\n\r\n _this2.cropper.setAspectRatio(aspectRatio);\r\n });\r\n }); // Cancel image edit\r\n\r\n var btnCancel = modalImageEdit.querySelector('.input-cancel');\r\n dom$u.addEventListener(btnCancel, 'click', function () {\r\n util.hideModal(modalImageEdit);\r\n document.querySelector('.moveable-control-box').style.display = 'block'; //needed by Safari (prevent z-index problem)\r\n }); // Apply (crop) image\r\n\r\n elm = modalImageEdit.querySelector('.input-ok');\r\n dom$u.addEventListener(elm, 'click', function () {\r\n _this2.builder.uo.saveForUndo();\r\n\r\n var img = _this2.builder.activeImage;\r\n var attr = img.getAttribute('data-filename');\r\n var extension = 'jpg';\r\n\r\n if (attr) {\r\n extension = attr.substr(attr.lastIndexOf('.') + 1).toLowerCase();\r\n } else {\r\n // no data-filename found (image from snippets)\r\n var f = img.src;\r\n if (f.indexOf('/') > -1) img.setAttribute('data-filename', f.substr(f.lastIndexOf('/') + 1));else img.setAttribute('data-filename', f);\r\n extension = f.substr(f.lastIndexOf('.') + 1).toLowerCase();\r\n }\r\n\r\n if (extension === 'jpg') {\r\n img.src = _this2.cropper.getCroppedCanvas({\r\n fillColor: '#fff'\r\n }).toDataURL('image/jpeg');\r\n } else {\r\n img.src = _this2.cropper.getCroppedCanvas({}).toDataURL();\r\n } //Check if image is part of module snippet. If so, refresh the (active) module (hide imageTool). If not, refresh imageTool position\r\n\r\n\r\n _this2.refreshIfIsModule(img); //Trigger Change event\r\n\r\n\r\n _this2.builder.opts.onChange();\r\n\r\n util.hideModal(modalImageEdit);\r\n\r\n _this2.builder.elmTool.refresh();\r\n });\r\n }\r\n }\r\n\r\n _createClass$1(Image, [{\r\n key: \"refreshIfIsModule\",\r\n value: function refreshIfIsModule(elm) {\r\n var _this3 = this;\r\n\r\n var isModule = dom$u.parentsHasAttribute(elm, 'data-html');\r\n\r\n if (isModule) {\r\n this.imageTool.style.display = ''; // Extra: make image[data-image-embed] clickable/editable\r\n\r\n if (elm.hasAttribute('data-sync')) {\r\n var originalSrc = elm.getAttribute('data-src');\r\n var originalFilename = elm.getAttribute('data-filename');\r\n\r\n if (originalSrc) {\r\n var element = elm;\r\n\r\n while (!element.getAttribute('data-html')) {\r\n element = element.parentNode;\r\n }\r\n\r\n var module = element;\r\n var imgs = module.querySelectorAll('img');\r\n Array.prototype.forEach.call(imgs, function (img) {\r\n if (img.src === originalSrc) {\r\n img.src = elm.src;\r\n img.removeAttribute('data-src');\r\n img.setAttribute('data-filename', originalFilename);\r\n }\r\n });\r\n elm.removeAttribute('data-src');\r\n }\r\n }\r\n\r\n setTimeout(function () {\r\n _this3.util.refreshModule();\r\n\r\n _this3.imageTool.style.display = '';\r\n }, 1000);\r\n } else {\r\n this.refresh();\r\n }\r\n }\r\n }, {\r\n key: \"refresh\",\r\n value: function refresh() {\r\n var _this4 = this;\r\n\r\n if (this.builder.activeImage) {\r\n var imageTool = this.imageTool;\r\n imageTool.style.display = '';\r\n setTimeout(function () {\r\n var elm = _this4.builder.activeImage;\r\n\r\n if (dom$u.hasClass(elm.parentNode, 'img-circular')) {\r\n elm = elm.parentNode;\r\n }\r\n\r\n imageTool.style.display = 'flex';\r\n var _toolwidth = imageTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n\r\n var w = elm.offsetWidth;\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset;\r\n var left = elm.getBoundingClientRect().left;\r\n left = left + (w / 2 - _toolwidth / 2); //Adjust left in case an element is outside the screen\r\n\r\n var _screenwidth = window.innerWidth;\r\n if (_toolwidth + left > _screenwidth) left = elm.getBoundingClientRect().left;\r\n imageTool.style.top = top + 'px';\r\n imageTool.style.left = left + 'px';\r\n var imageResizer = _this4.imageResizer;\r\n imageResizer.style.top = elm.getBoundingClientRect().top + window.pageYOffset + 'px';\r\n imageResizer.style.left = elm.getBoundingClientRect().left + window.pageXOffset + 'px';\r\n imageResizer.style.width = elm.offsetWidth + 'px';\r\n imageResizer.style.height = elm.offsetHeight + 'px';\r\n imageResizer.style.display = 'block';\r\n\r\n _this4.repositionHandler(elm.offsetWidth, elm.offsetHeight); // moveable\r\n\r\n\r\n _this4.builder.moveable.updateRect();\r\n\r\n document.querySelector('.moveable-control-box').style.display = 'block';\r\n\r\n if (elm.offsetWidth === 0) {\r\n // when there is image link applied\r\n // let imageTool = this.imageTool;\r\n imageTool.style.display = '';\r\n _this4.builder.activeImage = null; // let imageResizer = this.imageResizer;\r\n\r\n imageResizer.style.display = 'none'; // moveable\r\n\r\n imageResizer.style.top = '-10px';\r\n imageResizer.style.left = '-10px';\r\n imageResizer.style.width = '1px';\r\n imageResizer.style.height = '1px';\r\n\r\n _this4.builder.moveable.updateRect();\r\n\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n }\r\n }, 300);\r\n }\r\n }\r\n }, {\r\n key: \"repositionImageTool\",\r\n value: function repositionImageTool() {\r\n // = refresh(), but without delay\r\n if (this.builder.activeImage) {\r\n var imageTool = this.imageTool;\r\n var elm = this.builder.activeImage;\r\n\r\n if (dom$u.hasClass(elm.parentNode, 'img-circular')) {\r\n elm = elm.parentNode;\r\n }\r\n\r\n imageTool.style.display = 'flex';\r\n var _toolwidth = imageTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n\r\n var w = elm.offsetWidth;\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset;\r\n var left = elm.getBoundingClientRect().left;\r\n left = left + (w / 2 - _toolwidth / 2); //Adjust left in case an element is outside the screen\r\n\r\n var _screenwidth = window.innerWidth;\r\n if (_toolwidth + left > _screenwidth) left = elm.getBoundingClientRect().left;\r\n imageTool.style.top = top + 'px';\r\n imageTool.style.left = left + 'px';\r\n var imageResizer = this.imageResizer;\r\n imageResizer.style.top = elm.getBoundingClientRect().top + window.pageYOffset + 'px';\r\n imageResizer.style.left = elm.getBoundingClientRect().left + window.pageXOffset + 'px';\r\n imageResizer.style.width = elm.offsetWidth + 'px';\r\n imageResizer.style.height = elm.offsetHeight + 'px';\r\n imageResizer.style.display = 'block';\r\n this.repositionHandler(elm.offsetWidth, elm.offsetHeight); // moveable\r\n\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'block';\r\n }\r\n }\r\n }, {\r\n key: \"click\",\r\n value: function click(e) {\r\n var elm = e.target; //Image\r\n\r\n if (elm.tagName.toLowerCase() === 'img') {\r\n /* (image must be fixed, cannot be replaced) */\r\n var fixedImage = false;\r\n\r\n if (elm.hasAttribute('data-fixed')) {\r\n fixedImage = true;\r\n }\r\n\r\n if (!fixedImage) {\r\n this.builder.activeImage = elm;\r\n\r\n if (dom$u.hasClass(elm.parentNode, 'img-circular')) {\r\n elm = elm.parentNode;\r\n }\r\n\r\n var imageTool = this.imageTool;\r\n imageTool.style.display = 'flex';\r\n var _toolwidth = imageTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n\r\n var w = elm.offsetWidth;\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset; // let left = elm.getBoundingClientRect().left - 2;\r\n // left = left + (w - _toolwidth);\r\n\r\n var left = elm.getBoundingClientRect().left;\r\n left = left + (w / 2 - _toolwidth / 2); //Adjust left in case an element is outside the screen\r\n\r\n var _screenwidth = window.innerWidth;\r\n if (_toolwidth + left > _screenwidth) left = elm.getBoundingClientRect().left;\r\n imageTool.style.top = top + 'px';\r\n imageTool.style.left = left + 'px'; // Image Resizer\r\n\r\n if (!elm.hasAttribute('data-noresize')) {\r\n var imageResizer = this.imageResizer;\r\n imageResizer.style.top = elm.getBoundingClientRect().top + window.pageYOffset + 'px';\r\n imageResizer.style.left = elm.getBoundingClientRect().left + window.pageXOffset + 'px';\r\n imageResizer.style.width = elm.offsetWidth + 'px';\r\n imageResizer.style.height = elm.offsetHeight + 'px';\r\n imageResizer.style.display = 'block';\r\n this.repositionHandler(elm.offsetWidth, elm.offsetHeight); //Get & save original image width\r\n\r\n var imgwidth = elm.style.width;\r\n var imgwidthpx;\r\n\r\n if (imgwidth.indexOf('%') !== -1) {\r\n imgwidth = imgwidth.replace('%', '') * 1;\r\n imgwidthpx = elm.offsetWidth * 100 / imgwidth;\r\n } else {\r\n imgwidthpx = elm.offsetWidth;\r\n }\r\n\r\n imageResizer.setAttribute('data-width', Math.round(imgwidthpx)); // moveable\r\n\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'block';\r\n } else {\r\n var _imageResizer = this.imageResizer;\r\n _imageResizer.style.display = 'none'; // moveable\r\n\r\n _imageResizer.style.top = '-10px';\r\n _imageResizer.style.left = '-10px';\r\n _imageResizer.style.width = '1px';\r\n _imageResizer.style.height = '1px';\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n }\r\n\r\n var prog = false;\r\n\r\n if (e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0) ; else {\r\n // console.log('Programmatically');\r\n prog = true;\r\n }\r\n\r\n if (prog) {\r\n imageTool.style.display = '';\r\n var _imageResizer2 = this.imageResizer;\r\n _imageResizer2.style.display = 'none'; // moveable\r\n\r\n _imageResizer2.style.top = '-10px';\r\n _imageResizer2.style.left = '-10px';\r\n _imageResizer2.style.width = '1px';\r\n _imageResizer2.style.height = '1px';\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n } // NOTE:\r\n // if(this.builder.isTouchSupport) { //prevent keyboard open\r\n // const builderStuff = this.util.builderStuff();\r\n // const rteTool = builderStuff.querySelector('#divRteTool');\r\n // const btnFocus = rteTool.querySelector('button'); \r\n // btnFocus.focus();\r\n // setTimeout(()=>{\r\n // btnFocus.focus();\r\n // },100);\r\n // }\r\n\r\n } else {\r\n var _imageTool = this.imageTool;\r\n _imageTool.style.display = '';\r\n this.builder.activeImage = null;\r\n var _imageResizer3 = this.imageResizer;\r\n _imageResizer3.style.display = 'none'; // moveable\r\n\r\n _imageResizer3.style.top = '-10px';\r\n _imageResizer3.style.left = '-10px';\r\n _imageResizer3.style.width = '1px';\r\n _imageResizer3.style.height = '1px';\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n }\r\n } else {\r\n var _imageTool2 = this.imageTool;\r\n _imageTool2.style.display = '';\r\n this.builder.activeImage = null;\r\n var _imageResizer4 = this.imageResizer;\r\n _imageResizer4.style.display = 'none'; // moveable\r\n\r\n _imageResizer4.style.top = '-10px';\r\n _imageResizer4.style.left = '-10px';\r\n _imageResizer4.style.width = '1px';\r\n _imageResizer4.style.height = '1px';\r\n this.builder.moveable.updateRect();\r\n document.querySelector('.moveable-control-box').style.display = 'none';\r\n }\r\n } // Image Resizer\r\n\r\n }, {\r\n key: \"repositionHandler\",\r\n value: function repositionHandler(width, height) {\r\n var imageResizer = document.querySelector('#divImageResizer');\r\n imageResizer.style.width = width + 'px';\r\n imageResizer.style.height = height + 'px';\r\n }\r\n }, {\r\n key: \"processImage\",\r\n value: function processImage(file, targetImg, processImageDone) {\r\n var _this5 = this;\r\n\r\n //file can also be an URL (from the same host), ex. file = \"/assets/image.jpg\";\r\n if (!file) {\r\n processImageDone();\r\n return false;\r\n }\r\n\r\n if (!document.getElementById('myTmpCanvasNoCrop')) {\r\n var new_canvas = document.createElement('canvas');\r\n new_canvas.id = 'myTmpCanvasNoCrop';\r\n new_canvas.style.display = 'none';\r\n document.querySelector('body').appendChild(new_canvas);\r\n }\r\n\r\n if (this.builder.opts.autoResizeImageEmbed) {\r\n // var imgName;\r\n var extension;\r\n\r\n if (!file.name) {\r\n //file is an URL\r\n // imgName = file.substr((file.lastIndexOf('/') + 1));\r\n extension = file.substr(file.lastIndexOf('.') + 1).toLowerCase();\r\n } else {\r\n //file is an image file\r\n // imgName = file.name;\r\n extension = file.name.substr(file.name.lastIndexOf('.') + 1).toLowerCase();\r\n }\r\n\r\n var type, quality;\r\n\r\n if (extension === 'jpg' || extension === 'jpeg') {\r\n type = 'image/jpeg';\r\n quality = this.builder.opts.imageQuality;\r\n } else {\r\n type = 'image/png';\r\n quality = 1;\r\n }\r\n\r\n loadImage(file, function (img, data) {\r\n var orientation;\r\n\r\n if (data.exif) {\r\n orientation = data.exif.get('Orientation');\r\n } //Check orientation\r\n //http://stackoverflow.com/questions/20600800/js-client-side-exif-orientation-rotate-and-mirror-jpeg-images\r\n\r\n\r\n var initialWidth;\r\n var initialHeight;\r\n\r\n if (4 < orientation && orientation < 9) {\r\n //potrait \r\n initialWidth = img.height;\r\n initialHeight = img.width;\r\n } else {\r\n //landscape\r\n initialWidth = img.width;\r\n initialHeight = img.height;\r\n } // Use normal process for small images\r\n // if(initialWidth <200 && initialHeight<200) {\r\n\r\n\r\n if (initialWidth < 1200 && initialHeight < 1200) {\r\n var reader = new FileReader();\r\n reader.addEventListener('load', function (e) {\r\n if (!document.getElementById('__preview')) {\r\n var previewImage = document.createElement('img');\r\n previewImage.id = '__preview';\r\n previewImage.style.display = 'none';\r\n\r\n var builderStuff = _this5.util.builderStuff();\r\n\r\n dom$u.appendChild(builderStuff, previewImage);\r\n }\r\n\r\n var src_image = document.querySelector('#__preview');\r\n\r\n src_image.onload = function () {\r\n var tmpCanvasNoCrop = document.getElementById('myTmpCanvasNoCrop');\r\n var context = tmpCanvasNoCrop.getContext('2d');\r\n tmpCanvasNoCrop.height = src_image.height;\r\n tmpCanvasNoCrop.width = src_image.width;\r\n context.drawImage(src_image, 0, 0);\r\n var imageData = tmpCanvasNoCrop.toDataURL('image/png');\r\n targetImg.src = imageData;\r\n src_image.onload = null;\r\n tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n processImageDone();\r\n };\r\n\r\n src_image.src = e.target.result;\r\n });\r\n reader.readAsDataURL(file);\r\n return;\r\n } //Specify target dimension: 2 times bigger than placement, but not more than 1200px\r\n\r\n\r\n var targetWidth = targetImg.clientWidth * 2;\r\n if (targetWidth > 1200) targetWidth = 1200;\r\n targetWidth = 1200; //force target width to 1200px\r\n\r\n var targetHeight = targetWidth * initialHeight / initialWidth; //Adjust target dimension (in case image is smaller than targeted dimension)\r\n\r\n var resize = false; // var targetWidth; var targetHeight;\r\n\r\n if (initialHeight <= targetHeight && initialWidth > targetWidth) {\r\n //Original height is smaller than placeholder height. Original width is bigger than placeholder width.\r\n //targetWidth = targetWidth;\r\n targetHeight = initialHeight * targetWidth / initialWidth;\r\n\r\n if (initialHeight <= targetHeight) {\r\n targetHeight = initialHeight;\r\n targetWidth = initialHeight * targetWidth / targetHeight;\r\n }\r\n\r\n resize = true;\r\n } else if (initialWidth <= targetWidth && initialHeight > targetHeight) {\r\n //Original width is smaller than placeholder width. Original height is bigger than placeholder height.\r\n //targetHeight = targetHeight;\r\n targetWidth = initialWidth * targetHeight / initialHeight;\r\n\r\n if (initialWidth <= targetWidth) {\r\n targetWidth = initialWidth;\r\n targetHeight = initialWidth * targetHeight / targetWidth;\r\n }\r\n\r\n resize = true;\r\n } else if (initialWidth <= targetWidth && initialHeight <= targetHeight) {\r\n //no resize (original image is smaller than placeholder)\r\n targetWidth = initialWidth;\r\n targetHeight = initialHeight;\r\n } else {\r\n //targetWidth = targetWidth;\r\n targetHeight = initialHeight * targetWidth / initialWidth;\r\n resize = true;\r\n }\r\n\r\n if (type === 'image/png') {\r\n resize = false;\r\n }\r\n\r\n if (!resize) {\r\n // NEW: this is to prevent using MegaPixImage (problem with some PNG. PNG doesn't need to resize, so no need to use MegaPixImage)\r\n var _tmpCanvasNoCrop = document.getElementById('myTmpCanvasNoCrop');\r\n\r\n var context = _tmpCanvasNoCrop.getContext('2d');\r\n\r\n _tmpCanvasNoCrop.height = initialHeight;\r\n _tmpCanvasNoCrop.width = initialWidth;\r\n context.drawImage(img, 0, 0);\r\n\r\n targetImg.onload = function () {\r\n targetImg.onload = null;\r\n targetImg.src = _tmpCanvasNoCrop.toDataURL(type, quality); //finished\r\n\r\n _tmpCanvasNoCrop.parentNode.removeChild(_tmpCanvasNoCrop);\r\n\r\n processImageDone();\r\n };\r\n\r\n targetImg.src = _tmpCanvasNoCrop.toDataURL(type, quality);\r\n return;\r\n } //RENDER (tmpCanvasNoCrop) \r\n\r\n\r\n var mpImg = new MegaPixImage(img);\r\n var tmpCanvasNoCrop = document.getElementById('myTmpCanvasNoCrop');\r\n mpImg.render(tmpCanvasNoCrop, {\r\n width: initialWidth,\r\n height: initialHeight,\r\n orientation: orientation\r\n }, function () {\r\n if (resize) {\r\n //RESIZE (tmpCanvasNoCrop) with good quality. \r\n //var tmpImg = new Image();\r\n var iW = initialWidth;\r\n var iH = initialHeight;\r\n\r\n targetImg.onload = function () {\r\n _this5.count++; // count increment\r\n\r\n iW /= 2;\r\n iH /= 2;\r\n\r\n if (iW < targetWidth || iH < targetHeight) {\r\n iW = targetWidth;\r\n iH = targetHeight;\r\n }\r\n\r\n var mpImg = new MegaPixImage(targetImg); //console.log(iW + ' ' + iH)\r\n\r\n mpImg.render(tmpCanvasNoCrop, {\r\n width: iW,\r\n height: iH\r\n }, function () {\r\n // must specify both width & height correctly (proportionally) \r\n if (iW <= targetWidth || iH <= targetHeight) {\r\n targetImg.src = tmpCanvasNoCrop.toDataURL(type, quality); //finished\r\n //console.log(this.count); // count check\r\n\r\n if (_this5.count === 3) {\r\n targetImg.onload = null;\r\n\r\n try {\r\n tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n } catch (e) {// Do Nothing\r\n }\r\n\r\n processImageDone();\r\n }\r\n\r\n try {\r\n tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n } catch (e) {// Do Nothing\r\n }\r\n\r\n processImageDone();\r\n return false;\r\n }\r\n\r\n targetImg.src = tmpCanvasNoCrop.toDataURL(type, quality); //console.log(this.count); // count check\r\n\r\n if (_this5.count === 3) {\r\n targetImg.onload = null;\r\n\r\n try {\r\n tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n } catch (e) {// Do Nothing\r\n }\r\n\r\n processImageDone();\r\n }\r\n });\r\n };\r\n\r\n targetImg.src = tmpCanvasNoCrop.toDataURL(type, quality);\r\n _this5.count = 0; //console.log(this.count); // count start\r\n } else {\r\n targetImg.src = tmpCanvasNoCrop.toDataURL(type, quality); //finished\r\n\r\n tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n processImageDone();\r\n }\r\n });\r\n }, {\r\n canvas: false,\r\n meta: true\r\n });\r\n } else {\r\n var reader = new FileReader();\r\n reader.addEventListener('load', function (e) {\r\n //Problem: image not fully rendered\r\n // targetImg.onload = ()=> {\r\n // let tmpCanvasNoCrop = document.getElementById('myTmpCanvasNoCrop');\r\n // let context = tmpCanvasNoCrop.getContext('2d');\r\n // tmpCanvasNoCrop.height = targetImg.height;\r\n // tmpCanvasNoCrop.width = targetImg.width;\r\n // context.drawImage(targetImg, 0, 0);\r\n // let imageData = tmpCanvasNoCrop.toDataURL(\"image/png\"); \r\n // targetImg.src = imageData;\r\n // targetImg.onload = null;\r\n // //tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n // processImageDone();\r\n // }\r\n // targetImg.src = e.target.result;\r\n //Fix:\r\n if (!document.getElementById('__preview')) {\r\n var previewImage = document.createElement('img');\r\n previewImage.id = '__preview';\r\n previewImage.style.display = 'none';\r\n\r\n var builderStuff = _this5.util.builderStuff();\r\n\r\n dom$u.appendChild(builderStuff, previewImage);\r\n }\r\n\r\n var src_image = document.querySelector('#__preview');\r\n\r\n src_image.onload = function () {\r\n var tmpCanvasNoCrop = document.getElementById('myTmpCanvasNoCrop');\r\n var context = tmpCanvasNoCrop.getContext('2d');\r\n tmpCanvasNoCrop.height = src_image.height;\r\n tmpCanvasNoCrop.width = src_image.width;\r\n context.drawImage(src_image, 0, 0);\r\n var imageData = tmpCanvasNoCrop.toDataURL('image/png');\r\n targetImg.src = imageData;\r\n src_image.onload = null;\r\n tmpCanvasNoCrop.parentNode.removeChild(tmpCanvasNoCrop);\r\n processImageDone();\r\n };\r\n\r\n src_image.src = e.target.result;\r\n });\r\n reader.readAsDataURL(file);\r\n return;\r\n }\r\n }\r\n }]);\r\n\r\n return Image;\r\n }();\r\n /*! Mega pixel image rendering library for iOS6 Safari | Copyright (c) 2012 Shinichi Tomita | MIT license | https://github.com/stomita/ios-imagefile-megapixel */\r\n\r\n /**\r\n * Mega pixel image rendering library for iOS6 Safari\r\n *\r\n * Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel),\r\n * which causes unexpected subsampling when drawing it in canvas.\r\n * By using this library, you can safely render the image with proper stretching.\r\n *\r\n * Copyright (c) 2012 Shinichi Tomita \r\n * Released under the MIT license\r\n */\r\n\r\n /**\r\n * Detect subsampling in loaded image.\r\n * In iOS, larger images than 2M pixels may be subsampled in rendering.\r\n */\r\n\r\n function detectSubsampling(img) {\r\n var iw = img.naturalWidth,\r\n ih = img.naturalHeight;\r\n\r\n if (iw * ih > 1024 * 1024) {\r\n // subsampling may happen over megapixel image\r\n var canvas = document.createElement('canvas');\r\n canvas.width = canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(img, -iw + 1, 0); // subsampled image becomes half smaller in rendering size.\r\n // check alpha channel value to confirm image is covering edge pixel or not.\r\n // if alpha value is 0 image is not covering, hence subsampled.\r\n\r\n return ctx.getImageData(0, 0, 1, 1).data[3] === 0;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Detecting vertical squash in loaded image.\r\n * Fixes a bug which squash image vertically while drawing into canvas for some images.\r\n */\r\n\r\n\r\n function detectVerticalSquash(img, iw, ih) {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 1;\r\n canvas.height = ih;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(img, 0, 0);\r\n var data = ctx.getImageData(0, 0, 1, ih).data; // search image edge pixel position in case it is squashed vertically.\r\n\r\n var sy = 0;\r\n var ey = ih;\r\n var py = ih;\r\n\r\n while (py > sy) {\r\n var alpha = data[(py - 1) * 4 + 3];\r\n\r\n if (alpha === 0) {\r\n ey = py;\r\n } else {\r\n sy = py;\r\n }\r\n\r\n py = ey + sy >> 1;\r\n }\r\n\r\n var ratio = py / ih;\r\n return ratio === 0 ? 1 : ratio;\r\n }\r\n /**\r\n * Rendering image element (with resizing) and get its data URL\r\n */\r\n\r\n\r\n function renderImageToDataURL(img, options, doSquash) {\r\n var canvas = document.createElement('canvas');\r\n renderImageToCanvas(img, canvas, options, doSquash);\r\n return canvas.toDataURL('image/jpeg', options.quality || 0.8);\r\n }\r\n /**\r\n * Rendering image element (with resizing) into the canvas element\r\n */\r\n\r\n\r\n function renderImageToCanvas(img, canvas, options, doSquash) {\r\n var iw = img.naturalWidth,\r\n ih = img.naturalHeight;\r\n if (!(iw + ih)) return;\r\n var width = options.width,\r\n height = options.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.save();\r\n transformCoordinate(canvas, ctx, width, height, options.orientation);\r\n var subsampled = detectSubsampling(img);\r\n\r\n if (subsampled) {\r\n iw /= 2;\r\n ih /= 2;\r\n }\r\n\r\n var d = 1024; // size of tiling canvas\r\n\r\n var tmpCanvas = document.createElement('canvas');\r\n tmpCanvas.width = tmpCanvas.height = d;\r\n var tmpCtx = tmpCanvas.getContext('2d');\r\n var vertSquashRatio = doSquash ? detectVerticalSquash(img, iw, ih) : 1;\r\n var dw = Math.ceil(d * width / iw);\r\n var dh = Math.ceil(d * height / ih / vertSquashRatio);\r\n var sy = 0;\r\n var dy = 0;\r\n\r\n while (sy < ih) {\r\n var sx = 0;\r\n var dx = 0;\r\n\r\n while (sx < iw) {\r\n tmpCtx.clearRect(0, 0, d, d);\r\n tmpCtx.drawImage(img, -sx, -sy);\r\n ctx.drawImage(tmpCanvas, 0, 0, d, d, dx, dy, dw, dh);\r\n sx += d;\r\n dx += dw;\r\n }\r\n\r\n sy += d;\r\n dy += dh;\r\n }\r\n\r\n ctx.restore();\r\n tmpCanvas = tmpCtx = null;\r\n }\r\n /**\r\n * Transform canvas coordination according to specified frame size and orientation\r\n * Orientation value is from EXIF tag\r\n */\r\n\r\n\r\n function transformCoordinate(canvas, ctx, width, height, orientation) {\r\n switch (orientation) {\r\n case 5:\r\n case 6:\r\n case 7:\r\n case 8:\r\n canvas.width = height;\r\n canvas.height = width;\r\n break;\r\n\r\n default:\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n\r\n switch (orientation) {\r\n case 2:\r\n // horizontal flip\r\n ctx.translate(width, 0);\r\n ctx.scale(-1, 1);\r\n break;\r\n\r\n case 3:\r\n // 180 rotate left\r\n ctx.translate(width, height);\r\n ctx.rotate(Math.PI);\r\n break;\r\n\r\n case 4:\r\n // vertical flip\r\n ctx.translate(0, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 5:\r\n // vertical flip + 90 rotate right\r\n ctx.rotate(0.5 * Math.PI);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 6:\r\n // 90 rotate right\r\n ctx.rotate(0.5 * Math.PI);\r\n ctx.translate(0, -height);\r\n break;\r\n\r\n case 7:\r\n // horizontal flip + 90 rotate right\r\n ctx.rotate(0.5 * Math.PI);\r\n ctx.translate(width, -height);\r\n ctx.scale(-1, 1);\r\n break;\r\n\r\n case 8:\r\n // 90 rotate left\r\n ctx.rotate(-0.5 * Math.PI);\r\n ctx.translate(-width, 0);\r\n break;\r\n }\r\n }\r\n\r\n var URL = window.URL && window.URL.createObjectURL ? window.URL : window.webkitURL && window.webkitURL.createObjectURL ? window.webkitURL : null;\r\n /**\r\n * MegaPixImage class\r\n */\r\n\r\n function MegaPixImage(srcImage) {\r\n if (window.Blob && srcImage instanceof Blob) {\r\n if (!URL) {\r\n throw Error('No createObjectURL function found to create blob url');\r\n }\r\n\r\n var img = new Image();\r\n img.src = URL.createObjectURL(srcImage);\r\n this.blob = srcImage;\r\n srcImage = img;\r\n }\r\n\r\n if (!srcImage.naturalWidth && !srcImage.naturalHeight) {\r\n var _this = this;\r\n\r\n srcImage.onload = srcImage.onerror = function () {\r\n var listeners = _this.imageLoadListeners;\r\n\r\n if (listeners) {\r\n _this.imageLoadListeners = null;\r\n\r\n for (var i = 0, len = listeners.length; i < len; i++) {\r\n listeners[i]();\r\n }\r\n }\r\n };\r\n\r\n this.imageLoadListeners = [];\r\n }\r\n\r\n this.srcImage = srcImage;\r\n }\r\n /**\r\n * Rendering megapix image into specified target element\r\n */\r\n\r\n\r\n MegaPixImage.prototype.render = function (target, options, callback) {\r\n if (this.imageLoadListeners) {\r\n var _this = this;\r\n\r\n this.imageLoadListeners.push(function () {\r\n _this.render(target, options, callback);\r\n });\r\n return;\r\n }\r\n\r\n options = options || {};\r\n var imgWidth = this.srcImage.naturalWidth,\r\n imgHeight = this.srcImage.naturalHeight,\r\n width = options.width,\r\n height = options.height,\r\n maxWidth = options.maxWidth,\r\n maxHeight = options.maxHeight,\r\n doSquash = !this.blob || this.blob.type === 'image/jpeg';\r\n\r\n if (width && !height) {\r\n height = imgHeight * width / imgWidth << 0;\r\n } else if (height && !width) {\r\n width = imgWidth * height / imgHeight << 0;\r\n } else {\r\n width = imgWidth;\r\n height = imgHeight;\r\n }\r\n\r\n if (maxWidth && width > maxWidth) {\r\n width = maxWidth;\r\n height = imgHeight * width / imgWidth << 0;\r\n }\r\n\r\n if (maxHeight && height > maxHeight) {\r\n height = maxHeight;\r\n width = imgWidth * height / imgHeight << 0;\r\n }\r\n\r\n var opt = {\r\n width: width,\r\n height: height\r\n };\r\n\r\n for (var k in options) {\r\n opt[k] = options[k];\r\n }\r\n\r\n var tagName = target.tagName.toLowerCase();\r\n\r\n if (tagName === 'img') {\r\n target.src = renderImageToDataURL(this.srcImage, opt, doSquash);\r\n } else if (tagName === 'canvas') {\r\n renderImageToCanvas(this.srcImage, target, opt, doSquash);\r\n }\r\n\r\n if (typeof this.onrender === 'function') {\r\n this.onrender(target);\r\n }\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n if (this.blob) {\r\n this.blob = null;\r\n URL.revokeObjectURL(this.srcImage.src);\r\n }\r\n };\r\n /*\r\n * JavaScript Load Image\r\n * https://github.com/blueimp/JavaScript-Load-Image\r\n *\r\n * Copyright 2011, Sebastian Tschan\r\n * https://blueimp.net\r\n *\r\n * Licensed under the MIT license:\r\n * https://opensource.org/licenses/MIT\r\n */\r\n\r\n /**\r\n * Loads an image for a given File object.\r\n * Invokes the callback with an img or optional canvas element\r\n * (if supported by the browser) as parameter:.\r\n *\r\n * @param {File|Blob|string} file File or Blob object or image URL\r\n * @param {Function} [callback] Image load event callback\r\n * @param {object} [options] Options object\r\n * @returns {HTMLImageElement|HTMLCanvasElement|FileReader} image object\r\n */\r\n\r\n\r\n function loadImage(file, callback, options) {\r\n var img = document.createElement('img');\r\n var url;\r\n\r\n img.onerror = function (event) {\r\n return loadImage.onerror(img, event, file, callback, options);\r\n };\r\n\r\n img.onload = function (event) {\r\n return loadImage.onload(img, event, file, callback, options);\r\n };\r\n\r\n if (typeof file === 'string') {\r\n loadImage.fetchBlob(file, function (blob) {\r\n if (blob) {\r\n // eslint-disable-next-line no-param-reassign\r\n file = blob;\r\n url = loadImage.createObjectURL(file);\r\n } else {\r\n url = file;\r\n\r\n if (options && options.crossOrigin) {\r\n img.crossOrigin = options.crossOrigin;\r\n }\r\n }\r\n\r\n img.src = url;\r\n }, options);\r\n return img;\r\n } else if (loadImage.isInstanceOf('Blob', file) || // Files are also Blob instances, but some browsers\r\n // (Firefox 3.6) support the File API but not Blobs:\r\n loadImage.isInstanceOf('File', file)) {\r\n url = img._objectURL = loadImage.createObjectURL(file);\r\n\r\n if (url) {\r\n img.src = url;\r\n return img;\r\n }\r\n\r\n return loadImage.readFile(file, function (e) {\r\n var target = e.target;\r\n\r\n if (target && target.result) {\r\n img.src = target.result;\r\n } else if (callback) {\r\n callback(e);\r\n }\r\n });\r\n }\r\n } // The check for URL.revokeObjectURL fixes an issue with Opera 12,\r\n // which provides URL.createObjectURL but doesn't properly implement it:\r\n // var urlAPI = (URL.revokeObjectURL && URL) || webkitURL;\r\n\r\n\r\n var urlAPI = URL.revokeObjectURL && URL; // Oct 29, 2019\r\n\r\n /**\r\n * Helper function to revoke an object URL\r\n *\r\n * @param {HTMLImageElement} img Image element\r\n * @param {object} [options] Options object\r\n */\r\n\r\n function revokeHelper(img, options) {\r\n if (img._objectURL && !(options && options.noRevoke)) {\r\n loadImage.revokeObjectURL(img._objectURL);\r\n delete img._objectURL;\r\n }\r\n } // If the callback given to this function returns a blob, it is used as image\r\n // source instead of the original url and overrides the file argument used in\r\n // the onload and onerror event callbacks:\r\n\r\n\r\n loadImage.fetchBlob = function (url, callback) {\r\n callback();\r\n };\r\n\r\n loadImage.isInstanceOf = function (type, obj) {\r\n // Cross-frame instanceof check\r\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\r\n };\r\n\r\n loadImage.transform = function (img, options, callback, file, data) {\r\n callback(img, data);\r\n };\r\n\r\n loadImage.onerror = function (img, event, file, callback, options) {\r\n revokeHelper(img, options);\r\n\r\n if (callback) {\r\n callback.call(img, event);\r\n }\r\n };\r\n\r\n loadImage.onload = function (img, event, file, callback, options) {\r\n revokeHelper(img, options);\r\n\r\n if (callback) {\r\n loadImage.transform(img, options, callback, file, {\r\n originalWidth: img.naturalWidth || img.width,\r\n originalHeight: img.naturalHeight || img.height\r\n });\r\n }\r\n };\r\n\r\n loadImage.createObjectURL = function (file) {\r\n return urlAPI ? urlAPI.createObjectURL(file) : false;\r\n };\r\n\r\n loadImage.revokeObjectURL = function (url) {\r\n return urlAPI ? urlAPI.revokeObjectURL(url) : false;\r\n }; // Loads a given File object via FileReader interface,\r\n // invokes the callback with the event object (load or error).\r\n // The result can be read via event.target.result:\r\n\r\n\r\n loadImage.readFile = function (file, callback, method) {\r\n if (FileReader) {\r\n var fileReader = new FileReader();\r\n fileReader.onload = fileReader.onerror = callback; // eslint-disable-next-line no-param-reassign\r\n\r\n method = method || 'readAsDataURL';\r\n\r\n if (fileReader[method]) {\r\n fileReader[method](file);\r\n return fileReader;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n /*\r\n load-image-meta.js\r\n */\r\n\r\n\r\n var hasblobSlice = typeof Blob !== 'undefined' && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice);\r\n\r\n loadImage.blobSlice = hasblobSlice && function () {\r\n var slice = this.slice || this.webkitSlice || this.mozSlice;\r\n return slice.apply(this, arguments);\r\n };\r\n\r\n loadImage.metaDataParsers = {\r\n jpeg: {\r\n 0xffe1: [],\r\n // APP1 marker\r\n 0xffed: [] // APP13 marker\r\n\r\n }\r\n }; // Parses image meta data and calls the callback with an object argument\r\n // with the following properties:\r\n // * imageHead: The complete image head as ArrayBuffer (Uint8Array for IE10)\r\n // The options argument accepts an object and supports the following\r\n // properties:\r\n // * maxMetaDataSize: Defines the maximum number of bytes to parse.\r\n // * disableImageHead: Disables creating the imageHead property.\r\n\r\n loadImage.parseMetaData = function (file, callback, options, data) {\r\n // eslint-disable-next-line no-param-reassign\r\n options = options || {}; // eslint-disable-next-line no-param-reassign\r\n\r\n data = data || {};\r\n var that = this; // 256 KiB should contain all EXIF/ICC/IPTC segments:\r\n\r\n var maxMetaDataSize = options.maxMetaDataSize || 262144;\r\n var noMetaData = !(typeof DataView !== 'undefined' && file && file.size >= 12 && file.type === 'image/jpeg' && loadImage.blobSlice); //callback(data);return;\r\n //noMetaData=true;\r\n\r\n if (noMetaData || !loadImage.readFile(loadImage.blobSlice.call(file, 0, maxMetaDataSize), function (e) {\r\n if (e.target.error) {\r\n // FileReader error\r\n // eslint-disable-next-line no-console\r\n console.log(e.target.error);\r\n callback(data);\r\n return;\r\n } // Note on endianness:\r\n // Since the marker and length bytes in JPEG files are always\r\n // stored in big endian order, we can leave the endian parameter\r\n // of the DataView methods undefined, defaulting to big endian.\r\n\r\n\r\n var buffer = e.target.result;\r\n var dataView = new DataView(buffer);\r\n var offset = 2;\r\n var maxOffset = dataView.byteLength - 4;\r\n var headLength = offset;\r\n var markerBytes;\r\n var markerLength;\r\n var parsers;\r\n var i; // Check for the JPEG marker (0xffd8):\r\n\r\n if (dataView.getUint16(0) === 0xffd8) {\r\n while (offset < maxOffset) {\r\n markerBytes = dataView.getUint16(offset); // Search for APPn (0xffeN) and COM (0xfffe) markers,\r\n // which contain application-specific meta-data like\r\n // Exif, ICC and IPTC data and text comments:\r\n\r\n if (markerBytes >= 0xffe0 && markerBytes <= 0xffef || markerBytes === 0xfffe) {\r\n // The marker bytes (2) are always followed by\r\n // the length bytes (2), indicating the length of the\r\n // marker segment, which includes the length bytes,\r\n // but not the marker bytes, so we add 2:\r\n markerLength = dataView.getUint16(offset + 2) + 2;\r\n\r\n if (offset + markerLength > dataView.byteLength) {\r\n // eslint-disable-next-line no-console\r\n console.log('Invalid meta data: Invalid segment size.');\r\n break;\r\n }\r\n\r\n parsers = loadImage.metaDataParsers.jpeg[markerBytes];\r\n\r\n if (parsers) {\r\n for (i = 0; i < parsers.length; i += 1) {\r\n parsers[i].call(that, dataView, offset, markerLength, data, options);\r\n }\r\n }\r\n\r\n offset += markerLength;\r\n headLength = offset;\r\n } else {\r\n // Not an APPn or COM marker, probably safe to\r\n // assume that this is the end of the meta data\r\n break;\r\n }\r\n } // Meta length must be longer than JPEG marker (2)\r\n // plus APPn marker (2), followed by length bytes (2):\r\n\r\n\r\n if (!options.disableImageHead && headLength > 6) {\r\n if (buffer.slice) {\r\n data.imageHead = buffer.slice(0, headLength);\r\n } else {\r\n // Workaround for IE10, which does not yet\r\n // support ArrayBuffer.slice:\r\n data.imageHead = new Uint8Array(buffer).subarray(0, headLength);\r\n }\r\n }\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.log('Invalid JPEG file: Missing JPEG marker.');\r\n }\r\n\r\n callback(data);\r\n }, 'readAsArrayBuffer')) {\r\n callback(data);\r\n }\r\n }; // Determines if meta data should be loaded automatically:\r\n\r\n\r\n loadImage.hasMetaOption = function (options) {\r\n return options && options.meta;\r\n };\r\n\r\n var originalTransform = loadImage.transform;\r\n\r\n loadImage.transform = function (img, options, callback, file, data) {\r\n if (loadImage.hasMetaOption(options)) {\r\n loadImage.parseMetaData(file, function (data) {\r\n originalTransform.call(loadImage, img, options, callback, file, data);\r\n }, options, data);\r\n } else {\r\n originalTransform.apply(loadImage, arguments);\r\n }\r\n };\r\n /*\r\n load-image-exif.js\r\n */\r\n\r\n\r\n loadImage.ExifMap = function () {\r\n return this;\r\n };\r\n\r\n loadImage.ExifMap.prototype.map = {\r\n Orientation: 0x0112\r\n };\r\n\r\n loadImage.ExifMap.prototype.get = function (id) {\r\n return this[id] || this[this.map[id]];\r\n };\r\n\r\n loadImage.getExifThumbnail = function (dataView, offset, length) {\r\n if (!length || offset + length > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid thumbnail data.');\r\n return;\r\n }\r\n\r\n return loadImage.createObjectURL(new Blob([dataView.buffer.slice(offset, offset + length)]));\r\n };\r\n\r\n loadImage.exifTagTypes = {\r\n // byte, 8-bit unsigned int:\r\n 1: {\r\n getValue: function getValue(dataView, dataOffset) {\r\n return dataView.getUint8(dataOffset);\r\n },\r\n size: 1\r\n },\r\n // ascii, 8-bit byte:\r\n 2: {\r\n getValue: function getValue(dataView, dataOffset) {\r\n return String.fromCharCode(dataView.getUint8(dataOffset));\r\n },\r\n size: 1,\r\n ascii: true\r\n },\r\n // short, 16 bit int:\r\n 3: {\r\n getValue: function getValue(dataView, dataOffset, littleEndian) {\r\n return dataView.getUint16(dataOffset, littleEndian);\r\n },\r\n size: 2\r\n },\r\n // long, 32 bit int:\r\n 4: {\r\n getValue: function getValue(dataView, dataOffset, littleEndian) {\r\n return dataView.getUint32(dataOffset, littleEndian);\r\n },\r\n size: 4\r\n },\r\n // rational = two long values, first is numerator, second is denominator:\r\n 5: {\r\n getValue: function getValue(dataView, dataOffset, littleEndian) {\r\n return dataView.getUint32(dataOffset, littleEndian) / dataView.getUint32(dataOffset + 4, littleEndian);\r\n },\r\n size: 8\r\n },\r\n // slong, 32 bit signed int:\r\n 9: {\r\n getValue: function getValue(dataView, dataOffset, littleEndian) {\r\n return dataView.getInt32(dataOffset, littleEndian);\r\n },\r\n size: 4\r\n },\r\n // srational, two slongs, first is numerator, second is denominator:\r\n 10: {\r\n getValue: function getValue(dataView, dataOffset, littleEndian) {\r\n return dataView.getInt32(dataOffset, littleEndian) / dataView.getInt32(dataOffset + 4, littleEndian);\r\n },\r\n size: 8\r\n }\r\n }; // undefined, 8-bit byte, value depending on field:\r\n\r\n loadImage.exifTagTypes[7] = loadImage.exifTagTypes[1];\r\n\r\n loadImage.getExifValue = function (dataView, tiffOffset, offset, type, length, littleEndian) {\r\n var tagType = loadImage.exifTagTypes[type];\r\n var tagSize;\r\n var dataOffset;\r\n var values;\r\n var i;\r\n var str;\r\n var c;\r\n\r\n if (!tagType) {\r\n console.log('Invalid Exif data: Invalid tag type.');\r\n return;\r\n }\r\n\r\n tagSize = tagType.size * length; // Determine if the value is contained in the dataOffset bytes,\r\n // or if the value at the dataOffset is a pointer to the actual data:\r\n\r\n dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32(offset + 8, littleEndian) : offset + 8;\r\n\r\n if (dataOffset + tagSize > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid data offset.');\r\n return;\r\n }\r\n\r\n if (length === 1) {\r\n return tagType.getValue(dataView, dataOffset, littleEndian);\r\n }\r\n\r\n values = [];\r\n\r\n for (i = 0; i < length; i += 1) {\r\n values[i] = tagType.getValue(dataView, dataOffset + i * tagType.size, littleEndian);\r\n }\r\n\r\n if (tagType.ascii) {\r\n str = ''; // Concatenate the chars:\r\n\r\n for (i = 0; i < values.length; i += 1) {\r\n c = values[i]; // Ignore the terminating NULL byte(s):\r\n\r\n if (c === \"\\0\") {\r\n break;\r\n }\r\n\r\n str += c;\r\n }\r\n\r\n return str;\r\n }\r\n\r\n return values;\r\n };\r\n\r\n loadImage.parseExifTag = function (dataView, tiffOffset, offset, littleEndian, data) {\r\n var tag = dataView.getUint16(offset, littleEndian);\r\n data.exif[tag] = loadImage.getExifValue(dataView, tiffOffset, offset, dataView.getUint16(offset + 2, littleEndian), dataView.getUint32(offset + 4, littleEndian), littleEndian);\r\n };\r\n\r\n loadImage.parseExifTags = function (dataView, tiffOffset, dirOffset, littleEndian, data) {\r\n var tagsNumber, dirEndOffset, i;\r\n\r\n if (dirOffset + 6 > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid directory offset.');\r\n return;\r\n }\r\n\r\n tagsNumber = dataView.getUint16(dirOffset, littleEndian);\r\n dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\r\n\r\n if (dirEndOffset + 4 > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid directory size.');\r\n return;\r\n }\r\n\r\n for (i = 0; i < tagsNumber; i += 1) {\r\n this.parseExifTag(dataView, tiffOffset, dirOffset + 2 + 12 * i, littleEndian, data);\r\n } // Return the offset to the next directory:\r\n\r\n\r\n return dataView.getUint32(dirEndOffset, littleEndian);\r\n };\r\n\r\n loadImage.parseExifData = function (dataView, offset, length, data, options) {\r\n if (options.disableExif) {\r\n return;\r\n }\r\n\r\n var tiffOffset = offset + 10;\r\n var littleEndian;\r\n var dirOffset;\r\n var thumbnailData; // Check for the ASCII code for \"Exif\" (0x45786966):\r\n\r\n if (dataView.getUint32(offset + 4) !== 0x45786966) {\r\n // No Exif data, might be XMP data instead\r\n return;\r\n }\r\n\r\n if (tiffOffset + 8 > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid segment size.');\r\n return;\r\n } // Check for the two null bytes:\r\n\r\n\r\n if (dataView.getUint16(offset + 8) !== 0x0000) {\r\n console.log('Invalid Exif data: Missing byte alignment offset.');\r\n return;\r\n } // Check the byte alignment:\r\n\r\n\r\n switch (dataView.getUint16(tiffOffset)) {\r\n case 0x4949:\r\n littleEndian = true;\r\n break;\r\n\r\n case 0x4d4d:\r\n littleEndian = false;\r\n break;\r\n\r\n default:\r\n console.log('Invalid Exif data: Invalid byte alignment marker.');\r\n return;\r\n } // Check for the TIFF tag marker (0x002A):\r\n\r\n\r\n if (dataView.getUint16(tiffOffset + 2, littleEndian) !== 0x002a) {\r\n console.log('Invalid Exif data: Missing TIFF marker.');\r\n return;\r\n } // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\r\n\r\n\r\n dirOffset = dataView.getUint32(tiffOffset + 4, littleEndian); // Create the exif object to store the tags:\r\n\r\n data.exif = new loadImage.ExifMap(); // Parse the tags of the main image directory and retrieve the\r\n // offset to the next directory, usually the thumbnail directory:\r\n\r\n dirOffset = loadImage.parseExifTags(dataView, tiffOffset, tiffOffset + dirOffset, littleEndian, data);\r\n\r\n if (dirOffset && !options.disableExifThumbnail) {\r\n thumbnailData = {\r\n exif: {}\r\n };\r\n dirOffset = loadImage.parseExifTags(dataView, tiffOffset, tiffOffset + dirOffset, littleEndian, thumbnailData); // Check for JPEG Thumbnail offset:\r\n\r\n if (thumbnailData.exif[0x0201]) {\r\n data.exif.Thumbnail = loadImage.getExifThumbnail(dataView, tiffOffset + thumbnailData.exif[0x0201], thumbnailData.exif[0x0202]);\r\n }\r\n } // Check for Exif Sub IFD Pointer:\r\n\r\n\r\n if (data.exif[0x8769] && !options.disableExifSub) {\r\n loadImage.parseExifTags(dataView, tiffOffset, tiffOffset + data.exif[0x8769], littleEndian, data);\r\n } // Check for GPS Info IFD Pointer:\r\n\r\n\r\n if (data.exif[0x8825] && !options.disableExifGps) {\r\n loadImage.parseExifTags(dataView, tiffOffset, tiffOffset + data.exif[0x8825], littleEndian, data);\r\n }\r\n }; // Registers the Exif parser for the APP1 JPEG meta data segment:\r\n\r\n\r\n loadImage.metaDataParsers.jpeg[0xffe1].push(loadImage.parseExifData); // Adds the following properties to the parseMetaData callback data:\r\n // * exif: The exif tags, parsed by the parseExifData method\r\n // Adds the following options to the parseMetaData method:\r\n // * disableExif: Disables Exif parsing.\r\n // * disableExifThumbnail: Disables parsing of the Exif Thumbnail.\r\n // * disableExifSub: Disables parsing of the Exif Sub IFD.\r\n // * disableExifGps: Disables parsing of the Exif GPS Info IFD.\r\n\r\n var dom$t = new Dom();\r\n\r\n var Hyperlink = /*#__PURE__*/function () {\r\n function Hyperlink(builder) {\r\n var _this = this;\r\n\r\n _classCallCheck$1(this, Hyperlink);\r\n\r\n this.builder = builder;\r\n var util = new Util(builder);\r\n var builderStuff = util.builderStuff();\r\n this.builderStuff = builderStuff;\r\n var linkTool = builderStuff.querySelector('#divLinkTool');\r\n\r\n if (!linkTool) {\r\n var html = \"
\\n \\n \\n \\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \");\r\n dom$t.appendHtml(builderStuff, html);\r\n linkTool = builderStuff.querySelector('#divLinkTool');\r\n var linkEdit = linkTool.querySelector('.link-edit');\r\n dom$t.addEventListener(linkEdit, 'click', function () {\r\n // old: 10853\r\n _this.editLink();\r\n });\r\n var linkDuplicate = linkTool.querySelector('.link-duplicate');\r\n dom$t.addEventListener(linkDuplicate, 'click', function () {\r\n if (_this.builder.activeLink) {\r\n _this.builder.uo.saveForUndo();\r\n\r\n if (_this.builder.opts.emailMode) {\r\n var element = _this.builder.activeLink;\r\n\r\n while (element.tagName.toLowerCase() !== 'table' && !dom$t.hasClass(element, 'button')) {\r\n element = element.parentNode;\r\n }\r\n\r\n element = element.parentNode;\r\n var activeLinkTD = element;\r\n var newlinkTD = activeLinkTD.cloneNode(true); // if there is active icon class, do not copy the class\r\n\r\n var iconActive = newlinkTD.querySelector('.icon-active');\r\n if (iconActive) dom$t.removeClass(iconActive, 'icon-active');\r\n newlinkTD.style.paddingRight = '15px';\r\n activeLinkTD.parentNode.insertBefore(newlinkTD, activeLinkTD);\r\n\r\n _this.showTool(_this.builder.activeLink);\r\n } else {\r\n var newlink = _this.builder.activeLink.cloneNode(true); // if there is active icon class, do not copy the class\r\n\r\n\r\n var _iconActive = newlink.querySelector('.icon-active');\r\n\r\n if (_iconActive) dom$t.removeClass(_iconActive, 'icon-active');\r\n\r\n _this.builder.activeLink.parentNode.insertBefore(newlink, _this.builder.activeLink);\r\n\r\n _this.showTool(_this.builder.activeLink);\r\n }\r\n }\r\n });\r\n var linkRemove = linkTool.querySelector('.link-remove');\r\n dom$t.addEventListener(linkRemove, 'click', function () {\r\n _this.builder.uo.saveForUndo();\r\n\r\n if (_this.builder.opts.emailMode) {\r\n var element = _this.builder.activeLink;\r\n\r\n while (element.tagName.toLowerCase() !== 'table' && !dom$t.hasClass(element, 'button')) {\r\n element = element.parentNode;\r\n }\r\n\r\n element = element.parentNode;\r\n var activeLinkTD = element;\r\n if (activeLinkTD) activeLinkTD.parentNode.removeChild(activeLinkTD);\r\n linkTool.style.display = '';\r\n } else {\r\n if (_this.builder.activeLink) _this.builder.activeLink.parentNode.removeChild(_this.builder.activeLink);\r\n linkTool.style.display = '';\r\n } // if there is active icon, set null.\r\n\r\n\r\n var iconActive = _this.builder.activeLink.querySelector('.icon-active');\r\n\r\n if (iconActive) _this.builder.activeIcon = null;\r\n });\r\n var modal = this.builderStuff.querySelector('.is-modal.createlink');\r\n var inputOk = modal.querySelector('.input-ok');\r\n dom$t.addEventListener(inputOk, 'click', function () {\r\n _this.builder.uo.saveForUndo();\r\n\r\n var link = _this.builder.activeLink;\r\n\r\n if (link) {\r\n // Edit Existing Link\r\n var url = modal.querySelector('.input-url').value;\r\n var title = modal.querySelector('.input-title').value;\r\n var linktext = modal.querySelector('.input-text').value;\r\n if (linktext === '') linktext = url;\r\n\r\n if (url !== '') {\r\n link.setAttribute('href', url);\r\n\r\n if (modal.querySelector('.input-newwindow').checked) {\r\n link.setAttribute('target', '_blank');\r\n } else {\r\n link.removeAttribute('target');\r\n }\r\n\r\n if (_this.builder.activeIcon) ; else {\r\n link.innerHTML = linktext;\r\n }\r\n\r\n link.setAttribute('title', title);\r\n } else {\r\n var el = link;\r\n dom$t.selectElementContents(el);\r\n document.execCommand('unlink', false, null);\r\n } //Trigger Change event\r\n\r\n\r\n _this.builder.opts.onChange();\r\n } else {\r\n // Create New Link\r\n util.restoreSelection();\r\n var _url = modal.querySelector('.input-url').value;\r\n var _title = modal.querySelector('.input-title').value;\r\n var _linktext = modal.querySelector('.input-text').value;\r\n if (_linktext === '') _linktext = _url;\r\n\r\n if (_url !== '') {\r\n _this.builder.uo.saveForUndo();\r\n\r\n var activeLink;\r\n\r\n if (_this.builder.activeIcon) {\r\n // Icon is selected\r\n var iconhtml = _this.builder.activeIcon.outerHTML;\r\n _this.builder.activeIcon.outerHTML = \"\").concat(iconhtml, \"\");\r\n activeLink = document.querySelector('.__dummy');\r\n dom$t.removeClass(activeLink, '__dummy');\r\n\r\n if (modal.querySelector('.input-newwindow').checked) {\r\n activeLink.setAttribute('target', '_blank');\r\n } else {\r\n activeLink.removeAttribute('target');\r\n }\r\n\r\n activeLink.setAttribute('title', _title);\r\n _this.builder.activeIcon = activeLink.childNodes[0];\r\n if (!util.appleMobile) dom$t.selectElementContents(_this.builder.activeIcon);\r\n } else {\r\n // if(this.builder.isIE) {\r\n // util.hideModal(modal);\r\n // return;\r\n // }\r\n document.execCommand('createLink', false, 'http://dummy');\r\n\r\n var _activeLink = document.querySelector('a[href=\"http://dummy\"]');\r\n\r\n _activeLink.setAttribute('href', _url);\r\n\r\n _activeLink.innerHTML = _linktext;\r\n\r\n if (modal.querySelector('.input-newwindow').checked) {\r\n _activeLink.setAttribute('target', '_blank');\r\n } else {\r\n _activeLink.removeAttribute('target');\r\n }\r\n\r\n _activeLink.setAttribute('title', _title);\r\n\r\n if (!util.appleMobile) dom$t.selectElementContents(_activeLink);\r\n }\r\n } //save selection\r\n\r\n\r\n util.saveSelection(); //Trigger Change event\r\n\r\n _this.builder.opts.onChange(); //Trigger Render event\r\n\r\n\r\n _this.builder.opts.onRender();\r\n }\r\n\r\n util.hideModal(modal);\r\n });\r\n var inputCancel = modal.querySelector('.input-cancel');\r\n dom$t.addEventListener(inputCancel, 'click', function () {\r\n util.hideModal(modal);\r\n if (!util.appleMobile) util.restoreSelection();\r\n });\r\n }\r\n\r\n this.linkTool = linkTool;\r\n }\r\n\r\n _createClass$1(Hyperlink, [{\r\n key: \"click\",\r\n value: function click(col, e) {\r\n var customcode = false;\r\n\r\n if (col.hasAttribute('data-html')) {\r\n // Column contains custom code.\r\n customcode = true;\r\n }\r\n\r\n var elm = e.target;\r\n this.builder.activeLink = null;\r\n\r\n if ((elm.tagName.toLowerCase() === 'a' || dom$t.parentsHasTag(elm, 'a')) && !customcode) {\r\n if (elm.childNodes.length > 0) {\r\n // Sometimes happens when click a link icon, but not exactly on the icon , but the link \r\n if (elm.childNodes[0].tagName) if (elm.childNodes[0].tagName.toLowerCase() === 'i' && elm.childNodes.length === 1 && elm.childNodes[0].innerHTML === '') {\r\n var icons = document.querySelectorAll('.icon-active');\r\n Array.prototype.forEach.call(icons, function (icon) {\r\n dom$t.removeClass(icon, 'icon-active');\r\n });\r\n dom$t.addClass(elm.childNodes[0], 'icon-active');\r\n dom$t.selectElementContents(elm.childNodes[0]);\r\n this.builder.activeIcon = elm.childNodes[0];\r\n }\r\n }\r\n\r\n if (elm.tagName.toLowerCase() === 'img') {\r\n return;\r\n }\r\n\r\n var link;\r\n\r\n if (elm.tagName.toLowerCase() === 'a') {\r\n link = elm;\r\n } else {\r\n var element = elm;\r\n\r\n while (element.tagName.toLowerCase() !== 'a') {\r\n element = element.parentNode;\r\n }\r\n\r\n link = element;\r\n }\r\n\r\n this.builder.activeLink = link;\r\n this.showTool(link);\r\n e.preventDefault();\r\n } else {\r\n this.hideTool();\r\n }\r\n }\r\n }, {\r\n key: \"showTool\",\r\n value: function showTool(link) {\r\n // Link tool\r\n var linkTool = this.linkTool;\r\n var linkDisplay = dom$t.getStyle(link, 'display');\r\n\r\n if (linkDisplay === 'inline-block') {\r\n linkTool.querySelector('.link-duplicate').style.display = 'block';\r\n linkTool.querySelector('.link-remove').style.display = 'block';\r\n } else {\r\n if (this.builder.activeIcon) {\r\n linkTool.querySelector('.link-duplicate').style.display = 'block';\r\n linkTool.querySelector('.link-remove').style.display = 'block';\r\n } else {\r\n linkTool.querySelector('.link-duplicate').style.display = 'none';\r\n linkTool.querySelector('.link-remove').style.display = 'none';\r\n }\r\n }\r\n\r\n var top = link.getBoundingClientRect().top;\r\n var left = link.getBoundingClientRect().left;\r\n linkTool.style.display = 'flex';\r\n var w = linkTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n\r\n var h = linkTool.offsetHeight;\r\n linkTool.style.top = top - h + window.pageYOffset - 3 + 'px';\r\n linkTool.style.left = left + link.offsetWidth - w + 'px';\r\n }\r\n }, {\r\n key: \"hideTool\",\r\n value: function hideTool() {\r\n this.linkTool.style.display = '';\r\n }\r\n }, {\r\n key: \"createLink\",\r\n value: function createLink() {\r\n var _this2 = this;\r\n\r\n var util = new Util(this.builder);\r\n var link;\r\n\r\n if (this.builder.activeLink) {\r\n link = this.builder.activeLink;\r\n } else {\r\n //Adjust selection: If cursor is on existing link, set active link (select the link if it is not icon)\r\n var elm;\r\n\r\n try {\r\n var curr;\r\n\r\n if (window.getSelection) {\r\n curr = window.getSelection().getRangeAt(0).commonAncestorContainer;\r\n\r\n if (curr.nodeType === 3) {\r\n //text node\r\n elm = curr.parentNode;\r\n } else {\r\n elm = curr;\r\n }\r\n } else if (document.selection) {\r\n curr = document.selection.createRange();\r\n elm = document.selection.createRange().parentElement();\r\n }\r\n } catch (e) {\r\n return;\r\n }\r\n\r\n if (elm.nodeName.toLowerCase() === 'a') {\r\n link = elm;\r\n } else {\r\n var element = elm;\r\n\r\n while (element.nodeName.toLowerCase() !== 'a') {\r\n if (element.tagName === 'BODY' || element.tagName === 'HTML') break;\r\n if (element.parentNode) element = element.parentNode;\r\n }\r\n\r\n if (element.nodeName.toLowerCase() === 'a') {\r\n link = element;\r\n }\r\n }\r\n\r\n if (link) {\r\n this.builder.activeLink = link;\r\n\r\n if (elm.nodeName.toLowerCase() === 'i' && elm.innerHTML === '') ; else {\r\n dom$t.selectElementContents(this.builder.activeLink);\r\n util.saveSelection();\r\n }\r\n }\r\n }\r\n\r\n var text = dom$t.getSelected();\r\n var modal = this.builderStuff.querySelector('.is-modal.createlink');\r\n\r\n if (this.builder.opts.onFileSelectClick || this.builder.opts.fileselect !== '') {\r\n modal.querySelector('.input-select').style.display = 'block';\r\n modal.querySelector('.input-url').style.width = '444px';\r\n var inputSelect = modal.querySelector('.input-select');\r\n dom$t.addEventListener(inputSelect, 'click', function (e) {\r\n if (_this2.builder.opts.onFileSelectClick) {\r\n _this2.builder.opts.onFileSelectClick({\r\n targetInput: modal.querySelector('.input-url'),\r\n theTrigger: modal.querySelector('.input-select')\r\n });\r\n } else {\r\n var modalFileSelect = _this2.builderStuff.querySelector('.is-modal.fileselect');\r\n\r\n if (modalFileSelect.querySelector('iframe').src === 'about:blank') {\r\n modalFileSelect.querySelector('iframe').src = _this2.builder.opts.fileselect;\r\n }\r\n\r\n util.showModal(modalFileSelect, false, null, false);\r\n }\r\n\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n });\r\n } else {\r\n modal.querySelector('.input-select').style.display = 'none';\r\n modal.querySelector('.input-url').style.width = '100%';\r\n }\r\n\r\n modal.querySelector('.input-url').value = '';\r\n modal.querySelector('.input-newwindow').checked = false;\r\n modal.querySelector('.input-title').value = '';\r\n modal.querySelector('.input-text').value = '';\r\n\r\n if (link) {\r\n modal.querySelector('.input-url').value = link.href;\r\n modal.querySelector('.input-title').value = link.title;\r\n modal.querySelector('.input-text').value = link.innerHTML;\r\n\r\n if (link.target === '_blank') {\r\n modal.querySelector('.input-newwindow').checked = true;\r\n } else {\r\n modal.querySelector('.input-newwindow').checked = false;\r\n }\r\n } else {\r\n modal.querySelector('.input-text').value = text;\r\n } // Show modal\r\n\r\n\r\n util.showModal(modal, true, function () {\r\n if (!util.appleMobile) util.restoreSelection();\r\n }, true);\r\n modal.querySelector('.input-url').focus();\r\n }\r\n }, {\r\n key: \"editLink\",\r\n value: function editLink() {\r\n var _this3 = this;\r\n\r\n var util = new Util(this.builder);\r\n var link = this.builder.activeLink;\r\n var modal = this.builderStuff.querySelector('.is-modal.createlink');\r\n\r\n if (this.builder.opts.onFileSelectClick || this.builder.opts.fileselect !== '') {\r\n modal.querySelector('.input-select').style.display = 'block';\r\n modal.querySelector('.input-url').style.width = '444px';\r\n var inputSelect = modal.querySelector('.input-select');\r\n dom$t.addEventListener(inputSelect, 'click', function () {\r\n if (_this3.builder.opts.onFileSelectClick) {\r\n _this3.builder.opts.onFileSelectClick({\r\n targetInput: modal.querySelector('.input-url'),\r\n theTrigger: modal.querySelector('.input-select')\r\n });\r\n } else {\r\n var modalFileSelect = _this3.builderStuff.querySelector('.is-modal.fileselect');\r\n\r\n if (modalFileSelect.querySelector('iframe').src === 'about:blank') {\r\n modalFileSelect.querySelector('iframe').src = _this3.builder.opts.fileselect;\r\n }\r\n\r\n util.showModal(modalFileSelect, false, null, false);\r\n }\r\n });\r\n } else {\r\n modal.querySelector('.input-select').style.display = 'none';\r\n modal.querySelector('.input-url').style.width = '100%';\r\n } // Get values\r\n\r\n\r\n var url = link.getAttribute('href');\r\n var target = link.getAttribute('target');\r\n var title = link.getAttribute('title');\r\n var linktext = link.innerHTML;\r\n modal.querySelector('.input-url').value = url;\r\n\r\n if (target === '_blank') {\r\n modal.querySelector('.input-newwindow').checked = true;\r\n } else {\r\n modal.querySelector('.input-newwindow').checked = false;\r\n }\r\n\r\n modal.querySelector('.input-title').value = title;\r\n modal.querySelector('.input-text').value = linktext; // Show modal\r\n\r\n util.showModal(modal, true, null, true);\r\n modal.querySelector('.input-url').focus();\r\n }\r\n }]);\r\n\r\n return Hyperlink;\r\n }();\r\n\r\n var dom$s = new Dom();\r\n\r\n var Spacer = /*#__PURE__*/function () {\r\n function Spacer(builder) {\r\n var _this = this;\r\n\r\n _classCallCheck$1(this, Spacer);\r\n\r\n this.builder = builder;\r\n var util = new Util(builder);\r\n this.util = util;\r\n var builderStuff = util.builderStuff();\r\n this.builderStuff = builderStuff;\r\n var spacerTool = builderStuff.querySelector('.is-spacer-tool');\r\n\r\n if (!spacerTool) {\r\n var html = \"\\n
\\n \\n \\n
\\n \");\r\n dom$s.appendHtml(builderStuff, html);\r\n spacerTool = builderStuff.querySelector('.is-spacer-tool');\r\n var btns = spacerTool.querySelectorAll('button');\r\n Array.prototype.forEach.call(btns, function (btn) {\r\n dom$s.addEventListener(btn, 'click', function () {\r\n _this.builder.uo.saveForUndo();\r\n\r\n var command = btn.getAttribute('data-value');\r\n var spacer = _this.builder.activeSpacer;\r\n\r\n if (command === '-') {\r\n if (dom$s.hasClass(spacer, 'height-300')) {\r\n dom$s.removeClass(spacer, 'height-300');\r\n dom$s.addClass(spacer, 'height-280');\r\n } else if (dom$s.hasClass(spacer, 'height-280')) {\r\n dom$s.removeClass(spacer, 'height-280');\r\n dom$s.addClass(spacer, 'height-260');\r\n } else if (dom$s.hasClass(spacer, 'height-260')) {\r\n dom$s.removeClass(spacer, 'height-260');\r\n dom$s.addClass(spacer, 'height-240');\r\n } else if (dom$s.hasClass(spacer, 'height-240')) {\r\n dom$s.removeClass(spacer, 'height-240');\r\n dom$s.addClass(spacer, 'height-220');\r\n } else if (dom$s.hasClass(spacer, 'height-220')) {\r\n dom$s.removeClass(spacer, 'height-220');\r\n dom$s.addClass(spacer, 'height-200');\r\n } else if (dom$s.hasClass(spacer, 'height-200')) {\r\n dom$s.removeClass(spacer, 'height-200');\r\n dom$s.addClass(spacer, 'height-180');\r\n } else if (dom$s.hasClass(spacer, 'height-180')) {\r\n dom$s.removeClass(spacer, 'height-180');\r\n dom$s.addClass(spacer, 'height-160');\r\n } else if (dom$s.hasClass(spacer, 'height-160')) {\r\n dom$s.removeClass(spacer, 'height-160');\r\n dom$s.addClass(spacer, 'height-140');\r\n } else if (dom$s.hasClass(spacer, 'height-140')) {\r\n dom$s.removeClass(spacer, 'height-140');\r\n dom$s.addClass(spacer, 'height-120');\r\n } else if (dom$s.hasClass(spacer, 'height-120')) {\r\n dom$s.removeClass(spacer, 'height-120');\r\n dom$s.addClass(spacer, 'height-100');\r\n } else if (dom$s.hasClass(spacer, 'height-100')) {\r\n dom$s.removeClass(spacer, 'height-100');\r\n dom$s.addClass(spacer, 'height-80');\r\n } else if (dom$s.hasClass(spacer, 'height-80')) {\r\n dom$s.removeClass(spacer, 'height-80');\r\n dom$s.addClass(spacer, 'height-60');\r\n } else if (dom$s.hasClass(spacer, 'height-60')) {\r\n dom$s.removeClass(spacer, 'height-60');\r\n dom$s.addClass(spacer, 'height-40');\r\n } else if (dom$s.hasClass(spacer, 'height-40')) {\r\n dom$s.removeClass(spacer, 'height-40');\r\n dom$s.addClass(spacer, 'height-20');\r\n } // else { }\r\n\r\n } else {\r\n if (dom$s.hasClass(spacer, 'height-20')) {\r\n dom$s.removeClass(spacer, 'height-20');\r\n dom$s.addClass(spacer, 'height-40');\r\n } else if (dom$s.hasClass(spacer, 'height-40')) {\r\n dom$s.removeClass(spacer, 'height-40');\r\n dom$s.addClass(spacer, 'height-60');\r\n } else if (dom$s.hasClass(spacer, 'height-60')) {\r\n dom$s.removeClass(spacer, 'height-60');\r\n dom$s.addClass(spacer, 'height-80');\r\n } else if (dom$s.hasClass(spacer, 'height-80')) {\r\n dom$s.removeClass(spacer, 'height-80');\r\n dom$s.addClass(spacer, 'height-100');\r\n } else if (dom$s.hasClass(spacer, 'height-100')) {\r\n dom$s.removeClass(spacer, 'height-100');\r\n dom$s.addClass(spacer, 'height-120');\r\n } else if (dom$s.hasClass(spacer, 'height-120')) {\r\n dom$s.removeClass(spacer, 'height-120');\r\n dom$s.addClass(spacer, 'height-140');\r\n } else if (dom$s.hasClass(spacer, 'height-140')) {\r\n dom$s.removeClass(spacer, 'height-140');\r\n dom$s.addClass(spacer, 'height-160');\r\n } else if (dom$s.hasClass(spacer, 'height-160')) {\r\n dom$s.removeClass(spacer, 'height-160');\r\n dom$s.addClass(spacer, 'height-180');\r\n } else if (dom$s.hasClass(spacer, 'height-180')) {\r\n dom$s.removeClass(spacer, 'height-180');\r\n dom$s.addClass(spacer, 'height-200');\r\n } else if (dom$s.hasClass(spacer, 'height-200')) {\r\n dom$s.removeClass(spacer, 'height-200');\r\n dom$s.addClass(spacer, 'height-220');\r\n } else if (dom$s.hasClass(spacer, 'height-220')) {\r\n dom$s.removeClass(spacer, 'height-220');\r\n dom$s.addClass(spacer, 'height-240');\r\n } else if (dom$s.hasClass(spacer, 'height-240')) {\r\n dom$s.removeClass(spacer, 'height-240');\r\n dom$s.addClass(spacer, 'height-260');\r\n } else if (dom$s.hasClass(spacer, 'height-260')) {\r\n dom$s.removeClass(spacer, 'height-260');\r\n dom$s.addClass(spacer, 'height-280');\r\n } else if (dom$s.hasClass(spacer, 'height-280')) {\r\n dom$s.removeClass(spacer, 'height-280');\r\n dom$s.addClass(spacer, 'height-300');\r\n } // else { }\r\n\r\n }\r\n\r\n _this.showTool(spacer); //Trigger Change event\r\n\r\n\r\n _this.builder.opts.onChange(); //Trigger Render event\r\n\r\n\r\n _this.builder.opts.onRender();\r\n });\r\n });\r\n }\r\n\r\n this.spacerTool = spacerTool;\r\n }\r\n\r\n _createClass$1(Spacer, [{\r\n key: \"click\",\r\n value: function click(e) {\r\n var elm = e.target;\r\n\r\n if (dom$s.hasClass(elm, 'spacer')) {\r\n this.builder.activeSpacer = elm;\r\n this.showTool(elm);\r\n } else {\r\n this.hideTool();\r\n }\r\n }\r\n }, {\r\n key: \"showTool\",\r\n value: function showTool(elm) {\r\n var top = elm.getBoundingClientRect().top + window.pageYOffset;\r\n var left = elm.getBoundingClientRect().left;\r\n this.spacerTool.style.display = 'flex';\r\n var w = this.spacerTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.\r\n\r\n var h = this.spacerTool.offsetHeight;\r\n this.spacerTool.style.top = top + (elm.offsetHeight - h) / 2 + 'px';\r\n this.spacerTool.style.left = left + (elm.offsetWidth - w) / 2 + 'px';\r\n }\r\n }, {\r\n key: \"hideTool\",\r\n value: function hideTool() {\r\n this.spacerTool.style.display = '';\r\n }\r\n }]);\r\n\r\n return Spacer;\r\n }();\r\n\r\n var dom$r = new Dom();\r\n\r\n var Module = /*#__PURE__*/function () {\r\n function Module(builder) {\r\n var _this = this;\r\n\r\n _classCallCheck$1(this, Module);\r\n\r\n this.builder = builder;\r\n var util = new Util(builder);\r\n this.util = util;\r\n var builderStuff = util.builderStuff();\r\n this.builderStuff = builderStuff;\r\n var moduleTool = builderStuff.querySelector('.is-module-tool');\r\n var moduleModal;\r\n\r\n if (!moduleTool) {\r\n var html = \"\\n
\\n \\n
\\n\\n \\n \\n \\n
\\n
\\n
\").concat(util.out('Module Settings'), \"
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \");\r\n dom$r.appendHtml(builderStuff, html);\r\n moduleTool = builderStuff.querySelector('.is-module-tool');\r\n moduleModal = builderStuff.querySelector('.is-modal.custommodule');\r\n var btn = moduleTool.querySelector('button');\r\n dom$r.addEventListener(btn, 'click', function () {\r\n // old: 10100\r\n var module = _this.builder.activeModule; //-------- Set a flag to indicate active module -----------\r\n\r\n dom$r.removeAttributes(document.querySelectorAll('[data-module-active]'), 'data-module-active');\r\n module.setAttribute('data-module-active', '1'); //-------- /Set a flag to indicate active module -----------\r\n //show modal\r\n\r\n var modulename = module.getAttribute('data-module');\r\n var moduleDesc = module.getAttribute('data-module-desc');\r\n\r\n if (moduleDesc) {\r\n moduleModal.querySelector('.is-modal-bar').innerHTML = moduleDesc;\r\n } else {\r\n moduleModal.querySelector('.is-modal-bar').innerHTML = _this.util.out('Module Settings');\r\n }\r\n\r\n var w = module.getAttribute('data-dialog-width');\r\n\r\n if (!w || w === '') {\r\n w = '900px';\r\n }\r\n\r\n var h = module.getAttribute('data-dialog-height');\r\n\r\n if (!h || h === '') {\r\n h = '570px';\r\n }\r\n\r\n moduleModal.querySelector('div').style.maxWidth = w;\r\n moduleModal.querySelector('div').style.height = h; // OLD\r\n // Find subblocks (previously is-builder) in custom code blocks and save them to data-html-1, data-html-2, and so on.\r\n // let tmpbuilder = this.builderStuff.querySelector('#tmp_buildercontent'); \r\n // if(tmpbuilder) tmpbuilder.parentNode.removeChild(tmpbuilder);\r\n // dom.appendHtml(this.builderStuff, '');\r\n // tmpbuilder = this.builderStuff.querySelector('#tmp_buildercontent'); \r\n // NEW\r\n\r\n var index = 1;\r\n var builders = module.querySelectorAll('[data-subblock]');\r\n Array.prototype.forEach.call(builders, function (builder) {\r\n var builderhtml = builder.innerHTML;\r\n module.setAttribute('data-html-' + index, encodeURIComponent(builderhtml));\r\n index++;\r\n });\r\n /* OLD\r\n var index = 1;\r\n const builders = module.querySelectorAll('is-builder'); // OLD\r\n Array.prototype.forEach.call(builders, (builder) => {\r\n //if(dom.parentsHasClass(builder,'slick-cloned')) return; // direct (LATER)\r\n \r\n //Cleaning ( builder cleaning commented because its content that's matter => will be saved. See below.. )\r\n // builder.style.transform = '';\r\n // builder.style.WebkitTransform= '';\r\n // builder.style.MozTransform= '';\r\n // builder.removeAttribute('data-sort');\r\n // builder.removeAttribute('hidesnippetaddtool');\r\n // builder.removeAttribute('gray');\r\n // builder.removeAttribute('rowoutline');\r\n // builder.removeAttribute('grayoutline');\r\n // builder.removeAttribute('hideoutline');\r\n // builder.removeAttribute('leftrowtool');\r\n // builder.removeAttribute('minimal');\r\n // builder.removeAttribute('clean');\r\n // builder.removeAttribute('grideditor');\r\n // builder.removeAttribute('gridoutline');\r\n // builder.removeAttribute('gridoutline'); // old\r\n // builder.removeAttribute('draggridoutline'); // old\r\n // builder.removeAttribute('between-blocks-left'); // old\r\n // builder.removeAttribute('between-blocks-center'); // old \r\n // builder.removeAttribute('hideelementhighlight'); \r\n \r\n let builderhtml = builder.innerHTML;\r\n tmpbuilder.innerHTML = builderhtml;\r\n let elms = tmpbuilder.querySelectorAll('.elm-active');\r\n dom.removeClasses(elms, 'elm-active');\r\n elms = tmpbuilder.querySelectorAll('.elm-inspected');\r\n dom.removeClasses(elms, 'elm-inspected');\r\n elms = tmpbuilder.querySelectorAll('.cell-active');\r\n dom.removeClasses(elms, 'cell-active');\r\n elms = tmpbuilder.querySelectorAll('.row-active');\r\n dom.removeClasses(elms, 'row-active');\r\n elms = tmpbuilder.querySelectorAll('.row-outline');\r\n dom.removeClasses(elms, 'row-outline');\r\n //elms = tmpbuilder.querySelectorAll('.is-builder');\r\n //dom.removeClasses(elms, 'is-builder');\r\n elms = tmpbuilder.querySelectorAll('.row-outline');\r\n dom.removeClasses(elms, 'row-outline');\r\n elms = tmpbuilder.querySelectorAll('[data-click]');\r\n dom.removeAttributes(elms, 'data-click');\r\n elms = tmpbuilder.querySelectorAll('[contenteditable]');\r\n dom.removeAttributes(elms, 'contenteditable');\r\n elms = tmpbuilder.querySelectorAll('[data-module-active]');\r\n dom.removeAttributes(elms, 'data-module-active');\r\n dom.removeElements( tmpbuilder.querySelectorAll('.is-row-tool') );\r\n dom.removeElements( tmpbuilder.querySelectorAll('.is-rowadd-tool') );\r\n dom.removeElements( tmpbuilder.querySelectorAll('.ovl') );\r\n dom.removeElements( tmpbuilder.querySelectorAll('.irow-add-initial') );\r\n \r\n elms = tmpbuilder.querySelectorAll('[data-keep]');\r\n dom.removeAttributes(elms, 'data-keep');\r\n builderhtml = tmpbuilder.innerHTML.trim();\r\n builderhtml = builderhtml.replace(/