{"version":3,"file":"js/scripts.bundle.js","mappings":";;;;;;;;;;AAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;AChLa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B,qCAAqC;AAC1F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;AACD;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC7Da;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;ACrRa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;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;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;ACtZa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC5Fa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;ACnKa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC/Ma;AACb;AACA;AACA;AACA;AACA;AACA;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,UAAU;AACV;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G;AAC3G;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,0DAA0D;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;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;AACA,+CAA+C;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC1+Ba;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,uCAAuC,IAAI,4CAA4C;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;ACjQa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC/Ta;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC7Ka;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,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,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;ACtba;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC7Ua;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;AC5Ta;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;;ACjLa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;ACxNa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAqD;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,yBAAyB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;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,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA,cAAc;AACd,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,cAAc;AACd,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wCAAwC;AACxC;AACA;AACA,cAAc;AACd;AACA;AACA,wCAAwC;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;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,wDAAwD,oBAAoB,eAAe;AAC3F;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,oDAAoD,iBAAiB;AACrE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,cAAc,0BAA0B;AACxC,oDAAoD,iBAAiB;AACrE;AACA;AACA,8EAA8E;AAC9E;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;AAChB,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,EAAE;AAClC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oDAAoD,2BAA2B;AAC/E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wEAAwE,eAAe;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC,EAAE,uCAAuC,EAAE,uCAAuC;AACxJ,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wEAAwE,eAAe;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4CAA4C,EAAE,4CAA4C,EAAE,4CAA4C;AACvK,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;AC7hDa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,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,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;AACT;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,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,iCAAiC;AACjC;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;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,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,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,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;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;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,IAAI,KAA6B;AACjC;AACA;;;;;;;;;;;AC1ba;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACzCY;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACzBY;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;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,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACtIY;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;UCzED;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;;;;;ACtBA;AACA,gBAAgB,mBAAO,CAAC,uEAA6B;AACrD,mBAAmB,mBAAO,CAAC,6EAAgC;AAC3D,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD,wBAAwB,mBAAO,CAAC,yFAAsC;AACtE,oBAAoB,mBAAO,CAAC,+EAAiC;AAC7D,sBAAsB,mBAAO,CAAC,qFAAoC;AAClE,gBAAgB,mBAAO,CAAC,uEAA6B;AACrD,yBAAyB,mBAAO,CAAC,2FAAuC;AACxE,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD,qBAAqB,mBAAO,CAAC,iFAAkC;AAC/D,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD,mBAAmB,mBAAO,CAAC,6EAAgC;AAC3D,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD,mBAAmB,mBAAO,CAAC,6EAAgC;AAC3D,kBAAkB,mBAAO,CAAC,2EAA+B;AACzD;AACA;AACA,eAAe,mBAAO,CAAC,6DAAwB;AAC/C,uBAAuB,mBAAO,CAAC,iEAA0B;AACzD,yBAAyB,mBAAO,CAAC,qEAA4B;AAC7D,wBAAwB,mBAAO,CAAC,mEAA2B;AAC3D,yBAAyB,mBAAO,CAAC,qEAA4B","sources":["webpack://metronic/../demo1/src/js/components/blockui.js","webpack://metronic/../demo1/src/js/components/cookie.js","webpack://metronic/../demo1/src/js/components/dialer.js","webpack://metronic/../demo1/src/js/components/drawer.js","webpack://metronic/../demo1/src/js/components/event-handler.js","webpack://metronic/../demo1/src/js/components/feedback.js","webpack://metronic/../demo1/src/js/components/image-input.js","webpack://metronic/../demo1/src/js/components/menu.js","webpack://metronic/../demo1/src/js/components/password-meter.js","webpack://metronic/../demo1/src/js/components/scroll.js","webpack://metronic/../demo1/src/js/components/scrolltop.js","webpack://metronic/../demo1/src/js/components/search.js","webpack://metronic/../demo1/src/js/components/stepper.js","webpack://metronic/../demo1/src/js/components/sticky.js","webpack://metronic/../demo1/src/js/components/swapper.js","webpack://metronic/../demo1/src/js/components/toggle.js","webpack://metronic/../demo1/src/js/components/util.js","webpack://metronic/../demo1/src/js/layout/app.js","webpack://metronic/../demo1/src/js/layout/aside.js","webpack://metronic/../demo1/src/js/layout/explore.js","webpack://metronic/../demo1/src/js/layout/search.js","webpack://metronic/../demo1/src/js/layout/toolbar.js","webpack://metronic/webpack/bootstrap","webpack://metronic/./webpack/scripts.demo1.js"],"sourcesContent":["\"use strict\";\r\n\r\n// Class definition\r\nvar KTBlockUI = function(element, options) {\r\n //////////////////////////////\r\n // ** Private variables ** //\r\n //////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n zIndex: false,\r\n overlayClass: '',\r\n overflow: 'hidden',\r\n message: ''\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('blockui') ) {\r\n the = KTUtil.data(element).get('blockui');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.element = element;\r\n the.overlayElement = null;\r\n the.blocked = false;\r\n the.positionChanged = false;\r\n the.overflowChanged = false;\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('blockui', the);\r\n }\r\n\r\n var _block = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.blockui.block', the) === false ) {\r\n return;\r\n }\r\n\r\n var isPage = (the.element.tagName === 'BODY');\r\n \r\n var position = KTUtil.css(the.element, 'position');\r\n var overflow = KTUtil.css(the.element, 'overflow');\r\n var zIndex = isPage ? 10000 : 1;\r\n\r\n if (the.options.zIndex > 0) {\r\n zIndex = the.options.zIndex;\r\n } else {\r\n if (KTUtil.css(the.element, 'z-index') != 'auto') {\r\n zIndex = KTUtil.css(the.element, 'z-index');\r\n }\r\n }\r\n\r\n the.element.classList.add('blockui');\r\n\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n KTUtil.css(the.element, 'position', 'relative');\r\n the.positionChanged = true;\r\n }\r\n\r\n if (the.options.overflow === 'hidden' && overflow === 'visible') { \r\n KTUtil.css(the.element, 'overflow', 'hidden');\r\n the.overflowChanged = true;\r\n }\r\n\r\n the.overlayElement = document.createElement('DIV'); \r\n the.overlayElement.setAttribute('class', 'blockui-overlay ' + the.options.overlayClass);\r\n \r\n the.overlayElement.innerHTML = the.options.message;\r\n\r\n KTUtil.css(the.overlayElement, 'z-index', zIndex);\r\n\r\n the.element.append(the.overlayElement);\r\n the.blocked = true;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.blockui.after.blocked', the) === false\r\n }\r\n\r\n var _release = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.blockui.release', the) === false ) {\r\n return;\r\n }\r\n\r\n the.element.classList.add('blockui');\r\n \r\n if (the.positionChanged) {\r\n KTUtil.css(the.element, 'position', '');\r\n }\r\n\r\n if (the.overflowChanged) {\r\n KTUtil.css(the.element, 'overflow', '');\r\n }\r\n\r\n if (the.overlayElement) {\r\n KTUtil.remove(the.overlayElement);\r\n } \r\n\r\n the.blocked = false;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.blockui.released', the);\r\n }\r\n\r\n var _isBlocked = function() {\r\n return the.blocked;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('blockui');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.block = function() {\r\n _block();\r\n }\r\n\r\n the.release = function() {\r\n _release();\r\n }\r\n\r\n the.isBlocked = function() {\r\n return _isBlocked();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTBlockUI.getInstance = function(element) {\r\n if (element !== null && KTUtil.data(element).has('blockui')) {\r\n return KTUtil.data(element).get('blockui');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTBlockUI;\r\n}","\"use strict\";\r\n// DOCS: https://javascript.info/cookie\r\n\r\n// Class definition\r\nvar KTCookie = function() {\r\n return {\r\n // returns the cookie with the given name,\r\n // or undefined if not found\r\n get: function(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n\r\n return matches ? decodeURIComponent(matches[1]) : null;\r\n },\r\n\r\n // Please note that a cookie value is encoded,\r\n // so getCookie uses a built-in decodeURIComponent function to decode it.\r\n set: function(name, value, options) {\r\n if ( typeof options === \"undefined\" || options === null ) {\r\n options = {};\r\n }\r\n\r\n options = Object.assign({}, {\r\n path: '/'\r\n }, options);\r\n\r\n if ( options.expires instanceof Date ) {\r\n options.expires = options.expires.toUTCString();\r\n }\r\n\r\n var updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n for ( var optionKey in options ) {\r\n if ( options.hasOwnProperty(optionKey) === false ) {\r\n continue;\r\n }\r\n\r\n updatedCookie += \"; \" + optionKey;\r\n var optionValue = options[optionKey];\r\n\r\n if ( optionValue !== true ) {\r\n updatedCookie += \"=\" + optionValue;\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie;\r\n },\r\n\r\n // To remove a cookie, we can call it with a negative expiration date:\r\n remove: function(name) {\r\n this.set(name, \"\", {\r\n 'max-age': -1\r\n });\r\n }\r\n }\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTCookie;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTDialer = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n min: null,\r\n max: null,\r\n step: 1,\r\n decimals: 0,\r\n prefix: \"\",\r\n suffix: \"\"\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n // Constructor\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('dialer') === true ) {\r\n the = KTUtil.data(element).get('dialer');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n // Initialize\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Elements\r\n the.element = element;\r\n the.incElement = the.element.querySelector('[data-kt-dialer-control=\"increase\"]');\r\n the.decElement = the.element.querySelector('[data-kt-dialer-control=\"decrease\"]');\r\n the.inputElement = the.element.querySelector('input[type]'); \r\n \r\n // Set Values\r\n if (_getOption('decimals')) {\r\n the.options.decimals = parseInt(_getOption('decimals'));\r\n }\r\n \r\n if (_getOption('prefix')) {\r\n the.options.prefix = _getOption('prefix');\r\n }\r\n \r\n if (_getOption('suffix')) {\r\n the.options.suffix = _getOption('suffix');\r\n }\r\n \r\n if (_getOption('step')) {\r\n the.options.step = parseFloat(_getOption('step'));\r\n }\r\n\r\n if (_getOption('min')) {\r\n the.options.min = parseFloat(_getOption('min'));\r\n }\r\n\r\n if (_getOption('max')) {\r\n the.options.max = parseFloat(_getOption('max'));\r\n }\r\n\r\n the.value = parseFloat(the.inputElement.value.replace(/[^\\d.]/g, '')); \r\n\r\n _setValue();\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('dialer', the);\r\n }\r\n\r\n // Handlers\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.incElement, 'click', function(e) {\r\n e.preventDefault();\r\n \r\n _increase();\r\n });\r\n\r\n KTUtil.addEvent(the.decElement, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _decrease();\r\n });\r\n\r\n KTUtil.addEvent(the.inputElement, 'input', function(e) {\r\n e.preventDefault();\r\n\r\n _setValue();\r\n });\r\n }\r\n\r\n // Event handlers\r\n var _increase = function() {\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.increase', the);\r\n\r\n the.inputElement.value = the.value + the.options.step;\r\n _setValue();\r\n\r\n // Trigger \"before.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.increased', the);\r\n\r\n return the;\r\n }\r\n\r\n var _decrease = function() {\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.decrease', the);\r\n\r\n the.inputElement.value = the.value - the.options.step; \r\n console.log('dec:' + the.inputElement.value);\r\n _setValue();\r\n\r\n // Trigger \"before.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.decreased', the);\r\n\r\n return the;\r\n }\r\n\r\n // Set Input Value\r\n var _setValue = function() {\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.change', the);\r\n\r\n the.value = _parse(the.inputElement.value); \r\n\r\n console.log('min:' + the.options.min);\r\n \r\n if (the.options.min !== null && the.value < the.options.min) {\r\n the.value = the.options.min;\r\n console.log('reset: min');\r\n }\r\n\r\n if (the.options.max !== null && the.value > the.options.max) {\r\n the.value = the.options.max;\r\n }\r\n\r\n the.inputElement.value = _format(the.value);\r\n\r\n // Trigger input change event\r\n the.inputElement.dispatchEvent(new Event('change'));\r\n\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.changed', the);\r\n }\r\n\r\n var _parse = function(val) {\r\n val = val\r\n .replace(/[^0-9.-]/g, '') // remove chars except number, hyphen, point. \r\n .replace(/(\\..*)\\./g, '$1') // remove multiple points.\r\n .replace(/(?!^)-/g, '') // remove middle hyphen.\r\n .replace(/^0+(\\d)/gm, '$1'); // remove multiple leading zeros. <-- I added this.\r\n\r\n val = parseFloat(val);\r\n\r\n if (isNaN(val)) {\r\n val = 0;\r\n } \r\n\r\n return val;\r\n }\r\n\r\n // Format\r\n var _format = function(val){\r\n console.log('val:' + val);\r\n\r\n return the.options.prefix + parseFloat(val).toFixed(the.options.decimals) + the.options.suffix; \r\n }\r\n\r\n // Get option\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-dialer-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-dialer-' + name);\r\n var value = attr; \r\n\r\n return value;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('dialer');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.increase = function() {\r\n return _increase();\r\n }\r\n\r\n the.decrease = function() {\r\n return _decrease();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTDialer.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('dialer') ) {\r\n return KTUtil.data(element).get('dialer');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTDialer.createInstances = function(selector = '[data-kt-dialer=\"true\"]') {\r\n // Get instances\r\n var elements = document.body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n // Initialize instances\r\n new KTDialer(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTDialer.init = function() {\r\n KTDialer.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTDialer.init);\r\n} else {\r\n KTDialer.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTDialer;\r\n}","\"use strict\";\r\n\r\n// Class definition\r\nvar KTDrawer = function(element, options) {\r\n //////////////////////////////\r\n // ** Private variables ** //\r\n //////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n overlay: true,\r\n direction: 'end',\r\n baseClass: 'drawer',\r\n overlayClass: 'drawer-overlay'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('drawer') ) {\r\n the = KTUtil.data(element).get('drawer');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('drawer');\r\n the.element = element;\r\n the.overlayElement = null;\r\n the.name = the.element.getAttribute('data-kt-drawer-name');\r\n the.shown = false;\r\n the.lastWidth;\r\n the.toggleElement = null;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-drawer', 'true');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Update Instance\r\n _update();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('drawer', the);\r\n }\r\n\r\n var _handlers = function() {\r\n var togglers = _getOption('toggle');\r\n var closers = _getOption('close');\r\n\r\n if ( togglers !== null && togglers.length > 0 ) {\r\n KTUtil.on(body, togglers, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n the.toggleElement = this;\r\n _toggle();\r\n });\r\n }\r\n\r\n if ( closers !== null && closers.length > 0 ) {\r\n KTUtil.on(body, closers, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n the.closeElement = this;\r\n _hide();\r\n });\r\n }\r\n }\r\n\r\n var _toggle = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.drawer.toggle', the) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.shown === true ) {\r\n _hide();\r\n } else {\r\n _show();\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.drawer.toggled', the);\r\n }\r\n\r\n var _hide = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.drawer.hide', the) === false ) {\r\n return;\r\n }\r\n\r\n the.shown = false;\r\n\r\n _deleteOverlay();\r\n\r\n body.removeAttribute('data-kt-drawer-' + the.name, 'on');\r\n body.removeAttribute('data-kt-drawer');\r\n\r\n KTUtil.removeClass(the.element, the.options.baseClass + '-on');\r\n\r\n if ( the.toggleElement !== null ) {\r\n KTUtil.removeClass(the.toggleElement, 'active');\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.drawer.after.hidden', the) === false\r\n }\r\n\r\n var _show = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.drawer.show', the) === false ) {\r\n return;\r\n }\r\n\r\n the.shown = true;\r\n\r\n _createOverlay();\r\n body.setAttribute('data-kt-drawer-' + the.name, 'on');\r\n body.setAttribute('data-kt-drawer', 'on');\r\n\r\n KTUtil.addClass(the.element, the.options.baseClass + '-on');\r\n\r\n if ( the.toggleElement !== null ) {\r\n KTUtil.addClass(the.toggleElement, 'active');\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.drawer.shown', the);\r\n }\r\n\r\n var _update = function() {\r\n var width = _getWidth();\r\n var direction = _getOption('direction');\r\n\r\n // Reset state\r\n if ( KTUtil.hasClass(the.element, the.options.baseClass + '-on') === true && String(body.getAttribute('data-kt-drawer-' + the.name + '-')) === 'on' ) {\r\n the.shown = true;\r\n } else {\r\n the.shown = false;\r\n } \r\n\r\n // Activate/deactivate\r\n if ( _getOption('activate') === true ) {\r\n KTUtil.addClass(the.element, the.options.baseClass);\r\n KTUtil.addClass(the.element, the.options.baseClass + '-' + direction);\r\n KTUtil.css(the.element, 'width', width, true);\r\n\r\n the.lastWidth = width;\r\n } else {\r\n KTUtil.css(the.element, 'width', '');\r\n\r\n KTUtil.removeClass(the.element, the.options.baseClass);\r\n KTUtil.removeClass(the.element, the.options.baseClass + '-' + direction);\r\n\r\n _hide();\r\n }\r\n }\r\n\r\n var _createOverlay = function() {\r\n if ( _getOption('overlay') === true ) {\r\n the.overlayElement = document.createElement('DIV');\r\n\r\n KTUtil.css(the.overlayElement, 'z-index', KTUtil.css(the.element, 'z-index') - 1); // update\r\n\r\n body.append(the.overlayElement);\r\n\r\n KTUtil.addClass(the.overlayElement, _getOption('overlay-class'));\r\n\r\n KTUtil.addEvent(the.overlayElement, 'click', function(e) {\r\n e.preventDefault();\r\n _hide();\r\n });\r\n }\r\n }\r\n\r\n var _deleteOverlay = function() {\r\n if ( the.overlayElement !== null ) {\r\n KTUtil.remove(the.overlayElement);\r\n }\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-drawer-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-drawer-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _getWidth = function() {\r\n var width = _getOption('width');\r\n\r\n if ( width === 'auto') {\r\n width = KTUtil.css(the.element, 'width');\r\n }\r\n\r\n return width;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('drawer');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.toggle = function() {\r\n return _toggle();\r\n }\r\n\r\n the.show = function() {\r\n return _show();\r\n }\r\n\r\n the.hide = function() {\r\n return _hide();\r\n }\r\n\r\n the.isShown = function() {\r\n return the.shown;\r\n }\r\n\r\n the.update = function() {\r\n _update();\r\n }\r\n\r\n the.goElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTDrawer.getInstance = function(element) {\r\n if (element !== null && KTUtil.data(element).has('drawer')) {\r\n return KTUtil.data(element).get('drawer');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Hide all drawers and skip one if provided\r\nKTDrawer.hideAll = function(skip = null, selector = '[data-kt-drawer=\"true\"]') {\r\n var items = document.querySelectorAll(selector);\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var drawer = KTDrawer.getInstance(item);\r\n\r\n if (!drawer) {\r\n continue;\r\n }\r\n\r\n if ( skip ) {\r\n if ( item !== skip ) {\r\n drawer.hide();\r\n }\r\n } else {\r\n drawer.hide();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Update all drawers\r\nKTDrawer.updateAll = function(selector = '[data-kt-drawer=\"true\"]') {\r\n var items = document.querySelectorAll(selector);\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var drawer = KTDrawer.getInstance(item);\r\n\r\n if (drawer) {\r\n drawer.update();;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Create instances\r\nKTDrawer.createInstances = function(selector = '[data-kt-drawer=\"true\"]') {\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n // Initialize Menus\r\n var elements = body.querySelectorAll(selector);\r\n var drawer;\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n drawer = new KTDrawer(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Toggle instances\r\nKTDrawer.handleShow = function() {\r\n // External drawer toggle handler\r\n KTUtil.on(document.body, '[data-kt-drawer-show=\"true\"][data-kt-drawer-target]', 'click', function(e) {\r\n var element = document.querySelector(this.getAttribute('data-kt-drawer-target'));\r\n\r\n if (element) {\r\n KTDrawer.getInstance(element).show();\r\n } \r\n });\r\n}\r\n\r\n// Dismiss instances\r\nKTDrawer.handleDismiss = function() {\r\n // External drawer toggle handler\r\n KTUtil.on(document.body, '[data-kt-drawer-dismiss=\"true\"]', 'click', function(e) {\r\n var element = this.closest('[data-kt-drawer=\"true\"]');\r\n\r\n if (element) {\r\n var drawer = KTDrawer.getInstance(element);\r\n if (drawer.isShown()) {\r\n drawer.hide();\r\n }\r\n } \r\n });\r\n}\r\n\r\n// Window resize Handling\r\nwindow.addEventListener('resize', function() {\r\n var timer;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update drawer instances on window resize\r\n var elements = body.querySelectorAll('[data-kt-drawer=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var drawer = KTDrawer.getInstance(elements[i]);\r\n if (drawer) {\r\n drawer.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n});\r\n\r\n// Global initialization\r\nKTDrawer.init = function() {\r\n KTDrawer.createInstances();\r\n KTDrawer.handleShow();\r\n KTDrawer.handleDismiss();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTDrawer.init);\r\n} else {\r\n KTDrawer.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTDrawer;\r\n}","\"use strict\";\r\n\r\n// Class definition\r\nvar KTEventHandler = function() {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var _handlers = {};\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n var _triggerEvent = function(element, name, target, e) {\r\n if ( KTUtil.data(element).has(name) === true ) {\r\n var handlerId = KTUtil.data(element).get(name);\r\n\r\n if ( _handlers[name] && _handlers[name][handlerId] ) {\r\n var handler = _handlers[name][handlerId];\r\n\r\n if ( handler.name === name ) {\r\n if ( handler.one == true ) {\r\n if ( handler.fired == false ) {\r\n _handlers[name][handlerId].fired = true;\r\n\r\n return handler.callback.call(this, target, e);\r\n }\r\n } else {\r\n return handler.callback.call(this, target, e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _addEvent = function(element, name, callback, one) {\r\n var handlerId = KTUtil.getUniqueId('event');\r\n\r\n KTUtil.data(element).set(name, handlerId);\r\n\r\n if ( !_handlers[name] ) {\r\n _handlers[name] = {};\r\n }\r\n\r\n _handlers[name][handlerId] = {\r\n name: name,\r\n callback: callback,\r\n one: one,\r\n fired: false\r\n };\r\n }\r\n\r\n var _removeEvent = function(element, name) {\r\n var handlerId = KTUtil.data(element).get(name);\r\n\r\n if (_handlers[name] && _handlers[name][handlerId]) {\r\n delete _handlers[name][handlerId];\r\n }\r\n }\r\n\r\n ////////////////////////////\r\n // ** Public Methods ** //\r\n ////////////////////////////\r\n return {\r\n trigger: function(element, name, target, e) {\r\n return _triggerEvent(element, name, target, e);\r\n },\r\n\r\n on: function(element, name, handler) {\r\n return _addEvent(element, name, handler);\r\n },\r\n\r\n one: function(element, name, handler) {\r\n return _addEvent(element, name, handler, true);\r\n },\r\n\r\n off: function(element, name) {\r\n return _removeEvent(element, name);\r\n },\r\n\r\n debug: function() {\r\n for (var b in _handlers) {\r\n if ( _handlers.hasOwnProperty(b) ) console.log(b);\r\n }\r\n }\r\n }\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTEventHandler;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTFeedback = function(options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n // Default options\r\n var defaultOptions = {\r\n 'width' : 100,\r\n 'placement' : 'top-center',\r\n 'content' : '',\r\n 'type': 'popup'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n _init();\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('feedback');\r\n the.element;\r\n the.shown = false;\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('feedback', the);\r\n }\r\n\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.element, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _go();\r\n });\r\n }\r\n\r\n var _show = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.feedback.show', the) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.options.type === 'popup') {\r\n _showPopup();\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.feedback.shown', the);\r\n\r\n return the;\r\n }\r\n\r\n var _hide = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.feedback.hide', the) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.options.type === 'popup') {\r\n _hidePopup();\r\n }\r\n\r\n the.shown = false;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.feedback.hidden', the);\r\n\r\n return the;\r\n }\r\n\r\n var _showPopup = function() {\r\n the.element = document.createElement(\"DIV\");\r\n\r\n KTUtil.addClass(the.element, 'feedback feedback-popup');\r\n KTUtil.setHTML(the.element, the.options.content);\r\n\r\n if (the.options.placement == 'top-center') {\r\n _setPopupTopCenterPosition();\r\n }\r\n\r\n body.appendChild(the.element);\r\n\r\n KTUtil.addClass(the.element, 'feedback-shown');\r\n\r\n the.shown = true;\r\n }\r\n\r\n var _setPopupTopCenterPosition = function() {\r\n var width = KTUtil.getResponsiveValue(the.options.width);\r\n var height = KTUtil.css(the.element, 'height');\r\n\r\n KTUtil.addClass(the.element, 'feedback-top-center');\r\n\r\n KTUtil.css(the.element, 'width', width);\r\n KTUtil.css(the.element, 'left', '50%');\r\n KTUtil.css(the.element, 'top', '-' + height);\r\n }\r\n\r\n var _hidePopup = function() {\r\n the.element.remove();\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('feedback');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.show = function() {\r\n return _show();\r\n }\r\n\r\n the.hide = function() {\r\n return _hide();\r\n }\r\n\r\n the.isShown = function() {\r\n return the.shown;\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTFeedback;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTImageInput = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n \r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('image-input') === true ) {\r\n the = KTUtil.data(element).get('image-input');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('image-input');\r\n\r\n // Elements\r\n the.element = element;\r\n the.inputElement = KTUtil.find(element, 'input[type=\"file\"]');\r\n the.wrapperElement = KTUtil.find(element, '.image-input-wrapper');\r\n the.cancelElement = KTUtil.find(element, '[data-kt-image-input-action=\"cancel\"]');\r\n the.removeElement = KTUtil.find(element, '[data-kt-image-input-action=\"remove\"]');\r\n the.hiddenElement = KTUtil.find(element, 'input[type=\"hidden\"]');\r\n the.src = KTUtil.css(the.wrapperElement, 'backgroundImage');\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-image-input', 'true');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('image-input', the);\r\n }\r\n\r\n // Init Event Handlers\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.inputElement, 'change', _change);\r\n KTUtil.addEvent(the.cancelElement, 'click', _cancel);\r\n KTUtil.addEvent(the.removeElement, 'click', _remove);\r\n }\r\n\r\n // Event Handlers\r\n var _change = function(e) {\r\n e.preventDefault();\r\n\r\n if ( the.inputElement !== null && the.inputElement.files && the.inputElement.files[0] ) {\r\n // Fire change event\r\n if ( KTEventHandler.trigger(the.element, 'kt.imageinput.change', the) === false ) {\r\n return;\r\n }\r\n\r\n var reader = new FileReader();\r\n\r\n reader.onload = function(e) {\r\n KTUtil.css(the.wrapperElement, 'background-image', 'url('+ e.target.result +')');\r\n }\r\n\r\n reader.readAsDataURL(the.inputElement.files[0]);\r\n\r\n KTUtil.addClass(the.element, 'image-input-changed');\r\n KTUtil.removeClass(the.element, 'image-input-empty');\r\n\r\n // Fire removed event\r\n KTEventHandler.trigger(the.element, 'kt.imageinput.changed', the);\r\n }\r\n }\r\n\r\n var _cancel = function(e) {\r\n e.preventDefault();\r\n\r\n // Fire cancel event\r\n if ( KTEventHandler.trigger(the.element, 'kt.imageinput.cancel', the) === false ) {\r\n return;\r\n }\r\n\r\n KTUtil.removeClass(the.element, 'image-input-changed');\r\n KTUtil.removeClass(the.element, 'image-input-empty');\r\n KTUtil.css(the.wrapperElement, 'background-image', the.src);\r\n the.inputElement.value = \"\";\r\n\r\n if ( the.hiddenElement !== null ) {\r\n the.hiddenElement.value = \"0\";\r\n }\r\n\r\n // Fire canceled event\r\n KTEventHandler.trigger(the.element, 'kt.imageinput.canceled', the);\r\n }\r\n\r\n var _remove = function(e) {\r\n e.preventDefault();\r\n\r\n // Fire remove event\r\n if ( KTEventHandler.trigger(the.element, 'kt.imageinput.remove', the) === false ) {\r\n return;\r\n }\r\n\r\n KTUtil.removeClass(the.element, 'image-input-changed');\r\n KTUtil.addClass(the.element, 'image-input-empty');\r\n KTUtil.css(the.wrapperElement, 'background-image', \"none\");\r\n the.inputElement.value = \"\";\r\n\r\n if ( the.hiddenElement !== null ) {\r\n the.hiddenElement.value = \"1\";\r\n }\r\n\r\n // Fire removed event\r\n KTEventHandler.trigger(the.element, 'kt.imageinput.removed', the);\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('image-input');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.getInputElement = function() {\r\n return the.inputElement;\r\n }\r\n\r\n the.goElement = function() {\r\n return the.element;\r\n }\r\n \r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTImageInput.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('image-input') ) {\r\n return KTUtil.data(element).get('image-input');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTImageInput.createInstances = function(selector = '[data-kt-image-input]') {\r\n // Initialize Menus\r\n var elements = document.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTImageInput(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTImageInput.init = function() {\r\n KTImageInput.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTImageInput.init);\r\n} else {\r\n KTImageInput.init();\r\n}\r\n\r\n// Webpack Support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTImageInput;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTMenu = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n dropdown: {\r\n hoverTimeout: 200,\r\n zindex: 105\r\n },\r\n\r\n accordion: {\r\n slideSpeed: 250,\r\n expand: false\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('menu') === true ) {\r\n the = KTUtil.data(element).get('menu');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('menu');\r\n the.element = element;\r\n the.triggerElement;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-menu', 'true');\r\n\r\n _setTriggerElement();\r\n _update();\r\n\r\n KTUtil.data(the.element).set('menu', the);\r\n }\r\n\r\n var _destroy = function() { // todo\r\n\r\n }\r\n\r\n // Event Handlers\r\n // Toggle handler\r\n var _click = function(element, e) {\r\n e.preventDefault();\r\n\r\n var item = _getItemElement(element);\r\n\r\n if ( _getItemOption(item, 'trigger') !== 'click' ) {\r\n return;\r\n }\r\n\r\n if ( _getItemOption(item, 'toggle') === false ) {\r\n _show(item);\r\n } else {\r\n _toggle(item);\r\n }\r\n }\r\n\r\n // Link handler\r\n var _link = function(element, e) {\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.link.click', the) === false ) {\r\n return;\r\n }\r\n\r\n // Dismiss all shown dropdowns\r\n KTMenu.hideDropdowns();\r\n\r\n KTEventHandler.trigger(the.element, 'kt.menu.link.clicked', the);\r\n }\r\n\r\n // Dismiss handler\r\n var _dismiss = function(element, e) {\r\n var item = _getItemElement(element);\r\n var items = _getItemChildElements(item);\r\n\r\n if ( item !== null && _getItemSubType(item) === 'dropdown') {\r\n _hide(item); // hide items dropdown\r\n // Hide all child elements as well\r\n \r\n if ( items.length > 0 ) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n if ( items[i] !== null && _getItemSubType(items[i]) === 'dropdown') {\r\n _hide(tems[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Mouseover handle\r\n var _mouseover = function(element, e) {\r\n var item = _getItemElement(element);\r\n\r\n if ( item === null ) {\r\n return;\r\n }\r\n\r\n if ( _getItemOption(item, 'trigger') !== 'hover' ) {\r\n return;\r\n }\r\n\r\n if ( KTUtil.data(item).get('hover') === '1' ) {\r\n clearTimeout(KTUtil.data(item).get('timeout'));\r\n KTUtil.data(item).remove('hover');\r\n KTUtil.data(item).remove('timeout');\r\n }\r\n\r\n _show(item);\r\n }\r\n\r\n // Mouseout handle\r\n var _mouseout = function(element, e) {\r\n var item = _getItemElement(element);\r\n\r\n if ( item === null ) {\r\n return;\r\n }\r\n\r\n if ( _getItemOption(item, 'trigger') !== 'hover' ) {\r\n return;\r\n }\r\n\r\n var timeout = setTimeout(function() {\r\n if ( KTUtil.data(item).get('hover') === '1' ) {\r\n _hide(item);\r\n }\r\n }, the.options.dropdown.hoverTimeout);\r\n\r\n KTUtil.data(item).set('hover', '1');\r\n KTUtil.data(item).set('timeout', timeout);\r\n }\r\n\r\n // Toggle item sub\r\n var _toggle = function(item) {\r\n if ( !item ) {\r\n item = the.triggerElement;\r\n }\r\n\r\n if ( _isItemSubShown(item) === true ) {\r\n _hide(item);\r\n } else {\r\n _show(item);\r\n }\r\n }\r\n\r\n // Show item sub\r\n var _show = function(item) {\r\n if ( !item ) {\r\n item = the.triggerElement;\r\n }\r\n\r\n if ( _isItemSubShown(item) === true ) {\r\n return;\r\n }\r\n\r\n if ( _getItemSubType(item) === 'dropdown' ) {\r\n _showDropdown(item); // // show current dropdown\r\n } else if ( _getItemSubType(item) === 'accordion' ) {\r\n _showAccordion(item);\r\n }\r\n\r\n // Remember last submenu type\r\n KTUtil.data(item).set('type', _getItemSubType(item)); // updated\r\n }\r\n\r\n // Hide item sub\r\n var _hide = function(item) {\r\n if ( !item ) {\r\n item = the.triggerElement;\r\n }\r\n\r\n if ( _isItemSubShown(item) === false ) {\r\n return;\r\n }\r\n \r\n if ( _getItemSubType(item) === 'dropdown' ) {\r\n _hideDropdown(item);\r\n } else if ( _getItemSubType(item) === 'accordion' ) {\r\n _hideAccordion(item);\r\n }\r\n }\r\n\r\n // Reset item state classes if item sub type changed\r\n var _reset = function(item) { \r\n if ( _hasItemSub(item) === false ) {\r\n return;\r\n }\r\n\r\n var sub = _getItemSubElement(item);\r\n\r\n // Reset sub state if sub type is changed during the window resize\r\n if ( KTUtil.data(item).has('type') && KTUtil.data(item).get('type') !== _getItemSubType(item) ) { // updated\r\n KTUtil.removeClass(item, 'hover'); \r\n KTUtil.removeClass(item, 'show'); \r\n KTUtil.removeClass(sub, 'show'); \r\n } // updated\r\n }\r\n\r\n // Update all item state classes if item sub type changed\r\n var _update = function() {\r\n var items = the.element.querySelectorAll('.menu-item[data-kt-menu-trigger]');\r\n\r\n if ( items && items.length > 0 ) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n _reset(items[i]);\r\n }\r\n }\r\n }\r\n\r\n // Set external trigger element\r\n var _setTriggerElement = function() {\r\n var target = document.querySelector('[data-kt-menu-target=\"# ' + the.element.getAttribute('id') + '\"]');\r\n\r\n if ( target !== null ) {\r\n the.triggerElement = target;\r\n } else if ( the.element.closest('[data-kt-menu-trigger]') ) {\r\n the.triggerElement = the.element.closest('[data-kt-menu-trigger]');\r\n } else if ( the.element.parentNode && KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]')) {\r\n the.triggerElement = KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]');\r\n }\r\n\r\n if ( the.triggerElement ) {\r\n KTUtil.data(the.triggerElement).set('menu', the);\r\n }\r\n }\r\n\r\n // Test if menu has external trigger element\r\n var _isTriggerElement = function(item) {\r\n return ( the.triggerElement === item ) ? true : false;\r\n }\r\n\r\n // Test if item's sub is shown\r\n var _isItemSubShown = function(item) {\r\n var sub = _getItemSubElement(item);\r\n\r\n if ( sub !== null ) {\r\n if ( _getItemSubType(item) === 'dropdown' ) {\r\n if ( KTUtil.hasClass(sub, 'show') === true && sub.hasAttribute('data-popper-placement') === true ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return KTUtil.hasClass(item, 'show');\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Test if item dropdown is permanent\r\n var _isItemDropdownPermanent = function(item) {\r\n return _getItemOption(item, 'permanent') === true ? true : false;\r\n }\r\n\r\n // Test if item's parent is shown\r\n var _isItemParentShown = function(item) {\r\n return KTUtil.parents(item, '.menu-item.show').length > 0;\r\n }\r\n\r\n // Test of it is item sub element\r\n var _isItemSubElement = function(item) {\r\n return KTUtil.hasClass(item, 'menu-sub');\r\n }\r\n\r\n // Test if item has sub\r\n var _hasItemSub = function(item) {\r\n return (KTUtil.hasClass(item, 'menu-item') && item.hasAttribute('data-kt-menu-trigger'));\r\n }\r\n\r\n // Get link element\r\n var _getItemLinkElement = function(item) {\r\n return KTUtil.child(item, '.menu-link');\r\n }\r\n\r\n // Get toggle element\r\n var _getItemToggleElement = function(item) {\r\n if ( the.triggerElement ) {\r\n return the.triggerElement;\r\n } else {\r\n return _getItemLinkElement(item);\r\n }\r\n }\r\n\r\n // Get item sub element\r\n var _getItemSubElement = function(item) {\r\n if ( _isTriggerElement(item) === true ) {\r\n return the.element;\r\n } if ( item.classList.contains('menu-sub') === true ) {\r\n return item;\r\n } else if ( KTUtil.data(item).has('sub') ) {\r\n return KTUtil.data(item).get('sub');\r\n } else {\r\n return KTUtil.child(item, '.menu-sub');\r\n }\r\n }\r\n\r\n // Get item sub type\r\n var _getItemSubType = function(element) {\r\n var sub = _getItemSubElement(element);\r\n\r\n if ( sub && parseInt(KTUtil.css(sub, 'z-index')) > 0 ) {\r\n return \"dropdown\";\r\n } else {\r\n return \"accordion\";\r\n }\r\n }\r\n\r\n // Get item element\r\n var _getItemElement = function(element) {\r\n var item, sub;\r\n\r\n // Element is the external trigger element\r\n if (_isTriggerElement(element) ) {\r\n return element;\r\n } \r\n\r\n // Element has item toggler attribute\r\n if ( element.hasAttribute('data-kt-menu-trigger') ) {\r\n return element;\r\n }\r\n\r\n // Element has item DOM reference in it's data storage\r\n if ( KTUtil.data(element).has('item') ) {\r\n return KTUtil.data(element).get('item');\r\n }\r\n\r\n // Item is parent of element\r\n if ( (item = element.closest('.menu-item[data-kt-menu-trigger]')) ) {\r\n return item;\r\n }\r\n\r\n // Element's parent has item DOM reference in it's data storage\r\n if ( (sub = element.closest('.menu-sub')) ) {\r\n if ( KTUtil.data(sub).has('item') === true ) {\r\n return KTUtil.data(sub).get('item')\r\n } \r\n }\r\n }\r\n\r\n // Get item parent element\r\n var _getItemParentElement = function(item) { \r\n var sub = item.closest('.menu-sub');\r\n var parentItem;\r\n\r\n if ( KTUtil.data(sub).has('item') ) {\r\n return KTUtil.data(sub).get('item');\r\n }\r\n\r\n if ( sub && (parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')) ) {\r\n return parentItem;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // Get item parent elements\r\n var _getItemParentElements = function(item) {\r\n var parents = [];\r\n var parent;\r\n var i = 0;\r\n\r\n do {\r\n parent = _getItemParentElement(item);\r\n \r\n if ( parent ) {\r\n parents.push(parent);\r\n item = parent;\r\n } \r\n\r\n i++;\r\n } while (parent !== null && i < 20);\r\n\r\n if ( the.triggerElement ) {\r\n parents.unshift(the.triggerElement);\r\n }\r\n\r\n return parents;\r\n }\r\n\r\n // Get item child element\r\n var _getItemChildElement = function(item) {\r\n var selector = item;\r\n var element;\r\n\r\n if ( KTUtil.data(item).get('sub') ) {\r\n selector = KTUtil.data(item).get('sub');\r\n }\r\n\r\n if ( selector !== null ) {\r\n //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');\r\n element = selector.querySelector('.menu-item[data-kt-menu-trigger]');\r\n\r\n if ( element ) {\r\n return element;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n } \r\n \r\n // Get item child elements\r\n var _getItemChildElements = function(item) {\r\n var children = [];\r\n var child;\r\n var i = 0;\r\n\r\n do {\r\n child = _getItemChildElement(item);\r\n \r\n if ( child ) {\r\n children.push(child);\r\n item = child;\r\n } \r\n\r\n i++;\r\n } while (child !== null && i < 20);\r\n\r\n return children;\r\n }\r\n\r\n // Show item dropdown\r\n var _showDropdown = function(item) {\r\n // Handle dropdown show event\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.show', item) === false ) {\r\n return;\r\n }\r\n\r\n // Hide all currently shown dropdowns except current one\r\n KTMenu.hideDropdowns(item); \r\n\r\n var toggle = _isTriggerElement(item) ? item : _getItemLinkElement(item);\r\n var sub = _getItemSubElement(item);\r\n\r\n var width = _getItemOption(item, 'width');\r\n var height = _getItemOption(item, 'height');\r\n\r\n var zindex = the.options.dropdown.zindex; // update\r\n var parentZindex = KTUtil.getHighestZindex(item); // update\r\n\r\n // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update\r\n if ( parentZindex !== null && parentZindex >= zindex ) {\r\n zindex = parentZindex + 1;\r\n }\r\n\r\n if ( zindex > 0 ) {\r\n KTUtil.css(sub, 'z-index', zindex);\r\n }\r\n\r\n if ( width !== null ) {\r\n KTUtil.css(sub, 'width', width);\r\n }\r\n\r\n if ( height !== null ) {\r\n KTUtil.css(sub, 'height', height);\r\n }\r\n\r\n KTUtil.css(sub, 'display', '');\r\n KTUtil.css(sub, 'overflow', '');\r\n\r\n // Init popper(new)\r\n _initDropdownPopper(item, sub); \r\n\r\n KTUtil.addClass(item, 'show');\r\n KTUtil.addClass(item, 'menu-dropdown');\r\n KTUtil.addClass(sub, 'show');\r\n\r\n // Append the sub the the root of the menu\r\n if ( _getItemOption(item, 'overflow') === true ) {\r\n document.body.appendChild(sub);\r\n KTUtil.data(item).set('sub', sub);\r\n KTUtil.data(sub).set('item', item);\r\n KTUtil.data(sub).set('menu', the);\r\n } else {\r\n KTUtil.data(sub).set('item', item);\r\n }\r\n\r\n // Handle dropdown shown event\r\n KTEventHandler.trigger(the.element, 'kt.menu.dropdown.shown', item);\r\n }\r\n\r\n // Hide item dropdown\r\n var _hideDropdown = function(item) {\r\n // Handle dropdown hide event\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hide', item) === false ) {\r\n return;\r\n }\r\n\r\n var sub = _getItemSubElement(item);\r\n\r\n KTUtil.css(sub, 'z-index', '');\r\n KTUtil.css(sub, 'width', '');\r\n KTUtil.css(sub, 'height', '');\r\n\r\n KTUtil.removeClass(item, 'show');\r\n KTUtil.removeClass(item, 'menu-dropdown');\r\n KTUtil.removeClass(sub, 'show');\r\n\r\n // Append the sub back to it's parent\r\n if ( _getItemOption(item, 'overflow') === true ) {\r\n if (item.classList.contains('menu-item')) {\r\n item.appendChild(sub);\r\n } else {\r\n KTUtil.insertAfter(the.element, item);\r\n }\r\n \r\n KTUtil.data(item).remove('sub');\r\n KTUtil.data(sub).remove('item');\r\n KTUtil.data(sub).remove('menu');\r\n } \r\n\r\n // Destroy popper(new)\r\n _destroyDropdownPopper(item);\r\n \r\n // Handle dropdown hidden event \r\n KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hidden', item);\r\n }\r\n\r\n // Init dropdown popper(new)\r\n var _initDropdownPopper = function(item, sub) {\r\n // Setup popper instance\r\n var reference;\r\n var attach = _getItemOption(item, 'attach');\r\n\r\n if ( attach ) {\r\n if ( attach === 'parent') {\r\n reference = item.parentNode;\r\n } else {\r\n reference = document.querySelector(attach);\r\n }\r\n } else {\r\n reference = item;\r\n }\r\n\r\n var popper = Popper.createPopper(reference, sub, _getDropdownPopperConfig(item)); \r\n KTUtil.data(item).set('popper', popper);\r\n }\r\n\r\n // Destroy dropdown popper(new)\r\n var _destroyDropdownPopper = function(item) {\r\n if ( KTUtil.data(item).has('popper') === true ) {\r\n KTUtil.data(item).get('popper').destroy();\r\n KTUtil.data(item).remove('popper');\r\n }\r\n }\r\n\r\n // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)\r\n var _getDropdownPopperConfig = function(item) {\r\n // Placement\r\n var placement = _getItemOption(item, 'placement');\r\n if (!placement) {\r\n placement = 'right';\r\n }\r\n\r\n // Offset\r\n var offsetValue = _getItemOption(item, 'offset');\r\n var offset = offsetValue ? offsetValue.split(\",\") : [];\r\n\r\n // Strategy\r\n var strategy = _getItemOption(item, 'overflow') === true ? 'absolute' : 'fixed';\r\n\r\n var altAxis = _getItemOption(item, 'flip') !== false ? true : false;\r\n\r\n var popperConfig = {\r\n placement: placement,\r\n strategy: strategy,\r\n modifiers: [{\r\n name: 'offset',\r\n options: {\r\n offset: offset\r\n }\r\n }, {\r\n name: 'preventOverflow',\r\n options: {\r\n altAxis: altAxis\r\n }\r\n }, {\r\n name: 'flip', \r\n options: {\r\n flipVariations: false\r\n }\r\n }]\r\n };\r\n\r\n return popperConfig;\r\n }\r\n\r\n // Show item accordion\r\n var _showAccordion = function(item) {\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.show', item) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.options.accordion.expand === false ) {\r\n _hideAccordions(item);\r\n }\r\n\r\n var sub = _getItemSubElement(item);\r\n\r\n if ( KTUtil.data(item).has('popper') === true ) {\r\n _hideDropdown(item);\r\n }\r\n\r\n KTUtil.addClass(item, 'hover'); // updateWW\r\n\r\n KTUtil.addClass(item, 'showing');\r\n\r\n KTUtil.slideDown(sub, the.options.accordion.slideSpeed, function() {\r\n KTUtil.removeClass(item, 'showing');\r\n KTUtil.addClass(item, 'show');\r\n KTUtil.addClass(sub, 'show');\r\n\r\n KTEventHandler.trigger(the.element, 'kt.menu.accordion.shown', item);\r\n }); \r\n }\r\n\r\n // Hide item accordion\r\n var _hideAccordion = function(item) {\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.hide', item) === false ) {\r\n return;\r\n }\r\n \r\n var sub = _getItemSubElement(item);\r\n\r\n KTUtil.addClass(item, 'hiding');\r\n\r\n KTUtil.slideUp(sub, the.options.accordion.slideSpeed, function() {\r\n KTUtil.removeClass(item, 'hiding');\r\n KTUtil.removeClass(item, 'show');\r\n KTUtil.removeClass(sub, 'show');\r\n\r\n KTUtil.removeClass(item, 'hover'); // update\r\n\r\n KTEventHandler.trigger(the.element, 'kt.menu.accordion.hidden', item);\r\n });\r\n }\r\n\r\n // Hide all shown accordions of item\r\n var _hideAccordions = function(item) {\r\n var itemsToHide = KTUtil.findAll(the.element, '.show[data-kt-menu-trigger]');\r\n var itemToHide;\r\n\r\n if (itemsToHide && itemsToHide.length > 0) {\r\n for (var i = 0, len = itemsToHide.length; i < len; i++) {\r\n itemToHide = itemsToHide[i];\r\n\r\n if ( _getItemSubType(itemToHide) === 'accordion' && itemToHide !== item && item.contains(itemToHide) === false && itemToHide.contains(item) === false ) {\r\n _hideAccordion(itemToHide);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Get item option(through html attributes)\r\n var _getItemOption = function(item, name) {\r\n var attr;\r\n var value = null;\r\n\r\n if ( item && item.hasAttribute('data-kt-menu-' + name) ) {\r\n attr = item.getAttribute('data-kt-menu-' + name);\r\n value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('menu');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Event Handlers\r\n the.click = function(element, e) {\r\n return _click(element, e);\r\n }\r\n\r\n the.link = function(element, e) {\r\n return _link(element, e);\r\n }\r\n\r\n the.dismiss = function(element, e) {\r\n return _dismiss(element, e);\r\n }\r\n\r\n the.mouseover = function(element, e) {\r\n return _mouseover(element, e);\r\n }\r\n\r\n the.mouseout = function(element, e) {\r\n return _mouseout(element, e);\r\n }\r\n\r\n // General Methods\r\n the.getItemTriggerType = function(item) {\r\n return _getItemOption(item, 'trigger');\r\n }\r\n\r\n the.getItemSubType = function(element) {\r\n return _getItemSubType(element);\r\n }\r\n\r\n the.show = function(item) {\r\n return _show(item);\r\n }\r\n\r\n the.hide = function(item) {\r\n return _hide(item);\r\n }\r\n\r\n the.reset = function(item) {\r\n return _reset(item);\r\n }\r\n\r\n the.update = function() {\r\n return _update();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.getItemLinkElement = function(item) {\r\n return _getItemLinkElement(item);\r\n }\r\n\r\n the.getItemToggleElement = function(item) {\r\n return _getItemToggleElement(item);\r\n }\r\n\r\n the.getItemSubElement = function(item) {\r\n return _getItemSubElement(item);\r\n }\r\n\r\n the.getItemParentElements = function(item) {\r\n return _getItemParentElements(item);\r\n }\r\n\r\n the.isItemSubShown = function(item) {\r\n return _isItemSubShown(item);\r\n }\r\n\r\n the.isItemParentShown = function(item) {\r\n return _isItemParentShown(item);\r\n }\r\n\r\n the.getTriggerElement = function() {\r\n return the.triggerElement;\r\n }\r\n\r\n the.isItemDropdownPermanent = function(item) {\r\n return _isItemDropdownPermanent(item);\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Accordion Mode Methods\r\n the.hideAccordions = function(item) {\r\n return _hideAccordions(item);\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n};\r\n\r\n// Get KTMenu instance by element\r\nKTMenu.getInstance = function(element) {\r\n var menu;\r\n var item;\r\n\r\n // Element has menu DOM reference in it's DATA storage\r\n if ( KTUtil.data(element).has('menu') ) {\r\n return KTUtil.data(element).get('menu');\r\n }\r\n\r\n // Element has .menu parent \r\n if ( menu = element.closest('.menu') ) {\r\n if ( KTUtil.data(menu).has('menu') ) {\r\n return KTUtil.data(menu).get('menu');\r\n }\r\n }\r\n \r\n // Element has a parent with DOM reference to .menu in it's DATA storage\r\n if ( KTUtil.hasClass(element, 'menu-link') ) {\r\n var sub = element.closest('.menu-sub');\r\n\r\n if ( KTUtil.data(sub).has('menu') ) {\r\n return KTUtil.data(sub).get('menu');\r\n }\r\n } \r\n\r\n return null;\r\n}\r\n\r\n// Hide all dropdowns and skip one if provided\r\nKTMenu.hideDropdowns = function(skip) {\r\n var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var menu = KTMenu.getInstance(item);\r\n\r\n if ( menu && menu.getItemSubType(item) === 'dropdown' ) {\r\n if ( skip ) {\r\n if ( menu.getItemSubElement(item).contains(skip) === false && item.contains(skip) === false && item !== skip ) {\r\n menu.hide(item);\r\n }\r\n } else {\r\n menu.hide(item);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Update all dropdowns popover instances\r\nKTMenu.updateDropdowns = function() {\r\n var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n\r\n if ( KTUtil.data(item).has('popper') ) {\r\n KTUtil.data(item).get('popper').forceUpdate();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Global handlers\r\nKTMenu.initGlobalHandlers = function() {\r\n // Dropdown handler\r\n document.addEventListener(\"click\", function(e) {\r\n var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');\r\n var menu;\r\n var item;\r\n var sub;\r\n var menuObj;\r\n\r\n if ( items && items.length > 0 ) {\r\n for ( var i = 0, len = items.length; i < len; i++ ) {\r\n item = items[i];\r\n menuObj = KTMenu.getInstance(item);\r\n\r\n if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {\r\n menu = menuObj.getElement();\r\n sub = menuObj.getItemSubElement(item);\r\n\r\n if ( item === e.target || item.contains(e.target) ) {\r\n continue;\r\n }\r\n \r\n if ( sub === e.target || sub.contains(e.target) ) {\r\n continue;\r\n }\r\n \r\n menuObj.hide(item);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Sub toggle handler(updated)\r\n KTUtil.on(document.body, '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger=\"auto\"])', 'click', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null ) {\r\n return menu.click(this, e);\r\n }\r\n });\r\n\r\n // Link handler\r\n KTUtil.on(document.body, '.menu-item:not([data-kt-menu-trigger]) > .menu-link', 'click', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null ) {\r\n return menu.link(this, e);\r\n }\r\n });\r\n\r\n // Dismiss handler\r\n KTUtil.on(document.body, '[data-kt-menu-dismiss=\"true\"]', 'click', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null ) {\r\n return menu.dismiss(this, e);\r\n }\r\n });\r\n\r\n // Mouseover handler\r\n KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseover', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) {\r\n return menu.mouseover(this, e);\r\n }\r\n });\r\n\r\n // Mouseout handler\r\n KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseout', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) {\r\n return menu.mouseout(this, e);\r\n }\r\n });\r\n\r\n // Resize handler\r\n window.addEventListener('resize', function() {\r\n var menu;\r\n var timer;\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = document.querySelectorAll('[data-kt-menu=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n menu = KTMenu.getInstance(elements[i]);\r\n if (menu) {\r\n menu.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n });\r\n}\r\n\r\n// Global instances\r\nKTMenu.createInstances = function(selector = '[data-kt-menu=\"true\"]') {\r\n // Initialize menus\r\n var elements = document.querySelectorAll(selector);\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTMenu(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTMenu.init = function() {\r\n // Global Event Handlers\r\n KTMenu.initGlobalHandlers();\r\n\r\n // Lazy Initialization\r\n KTMenu.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTMenu.init);\r\n} else {\r\n KTMenu.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTMenu;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTPasswordMeter = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n minLength: 8,\r\n checkUppercase: true, \r\n checkLowercase: true,\r\n checkDigit: true,\r\n checkChar: true,\r\n scoreHighlightClass: 'active'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n // Constructor\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('password-meter') === true ) {\r\n the = KTUtil.data(element).get('password-meter');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n // Initialize\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.score = 0;\r\n the.checkSteps = 5;\r\n\r\n // Elements\r\n the.element = element;\r\n the.inputElement = the.element.querySelector('input[type]');\r\n the.visibilityElement = the.element.querySelector('[data-kt-password-meter-control=\"visibility\"]');\r\n the.highlightElement = the.element.querySelector('[data-kt-password-meter-control=\"highlight\"]'); \r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-password-meter', 'true');\r\n \r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('password-meter', the);\r\n }\r\n\r\n // Handlers\r\n var _handlers = function() {\r\n the.inputElement.addEventListener('input', function() {\r\n _check();\r\n });\r\n\r\n if (the.visibilityElement) {\r\n the.visibilityElement.addEventListener('click', function() {\r\n _visibility();\r\n });\r\n }\r\n } \r\n\r\n // Event handlers\r\n var _check = function() {\r\n var score = 0;\r\n var checkScore = _getCheckScore();\r\n \r\n if (_checkLength() === true) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkUppercase === true && _checkLowercase() === true) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkLowercase === true && _checkUppercase() === true ) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkDigit === true && _checkDigit() === true ) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkChar === true && _checkChar() === true ) {\r\n score = score + checkScore;\r\n }\r\n\r\n the.score = score;\r\n\r\n _highlight();\r\n }\r\n\r\n var _checkLength = function() {\r\n return the.inputElement.value.length >= the.options.minLength; // 20 score\r\n }\r\n\r\n var _checkLowercase = function() {\r\n return /[a-z]/.test(the.inputElement.value); // 20 score\r\n }\r\n\r\n var _checkUppercase = function() {\r\n return /[A-Z]/.test(the.inputElement.value); // 20 score\r\n }\r\n\r\n var _checkDigit = function() {\r\n return /[0-9]/.test(the.inputElement.value); // 20 score\r\n }\r\n\r\n var _checkChar = function() {\r\n return /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g.test(the.inputElement.value); // 20 score\r\n } \r\n\r\n var _getCheckScore = function() {\r\n var count = 1;\r\n \r\n if (the.options.checkUppercase === true) {\r\n count++;\r\n }\r\n\r\n if (the.options.checkLowercase === true) {\r\n count++;\r\n }\r\n\r\n if (the.options.checkDigit === true) {\r\n count++;\r\n }\r\n\r\n if (the.options.checkChar === true) {\r\n count++;\r\n }\r\n\r\n the.checkSteps = count;\r\n\r\n return 100 / the.checkSteps;\r\n }\r\n \r\n var _highlight = function() {\r\n var items = [].slice.call(the.highlightElement.querySelectorAll('div'));\r\n var total = items.length;\r\n var index = 0;\r\n var checkScore = _getCheckScore();\r\n var score = _getScore();\r\n\r\n items.map(function (item) {\r\n index++;\r\n\r\n if ( (checkScore * index * (the.checkSteps / total)) <= score ) {\r\n item.classList.add('active');\r\n } else {\r\n item.classList.remove('active');\r\n } \r\n });\r\n }\r\n\r\n var _visibility = function() {\r\n var visibleIcon = the.visibilityElement.querySelector('i:not(.d-none), .svg-icon:not(.d-none)');\r\n var hiddenIcon = the.visibilityElement.querySelector('i.d-none, .svg-icon.d-none');\r\n \r\n if (the.inputElement.getAttribute('type').toLowerCase() === 'password' ) {\r\n the.inputElement.setAttribute('type', 'text');\r\n } else {\r\n the.inputElement.setAttribute('type', 'password');\r\n } \r\n\r\n visibleIcon.classList.add('d-none');\r\n hiddenIcon.classList.remove('d-none');\r\n\r\n the.inputElement.focus();\r\n }\r\n\r\n var _reset = function() {\r\n the.score = 0;\r\n\r\n _highlight();\r\n }\r\n\r\n // Gets current password score\r\n var _getScore = function() {\r\n return the.score;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('password-meter');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.check = function() {\r\n return _check();\r\n }\r\n\r\n the.getScore = function() {\r\n return _getScore();\r\n }\r\n\r\n the.reset = function() {\r\n return _reset();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n};\r\n\r\n// Static methods\r\nKTPasswordMeter.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('password-meter') ) {\r\n return KTUtil.data(element).get('password-meter');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTPasswordMeter.createInstances = function(selector = '[data-kt-password-meter]') {\r\n // Get instances\r\n var elements = document.body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n // Initialize instances\r\n new KTPasswordMeter(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTPasswordMeter.init = function() {\r\n KTPasswordMeter.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTPasswordMeter.init);\r\n} else {\r\n KTPasswordMeter.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTPasswordMeter;\r\n}","\"use strict\";\r\n\r\n// Class definition\r\nvar KTScroll = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n saveState: true\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('scroll') ) {\r\n the = KTUtil.data(element).get('scroll');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Elements\r\n the.element = element; \r\n the.id = the.element.getAttribute('id');\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-scroll', 'true');\r\n\r\n // Update\r\n _update();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('scroll', the);\r\n }\r\n\r\n var _setupHeight = function() {\r\n var heightType = _getHeightType();\r\n var height = _getHeight();\r\n\r\n // Set height\r\n if ( height !== null && height.length > 0 ) {\r\n KTUtil.css(the.element, heightType, height);\r\n } else {\r\n KTUtil.css(the.element, heightType, '');\r\n }\r\n }\r\n\r\n var _setupState = function () {\r\n if ( _getOption('save-state') === true && typeof KTCookie !== 'undefined' && the.id ) {\r\n if ( KTCookie.get(the.id + 'st') ) {\r\n var pos = parseInt(KTCookie.get(the.id + 'st'));\r\n\r\n if ( pos > 0 ) {\r\n the.element.scrollTop = pos;\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _setupScrollHandler = function() {\r\n if ( _getOption('save-state') === true && typeof KTCookie !== 'undefined' && the.id ) {\r\n the.element.addEventListener('scroll', _scrollHandler);\r\n } else {\r\n the.element.removeEventListener('scroll', _scrollHandler);\r\n }\r\n }\r\n\r\n var _destroyScrollHandler = function() {\r\n the.element.removeEventListener('scroll', _scrollHandler);\r\n }\r\n\r\n var _resetHeight = function() {\r\n KTUtil.css(the.element, _getHeightType(), '');\r\n }\r\n\r\n var _scrollHandler = function () {\r\n KTCookie.set(the.id + 'st', the.element.scrollTop);\r\n }\r\n\r\n var _update = function() {\r\n // Activate/deactivate\r\n if ( _getOption('activate') === true || the.element.hasAttribute('data-kt-scroll-activate') === false ) {\r\n _setupHeight();\r\n _setupScrollHandler();\r\n _setupState();\r\n } else {\r\n _resetHeight()\r\n _destroyScrollHandler();\r\n } \r\n }\r\n\r\n var _getHeight = function() {\r\n var height = _getOption(_getHeightType());\r\n\r\n if ( height instanceof Function ) {\r\n return height.call();\r\n } else if ( height !== null && typeof height === 'string' && height.toLowerCase() === 'auto' ) {\r\n return _getAutoHeight();\r\n } else {\r\n return height;\r\n }\r\n }\r\n\r\n var _getAutoHeight = function() {\r\n var height = KTUtil.getViewPort().height;\r\n\r\n var dependencies = _getOption('dependencies');\r\n var wrappers = _getOption('wrappers');\r\n var offset = _getOption('offset');\r\n\r\n // Height dependencies\r\n if ( dependencies !== null ) {\r\n var elements = document.querySelectorAll(dependencies);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for ( var i = 0, len = elements.length; i < len; i++ ) {\r\n var element = elements[i];\r\n\r\n if ( KTUtil.visible(element) === false ) {\r\n continue;\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(element, 'height'));\r\n height = height - parseInt(KTUtil.css(element, 'margin-top'));\r\n height = height - parseInt(KTUtil.css(element, 'margin-bottom'));\r\n\r\n if (KTUtil.css(element, 'border-top')) {\r\n height = height - parseInt(KTUtil.css(element, 'border-top'));\r\n }\r\n\r\n if (KTUtil.css(element, 'border-bottom')) {\r\n height = height - parseInt(KTUtil.css(element, 'border-bottom'));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Wrappers\r\n if ( wrappers !== null ) {\r\n var elements = document.querySelectorAll(wrappers);\r\n if ( elements && elements.length > 0 ) {\r\n for ( var i = 0, len = elements.length; i < len; i++ ) {\r\n var element = elements[i];\r\n\r\n if ( KTUtil.visible(element) === false ) {\r\n continue;\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(element, 'margin-top'));\r\n height = height - parseInt(KTUtil.css(element, 'margin-bottom'));\r\n height = height - parseInt(KTUtil.css(element, 'padding-top'));\r\n height = height - parseInt(KTUtil.css(element, 'padding-bottom'));\r\n\r\n if (KTUtil.css(element, 'border-top')) {\r\n height = height - parseInt(KTUtil.css(element, 'border-top'));\r\n }\r\n\r\n if (KTUtil.css(element, 'border-bottom')) {\r\n height = height - parseInt(KTUtil.css(element, 'border-bottom'));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Custom offset\r\n if ( offset !== null ) {\r\n height = height - parseInt(offset);\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(the.element, 'margin-top'));\r\n height = height - parseInt(KTUtil.css(the.element, 'margin-bottom'));\r\n \r\n if (KTUtil.css(element, 'border-top')) {\r\n height = height - parseInt(KTUtil.css(element, 'border-top'));\r\n }\r\n\r\n if (KTUtil.css(element, 'border-bottom')) {\r\n height = height - parseInt(KTUtil.css(element, 'border-bottom'));\r\n }\r\n\r\n height = String(height) + 'px';\r\n\r\n return height;\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-scroll-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-scroll-' + name);\r\n\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _getHeightType = function() {\r\n if (_getOption('height')) {\r\n return 'height';\r\n } if (_getOption('min-height')) {\r\n return 'min-height';\r\n } if (_getOption('max-height')) {\r\n return 'max-height';\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('scroll');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n the.update = function() {\r\n return _update();\r\n }\r\n\r\n the.getHeight = function() {\r\n return _getHeight();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n};\r\n\r\n// Static methods\r\nKTScroll.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('scroll') ) {\r\n return KTUtil.data(element).get('scroll');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTScroll.createInstances = function(selector = '[data-kt-scroll=\"true\"]') {\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n // Initialize Menus\r\n var elements = body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTScroll(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Window resize handling\r\nwindow.addEventListener('resize', function() {\r\n var timer;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = body.querySelectorAll('[data-kt-scroll=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var scroll = KTScroll.getInstance(elements[i]);\r\n if (scroll) {\r\n scroll.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n});\r\n\r\n// Global initialization\r\nKTScroll.init = function() {\r\n KTScroll.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTScroll.init);\r\n} else {\r\n KTScroll.init();\r\n}\r\n\r\n// Webpack Support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTScroll;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTScrolltop = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: 300,\r\n speed: 600\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if (KTUtil.data(element).has('scrolltop')) {\r\n the = KTUtil.data(element).get('scrolltop');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('scrolltop');\r\n the.element = element;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-scrolltop', 'true');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('scrolltop', the);\r\n }\r\n\r\n var _handlers = function() {\r\n var timer;\r\n\r\n window.addEventListener('scroll', function() {\r\n KTUtil.throttle(timer, function() {\r\n _scroll();\r\n }, 200);\r\n });\r\n\r\n KTUtil.addEvent(the.element, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _go();\r\n });\r\n }\r\n\r\n var _scroll = function() {\r\n var offset = parseInt(_getOption('offset'));\r\n\r\n var pos = KTUtil.getScrollTop(); // current vertical position\r\n\r\n if ( pos > offset ) {\r\n if ( body.hasAttribute('data-kt-scrolltop') === false ) {\r\n body.setAttribute('data-kt-scrolltop', 'on');\r\n }\r\n } else {\r\n if ( body.hasAttribute('data-kt-scrolltop') === true ) {\r\n body.removeAttribute('data-kt-scrolltop');\r\n }\r\n }\r\n }\r\n\r\n var _go = function() {\r\n var speed = parseInt(_getOption('speed'));\r\n\r\n KTUtil.scrollTop(0, speed);\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-scrolltop-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-scrolltop-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('scrolltop');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.go = function() {\r\n return _go();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n};\r\n\r\n// Static methods\r\nKTScrolltop.getInstance = function(element) {\r\n if (element && KTUtil.data(element).has('scrolltop')) {\r\n return KTUtil.data(element).get('scrolltop');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTScrolltop.createInstances = function(selector = '[data-kt-scrolltop=\"true\"]') {\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n // Initialize Menus\r\n var elements = body.querySelectorAll(selector);\r\n var scrolltop;\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n scrolltop = new KTScrolltop(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTScrolltop.init = function() {\r\n KTScrolltop.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTScrolltop.init);\r\n} else {\r\n KTScrolltop.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTScrolltop;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTSearch = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n minLength: 2, // Miniam text lenght to query search\r\n keypress: true, // Enable search on keypress \r\n enter: true, // Enable search on enter key press\r\n layout: 'menu', // Use 'menu' or 'inline' layout options to display search results\r\n responsive: null, // Pass integer value or bootstrap compatible breakpoint key(sm,md,lg,xl,xxl) to enable reponsive form mode for device width below the breakpoint value\r\n showOnFocus: true // Always show menu on input focus\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n // Construct\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('search') === true ) {\r\n the = KTUtil.data(element).get('search');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n // Init\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.processing = false;\r\n\r\n // Elements\r\n the.element = element; \r\n the.contentElement = _getElement('content'); \r\n the.formElement = _getElement('form'); \r\n the.inputElement = _getElement('input');\r\n the.spinnerElement = _getElement('spinner');\r\n the.clearElement = _getElement('clear');\r\n the.toggleElement = _getElement('toggle'); \r\n the.submitElement = _getElement('submit');\r\n the.toolbarElement = _getElement('toolbar'); \r\n\r\n the.resultsElement = _getElement('results');\r\n the.suggestionElement = _getElement('suggestion'); \r\n the.emptyElement = _getElement('empty'); \r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-search', 'true');\r\n \r\n // Layout\r\n the.layout = _getOption('layout');\r\n \r\n // Menu\r\n if ( the.layout === 'menu' ) {\r\n the.menuObject = new KTMenu(the.contentElement);\r\n } else {\r\n the.menuObject = null;\r\n }\r\n\r\n // Update\r\n _update();\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('search', the);\r\n }\r\n\r\n // Handlera\r\n var _handlers = function() {\r\n // Focus\r\n the.inputElement.addEventListener('focus', _focus);\r\n\r\n // Blur\r\n the.inputElement.addEventListener('blur', _blur);\r\n\r\n // Keypress\r\n if ( _getOption('keypress') === true ) {\r\n the.inputElement.addEventListener('input', _input);\r\n }\r\n\r\n // Submit\r\n if ( the.submitElement ) {\r\n the.submitElement.addEventListener('click', _search);\r\n }\r\n\r\n // Enter\r\n if ( _getOption('enter') === true ) {\r\n the.inputElement.addEventListener('keypress', _enter);\r\n }\r\n\r\n // Clear \r\n if ( the.clearElement ) {\r\n the.clearElement.addEventListener('click', _clear);\r\n }\r\n\r\n // Menu\r\n if ( the.menuObject ) {\r\n // Toggle menu\r\n if ( the.toggleElement ) {\r\n the.toggleElement.addEventListener('click', _show);\r\n\r\n the.menuObject.on('kt.menu.dropdown.show', function(item) {\r\n if (KTUtil.visible(the.toggleElement)) {\r\n the.toggleElement.classList.add('active');\r\n the.toggleElement.classList.add('show');\r\n } \r\n });\r\n \r\n the.menuObject.on('kt.menu.dropdown.hide', function(item) {\r\n if (KTUtil.visible(the.toggleElement)) {\r\n the.toggleElement.classList.remove('active');\r\n the.toggleElement.classList.remove('show');\r\n }\r\n });\r\n } \r\n\r\n the.menuObject.on('kt.menu.dropdown.shown', function() {\r\n the.inputElement.focus();\r\n });\r\n } \r\n\r\n // Window resize handling\r\n window.addEventListener('resize', function() {\r\n var timer;\r\n\r\n KTUtil.throttle(timer, function() {\r\n _update();\r\n }, 200);\r\n });\r\n }\r\n\r\n // Focus\r\n var _focus = function() {\r\n the.element.classList.add('focus');\r\n\r\n if ( _getOption('show-on-focus') === true || the.inputElement.value.length >= minLength ) {\r\n _show();\r\n } \r\n }\r\n\r\n // Blur\r\n var _blur = function() { \r\n the.element.classList.remove('focus');\r\n }\r\n\r\n // Enter \r\n var _enter = function(e) {\r\n var key = e.charCode || e.keyCode || 0;\r\n\r\n if (key == 13) {\r\n e.preventDefault();\r\n\r\n _search();\r\n }\r\n }\r\n\r\n // Input\r\n var _input = function() {\r\n if ( _getOption('min-length') ) {\r\n var minLength = parseInt(_getOption('min-length'));\r\n\r\n if ( the.inputElement.value.length >= minLength ) {\r\n _search();\r\n } else if ( the.inputElement.value.length === 0 ) {\r\n _clear();\r\n }\r\n }\r\n }\r\n\r\n // Search\r\n var _search = function() {\r\n if (the.processing === false) {\r\n // Show search spinner\r\n if (the.spinnerElement) {\r\n the.spinnerElement.classList.remove(\"d-none\");\r\n }\r\n \r\n // Hide search clear button\r\n if (the.clearElement) {\r\n the.clearElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Hide search toolbar\r\n if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) {\r\n the.toolbarElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Focus input\r\n the.inputElement.focus();\r\n\r\n the.processing = true;\r\n KTEventHandler.trigger(the.element, 'kt.search.process', the);\r\n }\r\n }\r\n\r\n // Complete\r\n var _complete = function() {\r\n if (the.spinnerElement) {\r\n the.spinnerElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Show search toolbar\r\n if (the.clearElement) {\r\n the.clearElement.classList.remove(\"d-none\");\r\n }\r\n\r\n if ( the.inputElement.value.length === 0 ) {\r\n _clear();\r\n }\r\n\r\n // Focus input\r\n the.inputElement.focus();\r\n\r\n _show();\r\n\r\n the.processing = false;\r\n }\r\n\r\n // Clear\r\n var _clear = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.search.clear', the) === false ) {\r\n return;\r\n }\r\n\r\n // Clear and focus input\r\n the.inputElement.value = \"\";\r\n the.inputElement.focus();\r\n\r\n // Hide clear icon\r\n if (the.clearElement) {\r\n the.clearElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Show search toolbar\r\n if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) {\r\n the.toolbarElement.classList.remove(\"d-none\");\r\n }\r\n\r\n // Hide menu\r\n if ( _getOption('show-on-focus') === false ) {\r\n _hide();\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.search.cleared', the);\r\n }\r\n\r\n // Update\r\n var _update = function() {\r\n // Handle responsive form\r\n if (the.layout === 'menu') {\r\n var responsiveFormMode = _getResponsiveFormMode();\r\n\r\n if ( responsiveFormMode === 'on' && the.contentElement.contains(the.formElement) === false ) {\r\n the.contentElement.prepend(the.formElement);\r\n the.formElement.classList.remove('d-none'); \r\n } else if ( responsiveFormMode === 'off' && the.contentElement.contains(the.formElement) === true ) {\r\n the.element.prepend(the.formElement);\r\n the.formElement.classList.add('d-none');\r\n }\r\n }\r\n }\r\n\r\n // Show menu\r\n var _show = function() {\r\n if ( the.menuObject ) {\r\n _update();\r\n\r\n the.menuObject.show(the.element);\r\n }\r\n }\r\n\r\n // Hide menu\r\n var _hide = function() {\r\n if ( the.menuObject ) {\r\n _update();\r\n\r\n the.menuObject.hide(the.element);\r\n }\r\n }\r\n\r\n // Get option\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-search-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-search-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n // Get element\r\n var _getElement = function(name) {\r\n return the.element.querySelector('[data-kt-search-element=\"' + name + '\"]');\r\n }\r\n\r\n // Check if responsive form mode is enabled\r\n var _getResponsiveFormMode = function() {\r\n var responsive = _getOption('responsive');\r\n var width = KTUtil.getViewPort().width;\r\n\r\n if (!responsive) {\r\n return null;\r\n }\r\n\r\n var breakpoint = KTUtil.getBreakpoint(responsive);\r\n\r\n if (!breakpoint ) {\r\n breakpoint = parseInt(responsive);\r\n }\r\n\r\n if (width < breakpoint) {\r\n return \"on\";\r\n } else {\r\n return \"off\";\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('search');\r\n } \r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.show = function() {\r\n return _show();\r\n }\r\n\r\n the.hide = function() {\r\n return _hide();\r\n }\r\n\r\n the.update = function() {\r\n return _update();\r\n }\r\n\r\n the.search = function() {\r\n return _search();\r\n }\r\n\r\n the.complete = function() {\r\n return _complete();\r\n }\r\n\r\n the.clear = function() {\r\n return _clear();\r\n }\r\n\r\n the.isProcessing = function() {\r\n return the.processing;\r\n }\r\n\r\n the.getQuery = function() {\r\n return the.inputElement.value;\r\n } \r\n\r\n the.getMenu = function() {\r\n return the.menuObject;\r\n }\r\n\r\n the.getFormElement = function() {\r\n return the.formElement;\r\n }\r\n\r\n the.getInputElement = function() {\r\n return the.inputElement;\r\n }\r\n\r\n the.getContentElement = function() {\r\n return the.contentElement;\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTSearch.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('search') ) {\r\n return KTUtil.data(element).get('search');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTSearch;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTStepper = function(element, options) {\r\n //////////////////////////////\r\n // ** Private variables ** //\r\n //////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n startIndex: 1,\r\n animation: false,\r\n animationSpeed: '0.3s',\r\n animationNextClass: 'animate__animated animate__slideInRight animate__fast',\r\n animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('stepper') === true ) {\r\n the = KTUtil.data(element).get('stepper');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('stepper');\r\n\r\n the.element = element;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-stepper', 'true');\r\n\r\n // Elements\r\n the.steps = KTUtil.findAll(the.element, '[data-kt-stepper-element=\"nav\"]');\r\n the.btnNext = KTUtil.find(the.element, '[data-kt-stepper-action=\"next\"]');\r\n the.btnPrevious = KTUtil.find(the.element, '[data-kt-stepper-action=\"previous\"]');\r\n the.btnSubmit = KTUtil.find(the.element, '[data-kt-stepper-action=\"submit\"]');\r\n\r\n // Variables\r\n the.totalStepsNumber = the.steps.length;\r\n the.passedStepIndex = 0;\r\n the.currentStepIndex = 1;\r\n the.clickedStepIndex = 0;\r\n\r\n // Set Current Step\r\n if ( the.options.startIndex > 1 ) {\r\n _goTo(the.options.startIndex);\r\n }\r\n\r\n // Event Handlers\r\n KTUtil.addEvent(the.btnNext, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n KTEventHandler.trigger(the.element, 'kt.stepper.next', the);\r\n });\r\n\r\n KTUtil.addEvent(the.btnPrevious, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n KTEventHandler.trigger(the.element, 'kt.stepper.previous', the);\r\n });\r\n\r\n KTUtil.on(the.element, '[data-kt-stepper-action=\"step\"]', 'click', function(e) {\r\n e.preventDefault();\r\n\r\n if ( the.steps && the.steps.length > 0 ) {\r\n for (var i = 0, len = the.steps.length; i < len; i++) {\r\n if ( the.steps[i] === this ) {\r\n the.clickedStepIndex = i + 1;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.stepper.click', the);\r\n\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('stepper', the);\r\n }\r\n\r\n var _goTo = function(index) {\r\n // Trigger \"change\" event\r\n KTEventHandler.trigger(the.element, 'kt.stepper.change', the);\r\n\r\n // Skip if this step is already shown\r\n if ( index === the.currentStepIndex || index > the.totalStepsNumber || index < 0 ) {\r\n return;\r\n }\r\n\r\n // Validate step number\r\n index = parseInt(index);\r\n\r\n // Set current step\r\n the.passedStepIndex = the.currentStepIndex;\r\n the.currentStepIndex = index;\r\n\r\n // Refresh elements\r\n _refreshUI();\r\n\r\n // Trigger \"changed\" event\r\n KTEventHandler.trigger(the.element, 'kt.stepper.changed', the);\r\n\r\n return the;\r\n }\r\n\r\n var _goNext = function() {\r\n return _goTo( _getNextStepIndex() );\r\n }\r\n\r\n var _goPrevious = function() {\r\n return _goTo( _getPreviousStepIndex() );\r\n }\r\n\r\n var _goLast = function() {\r\n return _goTo( _getLastStepIndex() );\r\n }\r\n\r\n var _goFirst = function() {\r\n return _goTo( _getFirstStepIndex() );\r\n }\r\n\r\n var _refreshUI = function() {\r\n var state = '';\r\n\r\n if ( _isLastStep() ) {\r\n state = 'last';\r\n } else if ( _isFirstStep() ) {\r\n state = 'first';\r\n } else {\r\n state = 'between';\r\n }\r\n\r\n // Set state class\r\n KTUtil.removeClass(the.element, 'last');\r\n KTUtil.removeClass(the.element, 'first');\r\n KTUtil.removeClass(the.element, 'between');\r\n\r\n KTUtil.addClass(the.element, state);\r\n\r\n // Step Items\r\n var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element=\"nav\"], [data-kt-stepper-element=\"content\"], [data-kt-stepper-element=\"info\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var element = elements[i];\r\n var index = KTUtil.index(element) + 1;\r\n\r\n KTUtil.removeClass(element, 'current');\r\n KTUtil.removeClass(element, 'completed');\r\n KTUtil.removeClass(element, 'pending');\r\n\r\n if ( index == the.currentStepIndex ) {\r\n KTUtil.addClass(element, 'current');\r\n\r\n if ( the.options.animation !== false && element.getAttribute('data-kt-stepper-element') == 'content' ) {\r\n KTUtil.css(element, 'animationDuration', the.options.animationSpeed);\r\n\r\n var animation = _getStepDirection(the.passedStepIndex) === 'previous' ? the.options.animationPreviousClass : the.options.animationNextClass;\r\n KTUtil.animateClass(element, animation);\r\n }\r\n } else {\r\n if ( index < the.currentStepIndex ) {\r\n KTUtil.addClass(element, 'completed');\r\n } else {\r\n KTUtil.addClass(element, 'pending');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _isLastStep = function() {\r\n return the.currentStepIndex === the.totalStepsNumber;\r\n }\r\n\r\n var _isFirstStep = function() {\r\n return the.currentStepIndex === 1;\r\n }\r\n\r\n var _isBetweenStep = function() {\r\n return _isLastStep() === false && _isFirstStep() === false;\r\n }\r\n\r\n var _getNextStepIndex = function() {\r\n if ( the.totalStepsNumber >= ( the.currentStepIndex + 1 ) ) {\r\n return the.currentStepIndex + 1;\r\n } else {\r\n return the.totalStepsNumber;\r\n }\r\n }\r\n\r\n var _getPreviousStepIndex = function() {\r\n if ( ( the.currentStepIndex - 1 ) > 1 ) {\r\n return the.currentStepIndex - 1;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n\r\n var _getFirstStepIndex = function(){\r\n return 1;\r\n }\r\n\r\n var _getLastStepIndex = function() {\r\n return the.totalStepsNumber;\r\n }\r\n\r\n var _getTotalStepsNumber = function() {\r\n return the.totalStepsNumber;\r\n }\r\n\r\n var _getStepDirection = function(index) {\r\n if ( index > the.currentStepIndex ) {\r\n return 'next';\r\n } else {\r\n return 'previous';\r\n }\r\n }\r\n\r\n var _getStepContent = function(index) {\r\n var content = KTUtil.findAll(the.element, '[data-kt-stepper-element=\"content\"]');\r\n\r\n if ( content[index-1] ) {\r\n return content[index-1];\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('stepper');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.getElement = function(index) {\r\n return the.element;\r\n }\r\n\r\n the.goTo = function(index) {\r\n return _goTo(index);\r\n }\r\n\r\n the.goPrevious = function() {\r\n return _goPrevious();\r\n }\r\n\r\n the.goNext = function() {\r\n return _goNext();\r\n }\r\n\r\n the.goFirst = function() {\r\n return _goFirst();\r\n }\r\n\r\n the.goLast = function() {\r\n return _goLast();\r\n }\r\n\r\n the.getCurrentStepIndex = function() {\r\n return the.currentStepIndex;\r\n }\r\n\r\n the.getNextStepIndex = function() {\r\n return the.nextStepIndex;\r\n }\r\n\r\n the.getPassedStepIndex = function() {\r\n return the.passedStepIndex;\r\n }\r\n\r\n the.getClickedStepIndex = function() {\r\n return the.clickedStepIndex;\r\n }\r\n\r\n the.getPreviousStepIndex = function() {\r\n return the.PreviousStepIndex;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTStepper.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('stepper') ) {\r\n return KTUtil.data(element).get('stepper');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTStepper;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTSticky = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n offset: 200,\r\n releaseOffset: 0,\r\n reverse: false,\r\n animation: true,\r\n animationSpeed: '0.3s',\r\n animationClass: 'animation-slide-in-down'\r\n };\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('sticky') === true ) {\r\n the = KTUtil.data(element).get('sticky');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.element = element;\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('sticky');\r\n the.name = the.element.getAttribute('data-kt-sticky-name');\r\n the.attributeName = 'data-kt-sticky-' + the.name;\r\n the.eventTriggerState = true;\r\n the.lastScrollTop = 0;\r\n the.scrollHandler;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-sticky', 'true');\r\n\r\n // Event Handlers\r\n window.addEventListener('scroll', _scroll);\r\n\r\n // Initial Launch\r\n _scroll();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('sticky', the);\r\n }\r\n\r\n var _scroll = function(e) {\r\n var offset = _getOption('offset');\r\n var releaseOffset = _getOption('release-offset');\r\n var reverse = _getOption('reverse');\r\n var st;\r\n var attrName;\r\n var diff;\r\n\r\n // Exit if false\r\n if ( offset === false ) {\r\n return;\r\n }\r\n\r\n offset = parseInt(offset);\r\n releaseOffset = releaseOffset ? parseInt(releaseOffset) : 0;\r\n st = KTUtil.getScrollTop();\r\n diff = document.documentElement.scrollHeight - window.innerHeight - KTUtil.getScrollTop();\r\n\r\n if ( reverse === true ) { // Release on reverse scroll mode\r\n if ( st > offset && (releaseOffset === 0 || releaseOffset < diff)) {\r\n if ( body.hasAttribute(the.attributeName) === false) {\r\n _enable();\r\n body.setAttribute(the.attributeName, 'on');\r\n }\r\n\r\n if ( the.eventTriggerState === true ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.on', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n\r\n the.eventTriggerState = false;\r\n }\r\n } else { // Back scroll mode\r\n if ( body.hasAttribute(the.attributeName) === true) {\r\n _disable();\r\n body.removeAttribute(the.attributeName);\r\n }\r\n\r\n if ( the.eventTriggerState === false ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.off', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n the.eventTriggerState = true;\r\n }\r\n }\r\n\r\n the.lastScrollTop = st;\r\n } else { // Classic scroll mode\r\n if ( st > offset && (releaseOffset === 0 || releaseOffset < diff)) {\r\n if ( body.hasAttribute(the.attributeName) === false) {\r\n _enable();\r\n body.setAttribute(the.attributeName, 'on');\r\n }\r\n\r\n if ( the.eventTriggerState === true ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.on', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n the.eventTriggerState = false;\r\n }\r\n } else { // back scroll mode\r\n if ( body.hasAttribute(the.attributeName) === true ) {\r\n _disable();\r\n body.removeAttribute(the.attributeName);\r\n }\r\n\r\n if ( the.eventTriggerState === false ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.off', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n the.eventTriggerState = true;\r\n }\r\n }\r\n }\r\n\r\n if (releaseOffset > 0) {\r\n if ( diff < releaseOffset ) {\r\n the.element.setAttribute('data-kt-sticky-released', 'true');\r\n } else {\r\n the.element.removeAttribute('data-kt-sticky-released');\r\n }\r\n } \r\n }\r\n\r\n var _enable = function(update) {\r\n var top = _getOption('top');\r\n var left = _getOption('left');\r\n var right = _getOption('right');\r\n var width = _getOption('width');\r\n var zindex = _getOption('zindex');\r\n\r\n if ( update !== true && _getOption('animation') === true ) {\r\n KTUtil.css(the.element, 'animationDuration', _getOption('animationSpeed'));\r\n KTUtil.animateClass(the.element, 'animation ' + _getOption('animationClass'));\r\n }\r\n\r\n if ( zindex !== null ) {\r\n KTUtil.css(the.element, 'z-index', zindex);\r\n KTUtil.css(the.element, 'position', 'fixed');\r\n }\r\n\r\n if ( top !== null ) {\r\n KTUtil.css(the.element, 'top', top);\r\n }\r\n\r\n if ( width !== null ) {\r\n if (width['target']) {\r\n var targetElement = document.querySelector(width['target']);\r\n if (targetElement) {\r\n width = KTUtil.css(targetElement, 'width');\r\n }\r\n }\r\n\r\n KTUtil.css(the.element, 'width', width);\r\n }\r\n\r\n if ( left !== null ) {\r\n if ( String(left).toLowerCase() === 'auto' ) {\r\n var offsetLeft = KTUtil.offset(the.element).left;\r\n\r\n if ( offsetLeft > 0 ) {\r\n KTUtil.css(the.element, 'left', String(offsetLeft) + 'px');\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _disable = function() {\r\n KTUtil.css(the.element, 'top', '');\r\n KTUtil.css(the.element, 'width', '');\r\n KTUtil.css(the.element, 'left', '');\r\n KTUtil.css(the.element, 'right', '');\r\n KTUtil.css(the.element, 'z-index', '');\r\n KTUtil.css(the.element, 'position', '');\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-sticky-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-sticky-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n window.removeEventListener('scroll', _scroll);\r\n KTUtil.data(the.element).remove('sticky');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Methods\r\n the.update = function() {\r\n if ( body.hasAttribute(the.attributeName) === true ) {\r\n _disable();\r\n body.removeAttribute(the.attributeName);\r\n _enable(true);\r\n body.setAttribute(the.attributeName, 'on');\r\n }\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTSticky.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('sticky') ) {\r\n return KTUtil.data(element).get('sticky');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTSticky.createInstances = function(selector = '[data-kt-sticky=\"true\"]') {\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n // Initialize Menus\r\n var elements = body.querySelectorAll(selector);\r\n var sticky;\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n sticky = new KTSticky(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Window resize handler\r\nwindow.addEventListener('resize', function() {\r\n var timer;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = body.querySelectorAll('[data-kt-sticky=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var sticky = KTSticky.getInstance(elements[i]);\r\n if (sticky) {\r\n sticky.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n});\r\n\r\n// Global initialization\r\nKTSticky.init = function() {\r\n KTSticky.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTSticky.init);\r\n} else {\r\n KTSticky.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTSticky;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTSwapper = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n mode: 'append'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('swapper') === true ) {\r\n the = KTUtil.data(element).get('swapper');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.element = element;\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-swapper', 'true');\r\n\r\n // Initial update\r\n _update();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('swapper', the);\r\n }\r\n\r\n var _update = function(e) {\r\n var parentSelector = _getOption('parent');\r\n\r\n var mode = _getOption('mode');\r\n var parentElement = parentSelector ? document.querySelector(parentSelector) : null;\r\n \r\n\r\n if (parentElement && element.parentNode !== parentElement) {\r\n if (mode === 'prepend') {\r\n parentElement.prepend(element);\r\n } else if (mode === 'append') {\r\n parentElement.append(element);\r\n }\r\n }\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-swapper-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-swapper-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('swapper');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Methods\r\n the.update = function() {\r\n _update();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTSwapper.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('swapper') ) {\r\n return KTUtil.data(element).get('swapper');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTSwapper.createInstances = function(selector = '[data-kt-swapper=\"true\"]') {\r\n // Initialize Menus\r\n var elements = document.querySelectorAll(selector);\r\n var swapper;\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n swapper = new KTSwapper(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Window resize handler\r\nwindow.addEventListener('resize', function() {\r\n var timer;\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = document.querySelectorAll('[data-kt-swapper=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var swapper = KTSwapper.getInstance(elements[i]);\r\n if (swapper) {\r\n swapper.update();\r\n } \r\n }\r\n }\r\n }, 200);\r\n});\r\n\r\n// Global initialization\r\nKTSwapper.init = function() {\r\n KTSwapper.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTSwapper.init);\r\n} else {\r\n KTSwapper.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTSwapper;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTToggle = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n saveState: true\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('toggle') === true ) {\r\n the = KTUtil.data(element).get('toggle');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('toggle');\r\n\r\n // Elements\r\n the.element = element;\r\n\r\n the.target = document.querySelector(the.element.getAttribute('data-kt-toggle-target')) ? document.querySelector(the.element.getAttribute('data-kt-toggle-target')) : the.element;\r\n the.state = the.element.hasAttribute('data-kt-toggle-state') ? the.element.getAttribute('data-kt-toggle-state') : '';\r\n the.attribute = 'data-kt-' + the.element.getAttribute('data-kt-toggle-name');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('toggle', the);\r\n }\r\n\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.element, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _toggle();\r\n });\r\n }\r\n\r\n // Event handlers\r\n var _toggle = function() {\r\n // Trigger \"after.toggle\" event\r\n KTEventHandler.trigger(the.element, 'kt.toggle.change', the);\r\n\r\n if ( _isEnabled() ) {\r\n _disable();\r\n } else {\r\n _enable();\r\n }\r\n\r\n // Trigger \"before.toggle\" event\r\n KTEventHandler.trigger(the.element, 'kt.toggle.changed', the);\r\n\r\n return the;\r\n }\r\n\r\n var _enable = function() {\r\n if ( _isEnabled() === true ) {\r\n return;\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.enable', the);\r\n\r\n the.target.setAttribute(the.attribute, 'on');\r\n\r\n if (the.state.length > 0) {\r\n the.element.classList.add(the.state);\r\n } \r\n\r\n if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) {\r\n KTCookie.set(the.attribute, 'on');\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.enabled', the);\r\n\r\n return the;\r\n }\r\n\r\n var _disable = function() {\r\n if ( _isEnabled() === false ) {\r\n return;\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.disable', the);\r\n\r\n the.target.removeAttribute(the.attribute);\r\n\r\n if (the.state.length > 0) {\r\n the.element.classList.remove(the.state);\r\n } \r\n\r\n if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) {\r\n KTCookie.remove(the.attribute);\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.disabled', the);\r\n\r\n return the;\r\n }\r\n\r\n var _isEnabled = function() {\r\n return (String(the.target.getAttribute(the.attribute)).toLowerCase() === 'on');\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('toggle');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.toggle = function() {\r\n return _toggle();\r\n }\r\n\r\n the.enable = function() {\r\n return _enable();\r\n }\r\n\r\n the.disable = function() {\r\n return _disable();\r\n }\r\n\r\n the.isEnabled = function() {\r\n return _isEnabled();\r\n }\r\n\r\n the.goElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name) {\r\n return KTEventHandler.off(the.element, name);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTToggle.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('toggle') ) {\r\n return KTUtil.data(element).get('toggle');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTToggle.createInstances = function(selector = '[data-kt-toggle]') {\r\n var body = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n // Get instances\r\n var elements = body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n // Initialize instances\r\n new KTToggle(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTToggle.init = function() {\r\n KTToggle.createInstances();\r\n};\r\n\r\n// On document ready\r\nif (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', KTToggle.init);\r\n} else {\r\n KTToggle.init();\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTToggle;\r\n}","\"use strict\";\r\n\r\n/**\r\n * @class KTUtil base utilize class that privides helper functions\r\n */\r\n\r\n// Polyfills\r\n\r\n// Element.matches() polyfill\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1;\r\n };\r\n}\r\n\r\n/**\r\n * Element.closest() polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\r\n */\r\nif (!Element.prototype.closest) {\r\n\tElement.prototype.closest = function (s) {\r\n\t\tvar el = this;\r\n\t\tvar ancestor = this;\r\n\t\tif (!document.documentElement.contains(el)) return null;\r\n\t\tdo {\r\n\t\t\tif (ancestor.matches(s)) return ancestor;\r\n\t\t\tancestor = ancestor.parentElement;\r\n\t\t} while (ancestor !== null);\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\n/**\r\n * ChildNode.remove() polyfill\r\n * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/\r\n * @author Chris Ferdinandi\r\n * @license MIT\r\n */\r\n(function (elem) {\r\n\tfor (var i = 0; i < elem.length; i++) {\r\n\t\tif (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue;\r\n\t\twindow[elem[i]].prototype.remove = function () {\r\n\t\t\tthis.parentNode.removeChild(this);\r\n\t\t};\r\n\t}\r\n})(['Element', 'CharacterData', 'DocumentType']);\r\n\r\n\r\n//\r\n// requestAnimationFrame polyfill by Erik Möller.\r\n// With fixes from Paul Irish and Tino Zijdel\r\n//\r\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\r\n//\r\n// MIT license\r\n//\r\n(function() {\r\n var lastTime = 0;\r\n var vendors = ['webkit', 'moz'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame =\r\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md\r\n(function(arr) {\r\n arr.forEach(function(item) {\r\n if (item.hasOwnProperty('prepend')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'prepend', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function prepend() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function(argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.insertBefore(docFrag, this.firstChild);\r\n }\r\n });\r\n });\r\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\r\n\r\n// getAttributeNames\r\nif (Element.prototype.getAttributeNames == undefined) {\r\n Element.prototype.getAttributeNames = function () {\r\n var attributes = this.attributes;\r\n var length = attributes.length;\r\n var result = new Array(length);\r\n for (var i = 0; i < length; i++) {\r\n result[i] = attributes[i].name;\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n// Global variables\r\nwindow.KTUtilElementDataStore = {};\r\nwindow.KTUtilElementDataStoreID = 0;\r\nwindow.KTUtilDelegatedEventHandlers = {};\r\n\r\nvar KTUtil = function() {\r\n var resizeHandlers = [];\r\n\r\n /**\r\n * Handle window resize event with some\r\n * delay to attach event handlers upon resize complete\r\n */\r\n var _windowResizeHandler = function() {\r\n var _runResizeHandlers = function() {\r\n // reinitialize other subscribed elements\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n var each = resizeHandlers[i];\r\n each.call();\r\n }\r\n };\r\n\r\n var timer;\r\n\r\n window.addEventListener('resize', function() {\r\n KTUtil.throttle(timer, function() {\r\n _runResizeHandlers();\r\n }, 200);\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Class main initializer.\r\n * @param {object} settings.\r\n * @returns null\r\n */\r\n //main function to initiate the theme\r\n init: function(settings) {\r\n _windowResizeHandler();\r\n },\r\n\r\n /**\r\n * Adds window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n addResizeHandler: function(callback) {\r\n resizeHandlers.push(callback);\r\n },\r\n\r\n /**\r\n * Removes window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n removeResizeHandler: function(callback) {\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n if (callback === resizeHandlers[i]) {\r\n delete resizeHandlers[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Trigger window resize handlers.\r\n */\r\n runResizeHandlers: function() {\r\n _runResizeHandlers();\r\n },\r\n\r\n resize: function() {\r\n if (typeof(Event) === 'function') {\r\n // modern browsers\r\n window.dispatchEvent(new Event('resize'));\r\n } else {\r\n // for IE and other old browsers\r\n // causes deprecation warning on modern browsers\r\n var evt = window.document.createEvent('UIEvents');\r\n evt.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(evt);\r\n }\r\n },\r\n\r\n /**\r\n * Get GET parameter value from URL.\r\n * @param {string} paramName Parameter name.\r\n * @returns {string}\r\n */\r\n getURLParam: function(paramName) {\r\n var searchString = window.location.search.substring(1),\r\n i, val, params = searchString.split(\"&\");\r\n\r\n for (i = 0; i < params.length; i++) {\r\n val = params[i].split(\"=\");\r\n if (val[0] == paramName) {\r\n return unescape(val[1]);\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether current device is mobile touch.\r\n * @returns {boolean}\r\n */\r\n isMobileDevice: function() {\r\n var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false);\r\n\r\n if (test === false) {\r\n // For use within normal web clients\r\n test = navigator.userAgent.match(/iPad/i) != null;\r\n }\r\n\r\n return test;\r\n },\r\n\r\n /**\r\n * Checks whether current device is desktop.\r\n * @returns {boolean}\r\n */\r\n isDesktopDevice: function() {\r\n return KTUtil.isMobileDevice() ? false : true;\r\n },\r\n\r\n /**\r\n * Gets browser window viewport size. Ref:\r\n * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r\n * @returns {object}\r\n */\r\n getViewPort: function() {\r\n var e = window,\r\n a = 'inner';\r\n if (!('innerWidth' in window)) {\r\n a = 'client';\r\n e = document.documentElement || document.body;\r\n }\r\n\r\n return {\r\n width: e[a + 'Width'],\r\n height: e[a + 'Height']\r\n };\r\n },\r\n\r\n\t\t/**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isBreakpointUp: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width >= breakpoint);\r\n },\r\n\r\n\t\tisBreakpointDown: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width < breakpoint);\r\n },\r\n\r\n getViewportWidth: function() {\r\n return this.getViewPort().width;\r\n },\r\n\r\n /**\r\n * Generates unique ID for give prefix.\r\n * @param {string} prefix Prefix for generated ID\r\n * @returns {boolean}\r\n */\r\n getUniqueId: function(prefix) {\r\n return prefix + Math.floor(Math.random() * (new Date()).getTime());\r\n },\r\n\r\n /**\r\n * Gets window width for give breakpoint mode.\r\n * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)\r\n * @returns {number}\r\n */\r\n getBreakpoint: function(breakpoint) {\r\n var value = this.getCssVariableValue('--bs-' + breakpoint);\r\n\r\n if ( value ) {\r\n value = parseInt(value.trim());\r\n } \r\n\r\n return value;\r\n },\r\n\r\n /**\r\n * Checks whether object has property matchs given key path.\r\n * @param {object} obj Object contains values paired with given key path\r\n * @param {string} keys Keys path seperated with dots\r\n * @returns {object}\r\n */\r\n isset: function(obj, keys) {\r\n var stone;\r\n\r\n keys = keys || '';\r\n\r\n if (keys.indexOf('[') !== -1) {\r\n throw new Error('Unsupported object path notation.');\r\n }\r\n\r\n keys = keys.split('.');\r\n\r\n do {\r\n if (obj === undefined) {\r\n return false;\r\n }\r\n\r\n stone = keys.shift();\r\n\r\n if (!obj.hasOwnProperty(stone)) {\r\n return false;\r\n }\r\n\r\n obj = obj[stone];\r\n\r\n } while (keys.length);\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Gets highest z-index of the given element parents\r\n * @param {object} el jQuery element object\r\n * @returns {number}\r\n */\r\n getHighestZindex: function(el) {\r\n var position, value;\r\n\r\n while (el && el !== document) {\r\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n // This makes behavior of this function consistent across browsers\r\n // WebKit always returns auto if the element is positioned\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n // IE returns 0 when zIndex is not specified\r\n // other browsers return a string\r\n // we ignore the case of nested elements with an explicit value of 0\r\n //