{"version":3,"file":"/scripts/app.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA+D;AACN;AACQ;AACJ;AACE;AACR;AACZ;AACkB;AAClB;AACgB;AACV;AACM;AACD;AACpB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,aAAa;AACnF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B,uBAAuB;AACvB;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,qBAAqB,mEAAS,cAAc,2EAAiB,yCAAyC,2EAAiB;AACvH,kBAAkB,2EAAiB;AACnC,WAAW;AACX;;AAEA,+BAA+B,oEAAc,CAAC,iEAAW,yDAAyD;;AAElH;AACA;AACA,SAAS,GAAG;AACZ;;AAEA,YAAY,IAAqC;AACjD,0BAA0B,8DAAQ;AAClC;AACA;AACA,WAAW;AACX,UAAU,uEAAiB;;AAE3B,cAAc,sEAAgB,8BAA8B,2CAAI;AAChE;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA,kCAAkC,0EAAgB;AAClD;AACA;AACA;AACA,yDAAyD;AACzD;;;AAGA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA,cAAc,IAAqC;AACnD;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA,qBAAqB,0EAAgB,YAAY,0EAAe;AAChE,kBAAkB,wEAAa;AAC/B,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;AACA;AACA,6CAA6C,KAAK;;AAElD;AACA,sEAAsE;AACtE,SAAS;AACT;;AAEA,4BAA4B,uCAAuC;AACnE,cAAc,IAAqC;AACnD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,OAAO;AACP;AACA;AACA,cAAc,+DAAQ;AACtB;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,IAAqC;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACO,mDAAmD;;;;;;;;;;;;;;;;;;AChQX;AAChC;AACf,2DAA2D;;AAE3D;AACA;AACA,IAAI;AACJ,uBAAuB,4DAAY;AACnC;;AAEA;AACA;AACA;AACA,UAAU;;;AAGV;AACA,QAAQ;AACR,MAAM;;;AAGN;AACA;;;;;;;;;;;;;;;;;ACtBgD;AACP;AAC1B;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,6DAAa;AACnB;AACA,2CAA2C;AAC3C;;AAEA;AACA,eAAe,qDAAK;AACpB;;AAEA;AACA,eAAe,qDAAK;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCuC;AACY;AACA;AACI;AACJ;AACM;AACJ;AACM;AACI;AAChB;AACV;AACM;AACiB;AAChB;;AAE5C;AACA,aAAa,qEAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,+CAAQ,GAAG,sEAAgB,CAAC,+DAAe,aAAa,yDAAS,gEAAgE,sEAAgB,CAAC,+DAAe,CAAC,kEAAkB;AAChN,EAAE;AACF;AACA;;;AAGA;AACA,wBAAwB,iEAAiB,CAAC,6DAAa;AACvD,wDAAwD,gEAAgB;AACxE,4CAA4C,6DAAa,YAAY,gEAAe;;AAEpF,OAAO,yDAAS;AAChB;AACA,IAAI;;;AAGJ;AACA,WAAW,yDAAS,oBAAoB,yDAAQ,oCAAoC,4DAAW;AAC/F,GAAG;AACH,EAAE;AACF;;;AAGe;AACf;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAG;AACrB,oBAAoB,oDAAG;AACvB,qBAAqB,oDAAG;AACxB,mBAAmB,oDAAG;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACrE+D;AAChB;AACJ;AACK;AACW;AACF;AACR;AACR;;AAEzC;AACA;AACA,eAAe,qDAAK;AACpB,eAAe,qDAAK;AACpB;AACA,EAAE;AACF;;;AAGe;AACf;AACA;AACA;;AAEA,gCAAgC,6DAAa;AAC7C,6BAA6B,6DAAa;AAC1C,wBAAwB,kEAAkB;AAC1C,aAAa,qEAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,2DAAW;AACnB,IAAI,8DAAc;AAClB,eAAe,6DAAa;AAC5B;;AAEA,QAAQ,6DAAa;AACrB,gBAAgB,qEAAqB;AACrC;AACA;AACA,MAAM;AACN,kBAAkB,mEAAmB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzDuC;AACxB;AACf,SAAS,yDAAS;AAClB;;;;;;;;;;;;;;;;ACH4C;AAC7B;AACf;AACA,WAAW,yDAAS;AACpB;AACA;;;;;;;;;;;;;;;;;;;;ACLyD;AACJ;AACM;AACR;AACZ,CAAC;AACxC;;AAEe;AACf;;AAEA,aAAa,kEAAkB;AAC/B,kBAAkB,+DAAe;AACjC;AACA,cAAc,mDAAG;AACjB,eAAe,mDAAG;AAClB,kCAAkC,mEAAmB;AACrD;;AAEA,MAAM,gEAAgB;AACtB,SAAS,mDAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC5Be;AACf;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACL+D,CAAC;AAChE;;AAEe;AACf,mBAAmB,qEAAqB,WAAW;AACnD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACxBe;AACf;AACA;;;;;;;;;;;;;;;;;;;ACFmD;AACZ;AACS;AACa;AAC9C;AACf,eAAe,yDAAS,WAAW,6DAAa;AAChD,WAAW,+DAAe;AAC1B,IAAI;AACJ,WAAW,oEAAoB;AAC/B;AACA;;;;;;;;;;;;;;;;;;;;;ACVuC;AACI;AACU;AACL;AACC;AACF;;AAE/C;AACA,OAAO,6DAAa;AACpB,EAAE,gEAAgB;AAClB;AACA;;AAEA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA,cAAc,6DAAa;AAC3B;AACA,qBAAqB,gEAAgB;;AAErC;AACA;AACA;AACA;;AAEA,oBAAoB,6DAAa;;AAEjC,SAAS,6DAAa,0CAA0C,2DAAW;AAC3E,cAAc,gEAAgB,eAAe;AAC7C;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;;;AAGe;AACf,eAAe,yDAAS;AACxB;;AAEA,yBAAyB,8DAAc,kBAAkB,gEAAgB;AACzE;AACA;;AAEA,uBAAuB,2DAAW,6BAA6B,2DAAW,6BAA6B,gEAAgB;AACvH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;AC/D2C;AACc;AACV;AAChC;AACf,MAAM,2DAAW;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI,4DAAY;AAChB;AACA,IAAI,kEAAkB;;AAEtB;AACA;;;;;;;;;;;;;;;;;;;AClB+C;AACE;AACN;AACK;AACjC;AACf,4CAA4C,2DAAW;AACvD;AACA;AACA;;AAEA,MAAM,6DAAa,UAAU,8DAAc;AAC3C;AACA;;AAEA,yBAAyB,6DAAa;AACtC;;;;;;;;;;;;;;;;;;ACfuC;AACkB;AACE;AAC5C;AACf,YAAY,yDAAS;AACrB,aAAa,kEAAkB;AAC/B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mEAAmB;AAC9B;AACA;AACA;;;;;;;;;;;;;;;ACvCe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACXuC;AACxB;AACf,YAAY,yDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACT+D;AACN;AACN;AACpC;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAqB,CAAC,kEAAkB,kBAAkB,+DAAe;AAClF;;;;;;;;;;;;;;;;;;ACZuC;;AAEvC;AACA,mBAAmB,yDAAS;AAC5B;AACA;;AAEA;AACA,mBAAmB,yDAAS;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,yDAAS;AAC5B;AACA;;;;;;;;;;;;;;;;;;ACpBqD;AACtC;AACf;AACA,0BAA0B,gEAAgB;AAC1C;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACT2C;AAC5B;AACf,uCAAuC,2DAAW;AAClD;;;;;;;;;;;;;;;;;;;ACHmD;AACJ;AACR;AACU;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;;AAEA,qBAAqB,+DAAe;AACpC;AACA,YAAY,yDAAS;AACrB,+DAA+D,8DAAc;AAC7E;AACA;AACA,uCAAuC,6DAAa;AACpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA,CAAC;AACM;AACP;AACA,CAAC,OAAO;;AAED;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9B+C;AACK,CAAC;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC,SAAS,uEAAa,cAAc,qEAAW;AAC/C;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uHAAuH;;AAEvH;AACA;AACA;AACA,OAAO,IAAI,GAAG;;AAEd,WAAW,uEAAa,cAAc,qEAAW;AACjD;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACnF2D;AACF;AACV;AACc;AACc;AAChC;AACoB;AACN;AACa;AACZ,CAAC;;AAE5D;AACA,oEAAoE;AACpE;AACA,GAAG;AACH,SAAS,wEAAkB,yCAAyC,qEAAe,UAAU,qDAAc;AAC3G;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sEAAgB;AACtC,aAAa,8EAAwB;AACrC,oBAAoB,2CAAI,EAAE,4CAAK;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,uEAAa;AAC/B,+BAA+B,0CAAG,GAAG,2CAAI;AACzC,+BAA+B,6CAAM,GAAG,4CAAK;AAC7C;AACA;AACA,0BAA0B,yEAAe;AACzC;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA,eAAe,wDAAM,oBAAoB;;AAEzC;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C,SAAS,uEAAa;AACtB;AACA;AACA;;AAEA,OAAO,kEAAQ;AACf,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;ACpG2D;AACE;AACZ;AACkB;AACJ;AACJ;AACR;AACX,CAAC;;AAE1C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,qDAAK;AACZ,OAAO,qDAAK;AACZ;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,2CAAI;AAClB,cAAc,0CAAG;AACjB;;AAEA;AACA,uBAAuB,yEAAe;AACtC;AACA;;AAEA,yBAAyB,mEAAS;AAClC,qBAAqB,4EAAkB;;AAEvC,UAAU,0EAAgB;AAC1B;AACA;AACA;AACA,MAAM;;;AAGN;;AAEA,sBAAsB,0CAAG,mBAAmB,2CAAI,kBAAkB,4CAAK,mBAAmB,0CAAG;AAC7F,cAAc,6CAAM;AACpB;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,2CAAI,mBAAmB,0CAAG,kBAAkB,6CAAM,mBAAmB,0CAAG;AAC9F,cAAc,4CAAK;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,2BAA2B,oCAAoC;AAC/D;;AAEA,yBAAyB,qCAAqC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C,6BAA6B,0EAAgB;;AAE7C;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,eAAe,sEAAgB;AAC/B,eAAe,kEAAY;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,mDAAmD;AAC7F;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,yCAAyC,kDAAkD;AAC3F;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,4CAA4C;AAC5C;AACA,GAAG;AACH,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;ACpLiD,CAAC;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mEAAS;AACxB;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;AChDmE;AACR;AAC0B;AAC9B;AACY;AACA;AAChB,CAAC;;AAErD;AACA,MAAM,sEAAgB,gBAAgB,2CAAI;AAC1C;AACA;;AAEA,0BAA0B,0EAAoB;AAC9C,UAAU,mFAA6B,gCAAgC,mFAA6B;AACpG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sEAAgB;AACtC;AACA,iGAAiG,0EAAoB;AACrH;AACA,sBAAsB,sEAAgB,gBAAgB,2CAAI,GAAG,0EAAoB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;;AAEA,yBAAyB,sEAAgB;;AAEzC,2BAA2B,kEAAY,gBAAgB,4CAAK;AAC5D,sBAAsB,0CAAG,EAAE,6CAAM;AACjC;AACA,mBAAmB,oEAAc;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4DAA4D,4CAAK,GAAG,2CAAI,sBAAsB,6CAAM,GAAG,0CAAG;;AAE1G;AACA,0BAA0B,0EAAoB;AAC9C;;AAEA,2BAA2B,0EAAoB;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,QAAQ;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AClJsD;AACC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,0CAAG,EAAE,4CAAK,EAAE,6CAAM,EAAE,2CAAI;AAClC;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oEAAc;AACxC;AACA,GAAG;AACH,0BAA0B,oEAAc;AACxC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,GAAG;AACH,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5DyD;AACZ;AACgB;AACE;AACpB;AACA;AACI;AACc;;;;;;;;;;;;;;;;;;;ACPF;AACD,CAAC;;AAErD;AACP,sBAAsB,sEAAgB;AACtC,wBAAwB,2CAAI,EAAE,0CAAG;;AAEjC,mEAAmE;AACnE;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,UAAU,2CAAI,EAAE,4CAAK;AACrB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wDAAiB;AAC9B;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;ACrDuD;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oEAAc;AAC5C;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACxB6D;AACF;AACgB;AAC5B;AACY;AACF;AACI;AACN;AACJ;AACY;AACE;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oEAAc;AAC/B;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,sEAAgB;AACtC,kBAAkB,kEAAY;AAC9B;AACA,iBAAiB,8EAAwB;AACzC,gBAAgB,gEAAU;AAC1B;AACA;AACA;AACA,4FAA4F;AAC5F;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sCAAsC,0CAAG,GAAG,2CAAI;AAChD,qCAAqC,6CAAM,GAAG,4CAAK;AACnD;AACA;AACA;AACA;AACA;AACA,+BAA+B,4CAAK;AACpC,+BAA+B,4CAAK,2CAA2C;AAC/E;;AAEA;AACA,6CAA6C,uEAAa;AAC1D;AACA;AACA;AACA,yHAAyH,wEAAkB;AAC3I;AACA,uDAAuD;AACvD;AACA;AACA;AACA;;AAEA,mBAAmB,wDAAM;AACzB;AACA;AACA,oDAAoD,yEAAe;AACnE;AACA;AACA;AACA;AACA,0BAA0B,wDAAM,UAAU,oDAAO,yCAAyC,oDAAO;AACjG;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,0CAAG,GAAG,2CAAI;;AAEjD,sCAAsC,6CAAM,GAAG,4CAAK;;AAEpD;;AAEA;;AAEA;;AAEA;;AAEA,wBAAwB,0CAAG,EAAE,2CAAI;;AAEjC;;AAEA;;AAEA;;AAEA,oDAAoD,gEAAc,oCAAoC,wDAAM;;AAE5G;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AC7ImE;AACT;AACF;AACA;AACJ;AACrD,wBAAwB,oEAAc,EAAE,mEAAa,EAAE,mEAAa,EAAE,iEAAW;AACjF,gCAAgC,iEAAe;AAC/C;AACA,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRgE;AACT;AACF;AACA;AACJ;AACV;AACJ;AACsB;AACpB;AACF;AACvC,wBAAwB,oEAAc,EAAE,mEAAa,EAAE,mEAAa,EAAE,iEAAW,EAAE,4DAAM,EAAE,0DAAI,EAAE,qEAAe,EAAE,2DAAK,EAAE,0DAAI;AAC7H,gCAAgC,iEAAe;AAC/C;AACA,CAAC,GAAG;;AAEuE,CAAC;;AAER,CAAC;;;;;;;;;;;;;;;;;;;;;ACjBxB;AACkD;AAC9C;AACI;AACtC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,iDAAa;AAC9E,kBAAkB,4DAAY;AAC9B,gDAAgD,0DAAmB,GAAG,iEAA0B;AAChG,WAAW,4DAAY;AACvB,GAAG,IAAI,qDAAc;AACrB;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,QAAQ,IAAqC;AAC7C;AACA;AACA,IAAI;;;AAGJ;AACA,qBAAqB,8DAAc;AACnC;AACA;AACA;AACA;AACA,KAAK,EAAE,gEAAgB;AACvB;AACA,GAAG,IAAI;AACP;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;AC9CqD;AACR;AACwB;AACF;AACpD;AACf;AACA;AACA;AACA,kCAAkC,gEAAgB;AAClD,8BAA8B,4DAAY;AAC1C;AACA;AACA;;AAEA;AACA,SAAS,0CAAG;AACZ;AACA;AACA;AACA;AACA;;AAEA,SAAS,6CAAM;AACf;AACA;AACA;AACA;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;;AAEA,SAAS,2CAAI;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,wEAAwB;;AAEzD;AACA;;AAEA;AACA,WAAW,4CAAK;AAChB;AACA;;AAEA,WAAW,0CAAG;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACrEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACd8D;AACM;AACM;AACzB;AACI;AAC0D;AACxD;AACE;AACN,CAAC;;AAErC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,sDAAe;AAC/D;AACA,wDAAwD,+CAAQ;AAChE;AACA,0DAA0D,6CAAM;AAChE;AACA;AACA;AACA;AACA,sBAAsB,kEAAkB,yCAAyC,+DAAe,UAAU,qDAAc;AACxH,sCAAsC,6CAAM,GAAG,gDAAS,GAAG,6CAAM;AACjE;AACA;AACA,2BAA2B,yEAAe,CAAC,mEAAS,gDAAgD,4EAAkB;AACtH,4BAA4B,+EAAqB;AACjD,sBAAsB,8DAAc;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,gEAAgB,iBAAiB;AAC1D,6CAA6C,6CAAM,2CAA2C;AAC9F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;;AAE/C,yBAAyB,6CAAM;AAC/B;AACA;AACA,sBAAsB,4CAAK,EAAE,6CAAM;AACnC,kBAAkB,0CAAG,EAAE,6CAAM;AAC7B;AACA,KAAK;AACL;;AAEA;AACA;;;;;;;;;;;;;;;AC9De;AACf;AACA;AACA;AACA,GAAG,IAAI;AACP;;;;;;;;;;;;;;;ACLe;AACf,yFAAyF,aAAa;AACtG;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACRe;AACf;AACA;;;;;;;;;;;;;;;ACFmC;AACpB;AACf;AACA;;;;;;;;;;;;;;;ACHe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACPe;AACf;AACA;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACRe;AACf;AACA;;;;;;;;;;;;;;;;;ACFO;AACA;AACA;;;;;;;;;;;;;;;ACFQ;AACf;AACA;AACA,sDAAsD;AACtD,+BAA+B;AAC/B,4BAA4B;AAC5B,KAAK;AACL;AACA,GAAG,IAAI,GAAG;;AAEV;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;ACbyD;AAC1C;AACf,yBAAyB,EAAE,kEAAkB;AAC7C;;;;;;;;;;;;;;;;ACH6C,CAAC;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEe;AACf;AACA,2CAA2C;;AAE3C,SAAS,4DAAqB;AAC9B;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;AC3Ce;AACf,yBAAyB;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACPe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;ACViC;AACY;AAC7C;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,0BAA0B,sDAAM;AAChC;;AAEA;;AAEA;AACA;AACA,0BAA0B,sDAAM;AAChC;;AAEA;;AAEA;AACA,cAAc,6DAAsB;AACpC,0BAA0B,sDAAM,+DAA+D,0DAAmB;AAClH;;AAEA;;AAEA;AACA;AACA,0BAA0B,sDAAM;AAChC;;AAEA;;AAEA;AACA;AACA,0BAA0B,sDAAM;AAChC;;AAEA;;AAEA;AACA;AACA,0BAA0B,sDAAM;AAChC;;AAEA;;AAEA;AACA;AACA,0BAA0B,sDAAM;AAChC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;;AAEA;AACA;AACA;AACA,SAAS;AACT,wBAAwB,sDAAM;AAC9B;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;AChF2D;AACpD;AACP,SAAS,6CAAO,MAAM,6CAAO;AAC7B;AACO;AACP;AACA;AACA;;;;;;;;;;ACPA,mBAAmB,mBAAO,CAAC,gEAAe;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,+BAA+B;AAC/B,8BAA8B;;;AAG9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,8BAA8B,cAAc;AAC5C;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzJA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,4DAAe;;;;;;;;;;;;;ACjCf;AAEA;;AAEA,MAAMC,SAAS,GAAG,MAAOC,IAAP,IAAgB;AAChC,QAAM;AAAEC,IAAAA;AAAF,MAAWC,MAAjB;;AAEA,MAAGF,IAAH,EAAS;AACP,UAAMG,QAAQ,GAAG,IAAIC,QAAJ,EAAjB;AACAD,IAAAA,QAAQ,CAACE,MAAT,CAAgB,QAAhB,EAA0B,WAA1B;AACAF,IAAAA,QAAQ,CAACE,MAAT,CAAgB,OAAhB,EAA0BJ,IAAI,CAACK,KAA/B;AACAH,IAAAA,QAAQ,CAACE,MAAT,CAAgB,OAAhB,EAAwBL,IAAI,CAACO,aAAL,CAAmB,gBAAnB,EAAqCC,KAA7D;AACAL,IAAAA,QAAQ,CAACE,MAAT,CAAgB,OAAhB,EAAwBL,IAAI,CAACO,aAAL,CAAmB,gBAAnB,EAAqCC,KAA7D;AACAL,IAAAA,QAAQ,CAACE,MAAT,CAAgB,SAAhB,EAA0BL,IAAI,CAACO,aAAL,CAAmB,kBAAnB,EAAuCC,KAAjE;AACAL,IAAAA,QAAQ,CAACE,MAAT,CAAgB,UAAhB,EAA2BL,IAAI,CAACO,aAAL,CAAmB,mBAAnB,EAAwCC,KAAnE;AAEA,QAAIC,QAAQ,GAAG,MAAMC,KAAK,CAACT,IAAI,CAACU,OAAN,EAAe;AACvCC,MAAAA,MAAM,EAAE,MAD+B;AAEvCC,MAAAA,IAAI,EAAEV;AAFiC,KAAf,CAA1B;;AAKA,QAAI,CAACM,QAAQ,CAACK,EAAd,EAAkB;AAChB,YAAM,IAAIC,KAAJ,CAAW,uBAAsBN,QAAQ,CAACO,MAAO,EAAjD,CAAN;AACD;;AAED,WAAO,MAAMP,QAAQ,CAACQ,IAAT,EAAb;AACD;AACF,CAvBD;;AAyBA,MAAMC,MAAM,GAAG,MAAM;AACnB,QAAMC,KAAK,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,CAAd;;AACA,MAAGF,KAAH,EAAU;AACRA,IAAAA,KAAK,CAACG,OAAN,CAActB,IAAI,IAAI;AAEpB,YAAMuB,IAAI,GAAGvB,IAAI,CAACO,aAAL,CAAmB,QAAnB,CAAb;AACA,YAAMiB,OAAO,GAAGxB,IAAI,CAACqB,gBAAL,CAAsB,QAAtB,CAAhB;;AACA,UAAGG,OAAH,EAAY;AACVA,QAAAA,OAAO,CAACF,OAAR,CAAgBG,MAAM,IAAI;AAExB,gBAAMC,QAAQ,GAAGD,MAAM,CAACE,OAAP,CAAe,WAAf,EAA4BpB,aAA5B,CAA0C,kBAA1C,CAAjB;AACAmB,UAAAA,QAAQ,CAACE,gBAAT,CAA0B,OAA1B,EAAmC,MAAM;AACvCH,YAAAA,MAAM,CAACjB,KAAP,GAAe,EAAf;AACA,kBAAMqB,KAAK,GAAG,IAAIC,KAAJ,CAAU,QAAV,CAAd;AACAL,YAAAA,MAAM,CAACM,aAAP,CAAqBF,KAArB;AACD,WAJD;AAMAJ,UAAAA,MAAM,CAACG,gBAAP,CAAwB,QAAxB,EAAiC,MAAM;AAErCJ,YAAAA,OAAO,CAACF,OAAR,CAAgBU,SAAS,IAAI;AAC3BA,cAAAA,SAAS,CAACC,YAAV,CAAuB,UAAvB,EAAmC,UAAnC;AACD,aAFD;AAIAV,YAAAA,IAAI,CAACW,SAAL,CAAeC,GAAf,CAAmB,aAAnB;AAEA,kBAAMC,MAAM,GAAGrC,SAAS,CAACC,IAAD,CAAxB;AACAoC,YAAAA,MAAM,CAACC,IAAP,CAAYC,GAAG,IAAI;AAEjB,kBAAGA,GAAG,CAACC,OAAJ,IAAeD,GAAG,CAACC,OAAJ,IAAe,IAAjC,EAAuC;AAErCD,gBAAAA,GAAG,CAACE,IAAJ,CAASC,MAAT,CAAgBnB,OAAhB,CAAwBoB,KAAK,IAAI;AAC/B,wBAAMC,GAAG,GAAG,IAAIC,SAAJ,GAAgBC,eAAhB,CAAgCH,KAAK,CAACI,OAAtC,EAA+C,WAA/C,CAAZ;;AACA,sBAAGJ,KAAK,CAACK,IAAN,IAAc,MAAjB,EAAyB;AACvB,0BAAMC,SAAS,GAAGL,GAAG,CAACpC,aAAJ,CAAkB,WAAlB,CAAlB;AACAP,oBAAAA,IAAI,CAACO,aAAL,CAAmB,YAAUmC,KAAK,CAACK,IAAhB,GAAqB,IAAxC,EAA8CE,SAA9C,GAA0DD,SAAS,CAACzC,aAAV,CAAwB,QAAxB,EAAkC0C,SAA5F;AAEAzB,oBAAAA,OAAO,CAACF,OAAR,CAAgBU,SAAS,IAAI;AAC3BA,sBAAAA,SAAS,CAACkB,eAAV,CAA0B,UAA1B;AACD,qBAFD;AAGD,mBAPD,MAOO;AACL,0BAAMC,OAAO,GAAGR,GAAG,CAACpC,aAAJ,CAAkB,GAAlB,CAAhB;AAEAgB,oBAAAA,IAAI,CAAC6B,IAAL,GAAYD,OAAO,CAACC,IAApB;AACA7B,oBAAAA,IAAI,CAAC0B,SAAL,GAAiBE,OAAO,CAACF,SAAzB;AACA1B,oBAAAA,IAAI,CAACW,SAAL,CAAemB,MAAf,CAAsB,aAAtB;AACD;AACF,iBAhBD;AAkBD,eAtBgB,CAuBjB;;AACD,aAxBD;AAyBD,WAlCD;AAmCD,SA5CD;AA6CD;AAEF,KApDD;AAqDD;AACF,CAzDD;;AA2DAnD,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4CV,MAA5C;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AACAoC,+DAAA,CAAoBC,kEAApB;;AAGA,MAAMG,sBAAsB,GAAG,MAAM;AAEnC,QAAMC,cAAc,GAAGvC,QAAQ,CAACC,gBAAT,CAA0B,2BAA1B,CAAvB;;AACA,MAAGsC,cAAH,EAAmB;AACjBA,IAAAA,cAAc,CAACrC,OAAf,CAAuBsC,aAAa,IAAI;AAEtC,YAAMC,KAAK,GAAGD,aAAa,CAACrD,aAAd,CAA4B,mCAA5B,CAAd;AACA,YAAMuD,aAAa,GAAGD,KAAK,CAACtD,aAAN,CAAoB,sCAApB,CAAtB;AAEA,YAAMuC,OAAO,GAAGc,aAAa,CAACrD,aAAd,CAA4B,qCAA5B,CAAhB;AACA,YAAMwD,eAAe,GAAGjB,OAAO,CAACvC,aAAR,CAAsB,sCAAtB,CAAxB;;AAGA,eAASyD,gBAAT,CAA0BC,GAA1B,EAA+B;AAC7B,cAAMC,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;;AACA,YAAGD,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtBH,UAAAA,GAAG,CAACtC,OAAJ,CAAY,KAAZ,EAAmB0C,KAAnB,CAAyBC,MAAzB,GAAkCP,eAAe,CAACQ,YAAhB,GAA+B,IAAjE;AACD,SAFD,MAEO;AACLN,UAAAA,GAAG,CAACtC,OAAJ,CAAY,KAAZ,EAAmB0C,KAAnB,CAAyBC,MAAzB,GAAkC,EAAlC;AACD;AACF;;AACDN,MAAAA,gBAAgB,CAACD,eAAD,CAAhB;AACA7D,MAAAA,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC,MAAMQ,gBAAgB,CAACD,eAAD,CAAvB,EAA0C,GAA1C,CAA3C;AAEAT,MAAAA,mDAAA,CAAQS,eAAR,EAAyB;AACvBU,QAAAA,IAAI,EAAE,QADiB;AAEvBC,QAAAA,GAAG,EAAE,GAFkB;AAGvBC,QAAAA,aAAa,EAAE;AACbC,UAAAA,OAAO,EAAEf,KADI;AAEbgB,UAAAA,KAAK,EAAE,WAFM;AAGbC,UAAAA,GAAG,EAAE,cAHQ;AAIbC,UAAAA,GAAG,EAAE,KAJQ;AAKbC,UAAAA,KAAK,EAAE,IALM;AAMbC,UAAAA,OAAO,EAAE,KANI;AAObC,UAAAA,mBAAmB,EAAE;AAPR;AAHQ,OAAzB;AAcD,KAlCD;AAmCD;AACF,CAxCD;;AA0CAhF,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4C8B,sBAA5C,EAAoE;AAAEyB,EAAAA,IAAI,EAAE;AAAR,CAApE;;;;;;;;;;AChDA,MAAMC,QAAQ,GAAG,CAAC7D,IAAD,EAAM8D,EAAN,KAAa;AAE5BC,EAAAA,OAAO,CAACC,GAAR,CAAYhE,IAAZ;AAEA,QAAMiE,qBAAqB,GAAGpE,QAAQ,CAACqE,aAAT,CAAuB,OAAvB,CAA9B;AACAD,EAAAA,qBAAqB,CAACE,IAAtB,GAA6B,MAA7B;AACAF,EAAAA,qBAAqB,CAAChF,KAAtB,GAA8Be,IAA9B;AAEAH,EAAAA,QAAQ,CAACP,IAAT,CAAc8E,WAAd,CAA0BH,qBAA1B;AAEAA,EAAAA,qBAAqB,CAAC/D,MAAtB;AACAL,EAAAA,QAAQ,CAACwE,WAAT,CAAqB,MAArB;AAEAxE,EAAAA,QAAQ,CAACP,IAAT,CAAcgF,WAAd,CAA0BL,qBAA1B;AAEAM,EAAAA,KAAK,CAACT,EAAD,CAAL;AAED,CAjBD;;AAmBAnF,MAAM,CAACkF,QAAP,GAAkBA,QAAlB;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AAEA,MAAMa,YAAY,GAAG7E,QAAQ,CAACC,gBAAT,CACnB,YADmB,CAArB;AAGA,MAAM6E,QAAQ,GAAG9E,QAAQ,CAAC+E,eAAT,CAAyBC,UAAzB,CAAoC,MAApC,EAA4C5F,KAA7D;AACA,MAAM6F,KAAK,GAAGH,QAAQ,KAAK,IAA3B;;AAEA,IAAID,YAAJ,EAAkB;AAChBA,EAAAA,YAAY,CAAC3E,OAAb,CAAqBd,KAAK,IAAI;AAC5B,UAAM8F,QAAQ,GAAGC,MAAM,CAAC/F,KAAK,CAACgG,SAAP,CAAvB;AACA,UAAMC,WAAW,GAAGC,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACE,KAAL,CAAWN,QAAQ,GAAG,CAAtB,CAAV,CAApB;AAEA,UAAMO,UAAU,GAAG,IAAId,+CAAJ,CAAYvF,KAAZ,EAAmB8F,QAAnB,EAA6B;AAC9CQ,MAAAA,QAAQ,EAAE,CADoC;AAE9CC,MAAAA,OAAO,EAAEV,KAAK,GAAG,GAAH,GAAS,GAFuB;AAG9CW,MAAAA,SAAS,EAAEX,KAAK,GAAG,GAAH,GAAS,GAHqB;AAI9CY,MAAAA,aAAa,EAAGX,QAAQ,GAAG,CAAX,KAAiB,CAAjB,GAAqB,CAArB,GAAyB;AAJK,KAA7B,CAAnB;AAOAN,IAAAA,8CAAM,CAAC,YAAD,CAAN,CAAqBkB,EAArB,CAAwB,OAAxB,EAAiCC,OAAO,IAAI;AAC1CN,MAAAA,UAAU,CAAChC,KAAX;AACD,KAFD;AAGD,GAdD;AAeD;;AAED,MAAMuC,UAAU,GAAG,MAAM;AACvB,QAAMC,YAAY,GAAGjG,QAAQ,CAACC,gBAAT,CAA0B,kCAA1B,CAArB;AACAgG,EAAAA,YAAY,CAAC/F,OAAb,CAAqB2C,GAAG,IAAI;AAC1B,QAAIqD,SAAS,GAAGrD,GAAG,CAACsD,WAApB;AACA,QAAIC,KAAK,GAAGvD,GAAG,CAAC1D,aAAJ,CAAkB,8BAAlB,EAAkDgH,WAA9D;AACA,QAAIE,KAAK,GAAGxD,GAAG,CAACyD,kBAAhB;AAEAD,IAAAA,KAAK,CAACpD,KAAN,CAAYsD,IAAZ,GAAoB,CAAC,CAAD,IAAML,SAAS,GAAGE,KAAlB,CAAD,GAA6B,IAAhD;AAED,GAPD;AAQD,CAVD;;AAYAtH,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4CwF,UAA5C,EAAwD;AAAEjC,EAAAA,IAAI,EAAE;AAAR,CAAxD;AACAjF,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC,MAAM4D,UAAU,EAAjB,EAAqB,GAArB,CAA3C;;;;;;;;;;ACzCAlH,MAAM,CAAC0H,eAAP,IAA0BA,eAAe,CAACV,EAAhB,CAAmB,MAAnB,EAA2B,UAAUW,IAAV,EAAgB;AAEjEA,EAAAA,IAAI,CAACC,MAAL,CAAYZ,EAAZ,CAAgB,QAAhB,EAA0B,UAAUC,OAAV,EAAmBY,KAAnB,EAA2B;AACnD,QAAGA,KAAK,CAACC,IAAN,KAAe,WAAlB,EAA+B;AAC7B,YAAMC,OAAO,GAAGd,OAAO,CAAC9F,gBAAR,CAAyB,qBAAzB,CAAhB;AACA,UAAG4G,OAAO,CAACC,MAAR,IAAkB,CAArB,EACEf,OAAO,CAACjF,SAAR,CAAkBC,GAAlB,CAAsB,WAAtB;AACH;AACF,GAND;AAOH,CATyB,CAA1B;;;;;;;;;;;;;;;;ACAA;AACA;;AAEA,MAAMkG,iBAAiB,GAAG,MAAM;AAE9B,QAAMC,eAAe,GAAGlH,QAAQ,CAACC,gBAAT,CAA0B,+BAA1B,CAAxB;AAAA,QACEkH,IAAI,GAAG,EADT;;AAGA,MAAID,eAAJ,EAAqB;AACnBA,IAAAA,eAAe,CAAChH,OAAhB,CAAwBkH,GAAG,IAAI;AAC7B,UAAI,CAACD,IAAI,CAACE,QAAL,CAAcD,GAAG,CAACE,OAAJ,CAAYC,oBAA1B,CAAL,EAAsD;AACpDJ,QAAAA,IAAI,CAACK,IAAL,CAAUJ,GAAG,CAACE,OAAJ,CAAYC,oBAAtB;AACD;AACF,KAJD;AAKD;;AAEDJ,EAAAA,IAAI,CAACjH,OAAL,CAAakH,GAAG,IAAI;AAElB,UAAMK,WAAW,GAAG,IAAIV,kDAAJ,CACjB,iCAAgCK,GAAI,IADnB,EAElB;AACEM,MAAAA,WAAW,EAAE,IADf;AAEEC,MAAAA,cAAc,EAAE,IAFlB;AAGEC,MAAAA,IAAI,EAAE,KAHR;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAFkB,CAApB;AAUD,GAZD;AAcD,CA3BD;;AA6BAZ,iBAAiB;AAEjB,MAAMnE,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;AACA,MAAM+E,QAAQ,GAAG,IAAId,sDAAJ,CAAiB,IAAjB,EAAsB;AACrCe,EAAAA,MAAM,EAAE,gBAAUC,MAAV,EAAkBC,MAAlB,EAA0B;AAChC,UAAMC,MAAM,GAAGlI,QAAQ,CAACb,aAAT,CAAuB,gCAAvB,CAAf;;AACA,QAAG+I,MAAH,EAAW;AACT,aAAOA,MAAM,CAAC/E,YAAd;AACD,KAFD,MAEO;AACL;AACD;AACF;AARoC,CAAtB,CAAjB;;AAWA,MAAMgF,QAAQ,GAAG,MAAM;AAErB,QAAMC,MAAM,GAAGpI,QAAQ,CAACC,gBAAT,CAA0B,aAA1B,CAAf;AAEAmI,EAAAA,MAAM,CAAClI,OAAP,CAAemI,KAAK,IAAI;AAEtB,UAAMC,GAAG,GAAGD,KAAK,CAAClJ,aAAN,CAAoB,kBAApB,CAAZ;AACA,UAAMoJ,IAAI,GAAGF,KAAK,CAAClJ,aAAN,CAAoB,+BAApB,CAAb;AACA,UAAMqJ,KAAK,GAAGH,KAAK,CAACpI,gBAAN,CAAuB,mBAAvB,CAAd;AAEA,UAAMwI,eAAe,GAAGH,GAAG,CAACrI,gBAAJ,CAAqB,6BAArB,CAAxB;AAEAwI,IAAAA,eAAe,CAACvI,OAAhB,CAAwBwI,WAAW,IAAI;AAErCA,MAAAA,WAAW,CAAClI,gBAAZ,CAA6B,OAA7B,EAAsC,MAAM;AAC1C,cAAMmI,MAAM,GAAGD,WAAW,CAACpB,OAAZ,CAAoBsB,mBAAnC;AACA,cAAMC,IAAI,GAAGR,KAAK,CAAClJ,aAAN,CAAoB,iBAAgBwJ,MAAhB,GAAwB,IAA5C,CAAb;;AAEA,YAAGE,IAAH,EAAS;AACPA,UAAAA,IAAI,CAAC1J,aAAL,CAAmB,uBAAnB,EAA4C2J,KAA5C;;AAEA,cAAGhG,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8E,YAAAA,QAAQ,CAACiB,aAAT,CAAuBF,IAAvB;AACD;AACF;AACF,OAXD;AAaD,KAfD;AAiBAL,IAAAA,KAAK,CAACtI,OAAN,CAAc,CAAC8I,IAAD,EAAMC,KAAN,KAAgB;AAC5B,YAAMN,MAAM,GAAGK,IAAI,CAAC1B,OAAL,CAAa4B,IAA5B;AACA,YAAMC,MAAM,GAAGH,IAAI,CAAC7J,aAAL,CAAmB,uBAAnB,CAAf;AAEAgK,MAAAA,MAAM,CAAC3I,gBAAP,CAAwB,OAAxB,EAAiC,MAAM;AAErC,cAAM4I,YAAY,GAAGd,GAAG,CAACrI,gBAAJ,CAAqB,6BAArB,CAArB;;AAEA,YAAGsI,IAAH,EAAS;AACP,cAAGI,MAAM,KAAK,UAAd,EAA0B;AACxBJ,YAAAA,IAAI,CAAC1H,YAAL,CAAkB,WAAlB,EAA8B,0CAA9B;AACD,WAFD,MAEO,IAAG8H,MAAM,KAAK,KAAd,EAAqB;AAC1BJ,YAAAA,IAAI,CAAC1H,YAAL,CAAkB,WAAlB,EAA8B,2CAA9B;AACD,WAFM,MAEA,IAAG8H,MAAM,KAAK,UAAd,EAA0B;AAC/BJ,YAAAA,IAAI,CAAC1H,YAAL,CAAkB,WAAlB,EAA8B,wCAA9B;AACD,WAFM,MAEA;AACL0H,YAAAA,IAAI,CAACzG,eAAL,CAAqB,WAArB;AACD;AACF;;AAEDsH,QAAAA,YAAY,CAAClJ,OAAb,CAAqBwI,WAAW,IAAI;AAClCA,UAAAA,WAAW,CAAC5H,SAAZ,CAAsBmB,MAAtB,CAA6B,WAA7B;;AAEA,cAAGyG,WAAW,CAACpB,OAAZ,CAAoBsB,mBAApB,KAA4CD,MAA/C,EAAuD;AACrDD,YAAAA,WAAW,CAAC5H,SAAZ,CAAsBC,GAAtB,CAA0B,WAA1B;AACD;AAEF,SAPD;AASD,OAzBD;;AA2BA,UAAGkI,KAAK,KAAK,CAAb,EAAgB;AACdE,QAAAA,MAAM,CAACL,KAAP;AACD;AACF,KAlCD;AAoCD,GA7DD;AA8DD,CAlED;;AAoEAhK,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4C2H,QAA5C,EAAsD;AAAEpE,EAAAA,IAAI,EAAE;AAAR,CAAtD;;;;;;;;;;;;;;;;AClHA;AACA;AACA;;AAEA,MAAMuF,YAAY,GAAG,MAAM;AACvB,QAAMpB,MAAM,GAAGlI,QAAQ,CAACb,aAAT,CAAuB,gCAAvB,CAAf;AACAa,EAAAA,QAAQ,CAAC+E,eAAT,CAAyB9B,KAAzB,CAA+BsG,WAA/B,CAA2C,2BAA3C,EAAyE,GAAErB,MAAM,CAAC/E,YAAa,IAA/F;AACAnD,EAAAA,QAAQ,CAAC+E,eAAT,CAAyB9B,KAAzB,CAA+BsG,WAA/B,CAA2C,0BAA3C,EAAwE,KAAxE;AACH,CAJD;;AAMAzK,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC,MAAMkH,YAAY,EAAnB,EAAuB,GAAvB,CAA3C;AACAxK,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4C8I,YAA5C,EAA0D;AAAEvF,EAAAA,IAAI,EAAE;AAAR,CAA1D;;AAGA,MAAMyF,gBAAgB,GAAG,MAAM;AAE7B,QAAMC,YAAY,GAAGzJ,QAAQ,CAACb,aAAT,CAAuB,wBAAvB,CAArB;AACA,QAAMuK,IAAI,GAAG1J,QAAQ,CAACb,aAAT,CAAuB,0BAAvB,CAAb;AACAuK,EAAAA,IAAI,CAAC5I,SAAL,CAAemB,MAAf,CAAsB,WAAtB;AAEAoH,EAAAA,oDAAK,CAACI,YAAD,EAAe;AAClB/H,IAAAA,OAAO,EAAEgI,IADS;AAElBC,IAAAA,SAAS,EAAE,IAFO;AAGlBC,IAAAA,KAAK,EAAE,IAHW;AAIlBC,IAAAA,MAAM,EAAE,IAJU;AAKlBrG,IAAAA,OAAO,EAAE,kBALS;AAMlBkF,IAAAA,WAAW,EAAE,IANK;AAOlBX,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,EAAJ,CAPU;AAQlB+B,IAAAA,SAAS,EAAE,cARO;AASlBC,IAAAA,KAAK,EAAE;AATW,GAAf,CAAL;AAYD,CAlBD;;AAmBAP,gBAAgB;AAIhB,MAAMQ,MAAM,GAAGhK,QAAQ,CAACb,aAAT,CAAuB,uBAAvB,CAAf;AACA,MAAM8K,GAAG,GAAGjK,QAAQ,CAACb,aAAT,CAAuB,gBAAvB,CAAZ;;AAEA,MAAM+K,SAAS,GAAG,MAAM;AAEtBD,EAAAA,GAAG,CAACnJ,SAAJ,CAAcmH,MAAd,CAAqB,WAArB;AACA+B,EAAAA,MAAM,CAAClJ,SAAP,CAAiBmH,MAAjB,CAAwB,WAAxB;AAED,CALD;;AAOA,IAAG+B,MAAH,EAAW;AACTA,EAAAA,MAAM,CAACxJ,gBAAP,CAAwB,OAAxB,EAAgC0J,SAAhC;AACD;;;;;;;;;;;;;;ACjDD;;AAEA,MAAME,QAAQ,GAAG,MAAM;AACrBpK,EAAAA,QAAQ,CACLC,gBADH,CACoB,0BADpB,EAEGC,OAFH,CAEWmK,IAAI,IAAI;AACf,UAAMC,QAAQ,GAAGD,IAAI,CAACE,YAAL,CAAkB,eAAlB,CAAjB;AACA,UAAMC,KAAK,GAAGH,IAAI,CAACvJ,SAAL,CAAe2J,QAAf,CAAwB,oBAAxB,CAAd;AAEAN,IAAAA,+CAAA,CACU;AACNE,MAAAA,IADM;AAENM,MAAAA,IAAI,EAAE,CAFA;AAGNvH,MAAAA,EAAE,EAAE,GAHE;AAINwH,MAAAA,MAAM,EAAE,KAJF;AAKNC,MAAAA,KAAK,EAAE;AACL,wBAAgB;AACdF,UAAAA,IAAI,EAAE,GADQ;AAEdvH,UAAAA,EAAE,EAAG,GAAE,CAACoH,KAAK,GAAG,CAAH,GAAO,CAAb,IAAkBF,QAAS;AAFpB;AADX;AALD,KADV,EAaG7G,KAbH;AAcD,GApBH;AAqBD,CAtBD;;AAwBA2G,QAAQ;;;;;;;;;;;;;;AC1BR;;AAEA,MAAMW,MAAM,GAAG,MAAM;AACnBC,EAAAA,KAAK,CAACL,IAAN,CACE3K,QAAQ,CAACC,gBAAT,CACE,mCADF,CADF,EAIEC,OAJF,CAIU+K,EAAE,IAAI;AACdH,IAAAA,wDAAa,CAACG,EAAE,CAACpJ,SAAJ,EAAe;AAAEqJ,MAAAA,KAAK,EAAE,KAAT;AAAgBC,MAAAA,aAAa,EAAE;AAA/B,KAAf,CAAb,CAAiElK,IAAjE,CACED,MAAM,IAAI;AACR;AACAiK,MAAAA,EAAE,CAACpJ,SAAH,GAAeb,MAAf;AACD,KAJH;AAMD,GAXD;AAYD,CAbD;;AAeA+J,MAAM;;;;;;;;;;;;;;;ACjBN;AACA;;AAEA,MAAMO,IAAI,GAAG,MAAM;AACjB,QAAMC,MAAM,GAAGvL,QAAQ,CAACb,aAAT,CAAuB,SAAvB,CAAf;;AAEA,MAAIoM,MAAJ,EAAY;AACV,UAAMC,QAAQ,GAAGJ,4CAAK,CAAC,SAAD,EAAY;AAChCK,MAAAA,UAAU,EAAE,UADoB;AAEhCC,MAAAA,SAAS,EAAE,GAFqB;AAGhCC,MAAAA,MAAM,EAAE,gBAASV,EAAT,EAAa;AACnB,cAAMW,UAAU,GAAGX,EAAE,CAAC1K,OAAH,CAAW,QAAX,CAAnB;;AACE,YAAGqL,UAAH,EAAe;AAEf,gBAAMC,WAAW,GAAGD,UAAU,CAACzM,aAAX,CAAyB,qBAAzB,CAApB;;AACA,cAAG0M,WAAH,EAAgB;AACd,gBAAIC,OAAO,GAAGD,WAAW,CAAC5I,KAAZ,CAAkB8I,eAAhC;AACAD,YAAAA,OAAO,GAAGA,OAAO,CAACE,OAAR,CAAgB,OAAhB,EAAwB,EAAxB,EAA4BA,OAA5B,CAAoC,IAApC,EAAyC,EAAzC,CAAV;;AAEA,gBAAGF,OAAO,CAAChF,MAAR,GAAiB,CAApB,EAAuB;AACrB8E,cAAAA,UAAU,CAAC9K,SAAX,CAAqBC,GAArB,CAAyB,eAAzB;AACD;AACF;AACF;AACF;AAjB+B,KAAZ,CAAtB;;AAmBA,UAAMkL,OAAO,GAAG,MAAMT,QAAQ,CAACS,OAAT,EAAtB;;AACAA,IAAAA,OAAO;AAEPZ,IAAAA,0DAAA,CAAO,mBAAP,EAA4B,MAAMY,OAAO,EAAzC;AAEAnN,IAAAA,MAAM,CAAC0H,eAAP,IAA0BA,eAAe,CAACV,EAAhB,CAAmB,MAAnB,EAA2B,UAAUW,IAAV,EAAgB;AACnEA,MAAAA,IAAI,CAACC,MAAL,CAAYZ,EAAZ,CAAe,UAAf,EAA2B,MAAMmG,OAAO,EAAxC;AACD,KAFyB,CAA1B;AAIAjM,IAAAA,QAAQ,CAACQ,gBAAT,CAA0B,kBAA1B,EAA8C,MAAMyL,OAApD,EAA6D;AAC3DlI,MAAAA,IAAI,EAAE;AADqD,KAA7D;AAGD;AACF,CApCD;;AAsCAuH,IAAI;;;;;;;;;;;;;;;ACzCJ;AACA;;AAEA,MAAMa,QAAQ,GAAG,MAAM;AAErB,QAAMlC,GAAG,GAAGjK,QAAQ,CAACqE,aAAT,CAAuB,KAAvB,CAAZ;AACA4F,EAAAA,GAAG,CAACnJ,SAAJ,CAAcC,GAAd,CAAkB,UAAlB;AACAkJ,EAAAA,GAAG,CAAC3C,OAAJ,CAAY8E,SAAZ,GAAwB,GAAxB;AAEA,QAAMC,KAAK,GAAGH,gDAAS,CAAC;AACtBI,IAAAA,QAAQ,EAAE,cADY;AAEtBC,IAAAA,eAAe,EAAE,IAFK;AAGtBC,IAAAA,IAAI,EAAE,IAHgB;AAItBtJ,IAAAA,MAAM,EAAE,MAJc;AAKtBkD,IAAAA,KAAK,EAAE,MALe;AAMtBqG,IAAAA,IAAI,EAAE,MANgB;AAOtBC,IAAAA,UAAU,EAAE,CAPU;AAQtBC,IAAAA,mBAAmB,EAAE,KARC;AAStBC,IAAAA,MAAM,EAAE,kBAAW;AAEjBvB,MAAAA,4DAAA,CAAS,mBAAT,EAA8B,IAA9B;AAEApB,MAAAA,GAAG,CAACpI,SAAJ,GAAgB,EAAhB;;AAEA,WAAK,IAAIiL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,KAAK,CAACU,QAAN,CAAejG,MAAnC,EAA2CgG,CAAC,EAA5C,EAAgD;AAC9C7C,QAAAA,GAAG,CAACpI,SAAJ,GAAgBoI,GAAG,CAACpI,SAAJ,GAAgB,qCAAhC;AACD;;AACD,YAAMmL,KAAK,GAAG/C,GAAG,CAAChK,gBAAJ,CAAqB,MAArB,CAAd;AACA+M,MAAAA,KAAK,CAAC9M,OAAN,CAAc,CAAC8I,IAAD,EAAMC,KAAN,KAAgB;AAC5BD,QAAAA,IAAI,CAACxI,gBAAL,CAAsB,OAAtB,EAA8B,MAAM;AAClC6L,UAAAA,KAAK,CAACY,SAAN,CAAgBhE,KAAhB;AACD,SAFD;AAGD,OAJD;AAMA,aAAOoD,KAAK,CAACa,KAAN,CAAY/N,aAAZ,CAA0B,aAA1B,EAAyCoF,WAAzC,CAAqD0F,GAArD,CAAP;AACD,KA1BqB;AA2BtBkD,IAAAA,gBAAgB,EAAE,0BAASC,IAAT,EAAeC,IAAf,EAAqB;AACrChC,MAAAA,4DAAA,CAAS,mBAAT,EAA8B,IAA9B;AAEA,YAAM2B,KAAK,GAAG/C,GAAG,CAAChK,gBAAJ,CAAqB,MAArB,CAAd;AACA+M,MAAAA,KAAK,CAAC9M,OAAN,CAAc,CAAC8I,IAAD,EAAMC,KAAN,KAAgB;AAC5B,YAAGA,KAAK,IAAIoE,IAAI,CAACpE,KAAjB,EAAwB;AACtBD,UAAAA,IAAI,CAAClI,SAAL,CAAeC,GAAf,CAAmB,SAAnB;AACD,SAFD,MAEO;AACLiI,UAAAA,IAAI,CAAClI,SAAL,CAAemB,MAAf,CAAsB,SAAtB;AACD;AACF,OAND;AAOAgI,MAAAA,GAAG,CAACnJ,SAAJ,CAAcC,GAAd,CAAkB,gBAAlB;AACD;AAvCqB,GAAD,CAAvB;AA0CD,CAhDD;;AAkDAoL,QAAQ;;;;;;;;;;ACrDR,MAAMmB,UAAU,GAAG,MAAM;AAEvB,QAAMC,GAAG,GAAGvN,QAAQ,CAACC,gBAAT,CAA0B,sCAA1B,CAAZ;;AACA,MAAGsN,GAAH,EAAQ;AACNA,IAAAA,GAAG,CAACrN,OAAJ,CAAYsN,EAAE,IAAI;AAChBA,MAAAA,EAAE,CAAC1M,SAAH,CAAaC,GAAb,CAAiB,QAAjB;AACA,YAAM0M,GAAG,GAAGD,EAAE,CAACvN,gBAAH,CAAoB,IAApB,CAAZ;;AACA,UAAGwN,GAAH,EAAQ;AACNA,QAAAA,GAAG,CAACvN,OAAJ,CAAYwN,EAAE,IAAI;AAChBA,UAAAA,EAAE,CAAC5M,SAAH,CAAaC,GAAb,CAAiB,cAAjB;AACA2M,UAAAA,EAAE,CAAC7L,SAAH,GAAe,sFAAsF6L,EAAE,CAAC7L,SAAxG;AACD,SAHD;AAID;AACF,KATD;AAUD;AAEF,CAhBD;;AAkBAyL,UAAU;;;;;;;;;;;;;;;;AClBV;AACA;;AAEA,MAAMK,OAAO,GAAGC,mBAAO,CAAC,gDAAD,CAAvB;;AAEA,MAAM9F,QAAQ,GAAG,IAAId,sDAAJ,CAAiB,IAAjB,EAAsB;AACrCe,EAAAA,MAAM,EAAE,gBAAUC,MAAV,EAAkBC,MAAlB,EAA0B;AAChC,UAAMC,MAAM,GAAGlI,QAAQ,CAACb,aAAT,CAAuB,gCAAvB,CAAf;;AACA,QAAG+I,MAAH,EAAW;AACT,aAAOA,MAAM,CAAC/E,YAAd;AACD,KAFD,MAEO;AACL;AACD;AACF;AARoC,CAAtB,CAAjB;;AAaA,MAAM0K,UAAU,GAAG,SAAbA,UAAa,CAACC,CAAD,EAAIC,WAAJ,EAAuC;AAAA,MAAtBC,MAAsB,uEAAb,IAAa;AAAA,MAARnL,GAAQ;AAExDiL,EAAAA,CAAC,CAACG,cAAF;AAEA,MAAIC,MAAM,GAAGF,MAAM,GAAG,GAAH,GAAS,GAA5B;AAEA,QAAMG,UAAU,GAAG;AACjB,SAAK7I,IAAI,CAAC8I,GAAL,CAASpO,QAAQ,CAAC+E,eAAT,CAAyBsJ,WAAlC,EAA+CvP,MAAM,CAACwP,UAAP,IAAqB,CAApE,CADY;AAEjB,SAAKhJ,IAAI,CAAC8I,GAAL,CAASpO,QAAQ,CAAC+E,eAAT,CAAyB5B,YAAlC,EAAgDrE,MAAM,CAACyP,WAAP,IAAsB,CAAtE;AAFY,GAAnB;AAMAR,EAAAA,WAAW,CAACS,UAAZ,CAAuB,CAACL,UAAU,CAACM,CAAX,GAAe5L,GAAG,CAACwL,WAAJ,GAAkBH,MAAlC,IAA4C,CAAnE,EAAsE,CAACC,UAAU,CAACO,CAAX,GAAe7L,GAAG,CAACM,YAAJ,GAAmB+K,MAAnC,IAA6C,CAAnH,EAAsHA,MAAtH;AACD,CAbD;;AAeA,MAAMS,SAAS,GAAG,MAAM;AAEtB,QAAM7L,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;AACA,QAAM6L,IAAI,GAAG5O,QAAQ,CAACC,gBAAT,CAA0B,QAA1B,CAAb;AAEA2O,EAAAA,IAAI,CAAC1O,OAAL,CAAa2O,GAAG,IAAI;AAElB,UAAMC,UAAU,GAAGD,GAAG,CAAC5O,gBAAJ,CAAqB,+BAArB,CAAnB;AACA6O,IAAAA,UAAU,CAAC5O,OAAX,CAAmB6O,OAAO,IAAI;AAC5B,UAAIC,YAAY,GAAG;AAACC,QAAAA,CAAC,EAAE,GAAJ;AAASC,QAAAA,CAAC,EAAE;AAAZ,OAAnB;AAEA,YAAMnB,WAAW,GAAGJ,OAAO,CAACoB,OAAD,EAAU;AACnC;AACAI,QAAAA,YAAY,EAAErM,EAAE,CAACE,OAFkB;AAGnCoM,QAAAA,MAAM,EAAE,IAH2B;AAInCC,QAAAA,aAAa,EAAE,GAJoB;AAKnCC,QAAAA,OAAO,EAAE,CAL0B;AAMnCC,QAAAA,OAAO,EAAE,CAN0B;AAOnCC,QAAAA,SAAS,EAAE,IAPwB;AAQnCC,QAAAA,eAAe,EAAET,YARkB;AASnCU,QAAAA,WAAW,EAAE,qBAAS5B,CAAT,EAAY;AACvB;AACA,iBAAO,CAACA,CAAC,CAAC6B,MAAV;AACD,SAZkC;AAanCC,QAAAA,aAAa,EAAE,uBAAS9B,CAAT,EAAY;AACzB,iBAAO,KAAP;AACD;AACD;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA7B2C,OAAV,CAA3B;AAmCA,YAAM+B,SAAS,GAAGhB,GAAG,CAAC5O,gBAAJ,CAAqB,oCAArB,CAAlB;AACA,UAAI6P,UAAU,GAAG;AAACb,QAAAA,CAAC,EAAE,CAAJ;AAAOC,QAAAA,CAAC,EAAE;AAAV,UAAea,SAAhC;;AACA,WAAK,IAAIjD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+C,SAAS,CAAC/I,MAA9B,EAAsCgG,CAAC,EAAvC,EAA2C;AACzC,cAAMkD,QAAQ,GAAGH,SAAS,CAAC/C,CAAD,CAA1B;AACAkD,QAAAA,QAAQ,CAACxP,gBAAT,CAA0B,YAA1B,EAAyCyP,GAAD,IAAS;AAC/CH,UAAAA,UAAU,GAAG;AAAEb,YAAAA,CAAC,EAAEgB,GAAG,CAACC,OAAJ,CAAY,CAAZ,EAAeC,OAApB;AAA6BjB,YAAAA,CAAC,EAAEe,GAAG,CAACC,OAAJ,CAAY,CAAZ,EAAeE;AAA/C,WAAb;AACD,SAFD;AAGAJ,QAAAA,QAAQ,CAACxP,gBAAT,CAA0B,UAA1B,EAAuCyP,GAAD,IAAS;AAC7C,cAAIH,UAAU,KAAKC,SAAnB,EAA8B;AAC5B,kBAAMM,QAAQ,GAAG;AAAEpB,cAAAA,CAAC,EAAEgB,GAAG,CAACK,cAAJ,CAAmB,CAAnB,EAAsBH,OAA3B;AAAoCjB,cAAAA,CAAC,EAAEe,GAAG,CAACK,cAAJ,CAAmB,CAAnB,EAAsBF;AAA7D,aAAjB;AACA,kBAAMG,QAAQ,GAAGjL,IAAI,CAACkL,IAAL,CAAUlL,IAAI,CAACmL,GAAL,CAASJ,QAAQ,CAACpB,CAAT,GAAaa,UAAU,CAACb,CAAjC,EAAoC,CAApC,IAAyC3J,IAAI,CAACmL,GAAL,CAASJ,QAAQ,CAACnB,CAAT,GAAaY,UAAU,CAACZ,CAAjC,EAAoC,CAApC,CAAnD,CAAjB;;AACA,gBAAIqB,QAAQ,GAAG,EAAf,EAAmB;AACjBP,cAAAA,QAAQ,CAAClH,KAAT;AACD;AACF;AACF,SARD;AASD;;AAEDiF,MAAAA,WAAW,CAACjI,EAAZ,CAAe,WAAf,EAA4B,UAASgI,CAAT,EAAY;AACtCiB,QAAAA,OAAO,CAAC9L,KAAR,CAAcsG,WAAd,CAA0B,mBAA1B,EAA+CmH,UAAU,CAAC,IAAIA,UAAU,CAAC5C,CAAC,CAAC6C,YAAF,GAAiBC,KAAlB,CAAf,CAAzD;AACD,OAFD;AAIA,YAAMC,WAAW,GAAG9B,OAAO,CAACxO,OAAR,CAAgB,iBAAhB,EAAmCN,gBAAnC,CAAoD,qBAApD,CAApB;AACA4Q,MAAAA,WAAW,CAAC3Q,OAAZ,CAAoB4Q,OAAO,IAAI;AAC7B,cAAM9C,MAAM,GAAG8C,OAAO,CAAChQ,SAAR,CAAkB2J,QAAlB,CAA2B,6BAA3B,CAAf;AAEAqG,QAAAA,OAAO,CAACtQ,gBAAR,CAAyB,OAAzB,EAAmCsN,CAAD,IAAO;AACvCD,UAAAA,UAAU,CAACC,CAAD,EAAGC,WAAH,EAAeC,MAAf,EAAsBe,OAAtB,CAAV;AACD,SAFD;AAID,OAPD;AAUD,KAvED;AA2EA,UAAMzG,GAAG,GAAGuG,GAAG,CAAC1P,aAAJ,CAAkB,aAAlB,CAAZ;AACA,UAAM0E,OAAO,GAAGgL,GAAG,CAAC5O,gBAAJ,CAAqB,gBAArB,CAAhB;AAEA4D,IAAAA,OAAO,CAAC3D,OAAR,CAAgB6Q,MAAM,IAAI;AAExB,YAAMC,OAAO,GAAGD,MAAM,CAACzJ,OAAP,CAAe0J,OAA/B;AACA,YAAM7Q,IAAI,GAAG4Q,MAAM,CAACzJ,OAAP,CAAenH,IAA5B;AAEA,YAAM8Q,GAAG,GAAGF,MAAM,CAACxQ,OAAP,CAAe,aAAf,CAAZ;AACA,YAAM2Q,QAAQ,GAAGD,GAAG,CAAC9R,aAAJ,CAAkB,kBAAlB,CAAjB;AACA,YAAMqJ,KAAK,GAAGyI,GAAG,CAAC9R,aAAJ,CAAkB,eAAlB,CAAd;AACA,YAAM0J,IAAI,GAAGL,KAAK,CAACrJ,aAAN,CAAoB,qBAAmBgB,IAAnB,GAAwB,IAA5C,CAAb,CARwB,CAUxB;AACA;;AAEA4Q,MAAAA,MAAM,CAACvQ,gBAAP,CAAwB,OAAxB,EAAkCsN,CAAD,IAAO;AACtCA,QAAAA,CAAC,CAACG,cAAF;AAEAgD,QAAAA,GAAG,CAAChR,gBAAJ,CAAqB,gBAArB,EAAuCC,OAAvC,CAA+C8I,IAAI,IAAI;AACrD,cAAGA,IAAI,KAAK+H,MAAZ,EAAoB;AAClB/H,YAAAA,IAAI,CAAClI,SAAL,CAAemB,MAAf,CAAsB,WAAtB;AACD;AACF,SAJD;AAMA8O,QAAAA,MAAM,CAACjQ,SAAP,CAAiBmH,MAAjB,CAAwB,WAAxB;AAGAiJ,QAAAA,QAAQ,CAACpI,KAAT;AACAD,QAAAA,IAAI,CAAC1J,aAAL,CAAmB,0BAAnB,EAA+C2J,KAA/C;;AACA,YAAGhG,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8E,UAAAA,QAAQ,CAACiB,aAAT,CAAuBF,IAAvB;AACD;;AAEDsI,QAAAA,UAAU,CAAC,MAAM;AACf3I,UAAAA,KAAK,CAAC4I,SAAN,GAAkBL,MAAM,CAACjQ,SAAP,CAAiB2J,QAAjB,CAA0B,WAA1B,IAAyC5B,IAAI,CAACwI,SAA9C,GAA0D,CAA5E;AACD,SAFS,EAER,EAFQ,CAAV;AAGD,OArBD;AAuBD,KApCD;AAsCD,GAvHD;AAwHD,CA7HD;;AA+HA1C,SAAS;;AAET,MAAM2C,QAAQ,GAAG,MAAM;AAErB,QAAMC,IAAI,GAAGvR,QAAQ,CAACC,gBAAT,CAA0B,aAA1B,CAAb;AACAsR,EAAAA,IAAI,CAACrR,OAAL,CAAa+Q,GAAG,IAAI;AAClB,UAAMzI,KAAK,GAAGyI,GAAG,CAAChR,gBAAJ,CAAqB,cAArB,CAAd;AAEAuI,IAAAA,KAAK,CAACtI,OAAN,CAAc8I,IAAI,IAAI;AACpB,YAAMwI,MAAM,GAAGxI,IAAI,CAAC1B,OAAL,CAAamK,OAA5B;AACA,YAAMtI,MAAM,GAAGH,IAAI,CAAC7J,aAAL,CAAmB,uBAAnB,CAAf;AACAgK,MAAAA,MAAM,CAAC3I,gBAAP,CAAwB,OAAxB,EAAgC,MAAM;AACpC,cAAMkR,OAAO,GAAGvI,MAAM,CAAChK,aAAP,CAAqB,QAArB,CAAhB;AACA,cAAM4R,MAAM,GAAGE,GAAG,CAAC9R,aAAJ,CAAkB,+BAA8BqS,MAA9B,GAAsC,IAAxD,CAAf;AACA,cAAMN,QAAQ,GAAGD,GAAG,CAAC9R,aAAJ,CAAkB,kBAAlB,CAAjB;;AAEA,YAAG+R,QAAH,EAAa;AACXA,UAAAA,QAAQ,CAACpI,KAAT;AACD;;AACDmI,QAAAA,GAAG,CAAChR,gBAAJ,CAAqB,gBAArB,EAAuCC,OAAvC,CAA+C8I,IAAI,IAAI;AACrD,cAAGA,IAAI,KAAK+H,MAAZ,EAAoB;AAClB/H,YAAAA,IAAI,CAAClI,SAAL,CAAemB,MAAf,CAAsB,WAAtB;AACD;AACF,SAJD;;AAMA,YAAGyP,OAAO,CAACnH,YAAR,CAAqB,eAArB,MAA0C,MAA7C,EAAqD;AACnDwG,UAAAA,MAAM,CAACjQ,SAAP,CAAiBC,GAAjB,CAAqB,WAArB;AACD,SAFD,MAEK;AACHgQ,UAAAA,MAAM,CAACjQ,SAAP,CAAiBmB,MAAjB,CAAwB,WAAxB;AACD;AACF,OAnBD;AAqBD,KAxBD;AAyBD,GA5BD;AA8BD,CAjCD;;AAmCAqP,QAAQ;;AAER,MAAMK,WAAW,GAAG,MAAM;AAExB,QAAMC,WAAW,GAAG5R,QAAQ,CAACC,gBAAT,CAA0B,eAA1B,CAApB;AAEA2R,EAAAA,WAAW,CAAC1R,OAAZ,CAAoB2C,GAAG,IAAI;AAEzB,UAAMgP,GAAG,GAAGhP,GAAG,CAAC1D,aAAJ,CAAkB,kBAAlB,CAAZ;;AACA,QAAG0S,GAAH,EAAQ;AACNA,MAAAA,GAAG,CAACrR,gBAAJ,CAAqB,OAArB,EAA+BsN,CAAD,IAAO;AACnCA,QAAAA,CAAC,CAACG,cAAF;AACApL,QAAAA,GAAG,CAAC/B,SAAJ,CAAcmB,MAAd,CAAqB,eAArB;AACD,OAHD;AAID;AAEF,GAVD;AAYD,CAhBD;;AAkBA0P,WAAW;;AAEX,MAAMG,YAAY,GAAG,MAAM;AAEzB,QAAMC,UAAU,GAAG/R,QAAQ,CAACC,gBAAT,CAA0B,8BAA1B,CAAnB;AAAA,QACMkH,IAAI,GAAG,EADb;;AAGA,MAAI4K,UAAJ,EAAgB;AACdA,IAAAA,UAAU,CAAC7R,OAAX,CAAmBkH,GAAG,IAAI;AACxB,UAAI,CAACD,IAAI,CAACE,QAAL,CAAcD,GAAG,CAACE,OAAJ,CAAY0K,kBAA1B,CAAL,EAAoD;AAClD7K,QAAAA,IAAI,CAACK,IAAL,CAAUJ,GAAG,CAACE,OAAJ,CAAY0K,kBAAtB;AACD;AACF,KAJD;AAKD;;AAED7K,EAAAA,IAAI,CAACjH,OAAL,CAAakH,GAAG,IAAI;AAChB,UAAM6K,WAAW,GAAG,IAAIlL,kDAAJ,CACjB,gCAA+BK,GAAI,IADlB,EAElB;AACEM,MAAAA,WAAW,EAAE,IADf;AAEEC,MAAAA,cAAc,EAAE,IAFlB;AAGEC,MAAAA,IAAI,EAAE,KAHR;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAFkB,CAApB;AAUH,GAXD;AAaD,CA1BD;;AA4BAiK,YAAY;;;;;;;;;;ACvPZ,MAAMI,MAAM,GAAGlS,QAAQ,CAACC,gBAAT,CAA0B,oBAA1B,CAAf;AAEAiS,MAAM,CAAChS,OAAP,CAAe,UAAUsD,OAAV,EAAmB;AAChCA,EAAAA,OAAO,CAAChD,gBAAR,CAAyB,OAAzB,EAAkC,UAAUC,KAAV,EAAiB;AAEjDA,IAAAA,KAAK,CAACwN,cAAN;AAEA,UAAMf,KAAK,GAAGlN,QAAQ,CAACmS,cAAT,CAAwB3O,OAAO,CAAC8D,OAAR,CAAgB8K,UAAxC,CAAd;AACAlF,IAAAA,KAAK,CAACpM,SAAN,CAAgBC,GAAhB,CAAoB,eAApB;AAEA,UAAMsR,OAAO,GAAGrS,QAAQ,CAAC+E,eAAT,CAAyB9B,KAAzB,CAA+BqP,gBAA/B,CAAgD,YAAhD,CAAhB;AACA,UAAM7S,IAAI,GAAGO,QAAQ,CAACP,IAAtB;AACAA,IAAAA,IAAI,CAACwD,KAAL,CAAWsP,QAAX,GAAsB,OAAtB;AACA9S,IAAAA,IAAI,CAACqB,SAAL,CAAeC,GAAf,CAAmB,aAAnB;AACAtB,IAAAA,IAAI,CAACwD,KAAL,CAAWK,GAAX,GAAkB,IAAG+O,OAAQ,EAA7B;AAEA,UAAMG,KAAK,GAAGtF,KAAK,CAACjN,gBAAN,CAAuB,aAAvB,CAAd;AAEAuS,IAAAA,KAAK,CAACtS,OAAN,CAAc,UAAUuS,IAAV,EAAgB;AAC5BA,MAAAA,IAAI,CAACjS,gBAAL,CAAsB,OAAtB,EAAgCC,KAAD,IAAW;AACxCA,QAAAA,KAAK,CAACwN,cAAN;AACAf,QAAAA,KAAK,CAACpM,SAAN,CAAgBmB,MAAhB,CAAuB,eAAvB;AAEA,cAAMxC,IAAI,GAAGO,QAAQ,CAACP,IAAtB;AACA,cAAM4S,OAAO,GAAG5S,IAAI,CAACwD,KAAL,CAAWK,GAA3B;AACA7D,QAAAA,IAAI,CAACwD,KAAL,CAAWsP,QAAX,GAAsB,EAAtB;AACA9S,QAAAA,IAAI,CAACwD,KAAL,CAAWK,GAAX,GAAiB,EAAjB;AACA7D,QAAAA,IAAI,CAACqB,SAAL,CAAemB,MAAf,CAAsB,aAAtB;AACAnD,QAAAA,MAAM,CAAC4T,QAAP,CAAgB,CAAhB,EAAmBC,QAAQ,CAACN,OAAO,IAAI,GAAZ,CAAR,GAA2B,CAAC,CAA/C;AACD,OAVD;AAWD,KAZD;AAcD,GA7BD;AA8BD,CA/BD;AAiCAvT,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC,MAAM;AACtC,MAAG,CAACR,QAAQ,CAACP,IAAT,CAAcqB,SAAd,CAAwB2J,QAAxB,CAAiC,aAAjC,CAAJ,EAAqD;AACnDzK,IAAAA,QAAQ,CAAC+E,eAAT,CAAyB9B,KAAzB,CAA+BsG,WAA/B,CAA2C,YAA3C,EAA0D,GAAEzK,MAAM,CAACuT,OAAQ,IAA3E;AACD;AACF,CAJD;;;;;;;;;;;;;;;ACnCA;AACA;;AAEA,MAAMQ,eAAe,GAAI9D,OAAD,IAAa;AACnC,SAAOA,OAAO,CAACV,WAAf;AACD,CAFD;;AAIA,MAAMyE,aAAa,GAAI/D,OAAD,IAAa;AACjC,QAAM/B,KAAK,GAAG+B,OAAO,CAAC9O,gBAAR,CAAyB,iBAAzB,CAAd;AACA,MAAImG,KAAK,GAAG,CAAZ;AACA4G,EAAAA,KAAK,CAAC9M,OAAN,CAAc8I,IAAI,IAAI;AACpB5C,IAAAA,KAAK,IAAI4C,IAAI,CAACqF,WAAd;AACD,GAFD;AAIA,SAAOjI,KAAP;AACD,CARD;;AAUA,MAAM2M,aAAa,GAAG,SAAhBA,aAAgB,CAAC9I,GAAD,EAAK8E,OAAL,EAA4B;AAAA,MAAfiE,IAAe,uEAAV,KAAU;AAEhD,QAAMlQ,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;AACA,QAAMqD,KAAK,GAAGyM,eAAe,CAAC5I,GAAD,CAA7B;AACA,QAAMgJ,UAAU,GAAGH,aAAa,CAAC7I,GAAD,CAAhC;AACA,QAAMiJ,SAAS,GAAGjJ,GAAG,CAAC9K,aAAJ,CAAkB,6BAAlB,CAAlB;AACA,QAAMgU,QAAQ,GAAGlJ,GAAG,CAAC9K,aAAJ,CAAkB,4BAAlB,CAAjB;AACA,QAAMiU,UAAU,GAAGrE,OAAO,CAAC5P,aAAR,CAAsB,yBAAtB,CAAnB;AACA,QAAMkU,WAAW,GAAGtE,OAAO,CAAC5P,aAAR,CAAsB,0BAAtB,CAApB;;AAEA,MAAIiH,KAAK,GAAG6M,UAAR,IAAsBnQ,EAAE,CAACE,OAAH,KAAe,IAAzC,EAA+C;AAE7C,QAAI,CAAC4P,+DAAY,CAACM,SAAD,CAAjB,EAA8B;AAC5BE,MAAAA,UAAU,CAACtR,eAAX,CAA2B,UAA3B;AACAsR,MAAAA,UAAU,CAACvS,YAAX,CAAwB,aAAxB,EAAsC,KAAtC;AACD,KAHD,MAGO;AACLuS,MAAAA,UAAU,CAACvS,YAAX,CAAwB,UAAxB,EAAmC,IAAnC;AACAuS,MAAAA,UAAU,CAACvS,YAAX,CAAwB,aAAxB,EAAsC,IAAtC;AACD;;AAED,QAAI,CAAC+R,+DAAY,CAACO,QAAD,CAAjB,EAA6B;AAC3BE,MAAAA,WAAW,CAACvR,eAAZ,CAA4B,UAA5B;AACAuR,MAAAA,WAAW,CAACxS,YAAZ,CAAyB,aAAzB,EAAuC,KAAvC;AACD,KAHD,MAGO;AACLwS,MAAAA,WAAW,CAACxS,YAAZ,CAAyB,UAAzB,EAAoC,IAApC;AACAwS,MAAAA,WAAW,CAACxS,YAAZ,CAAyB,aAAzB,EAAuC,IAAvC;AACD;AAEF,GAlBD,MAkBO;AACLuS,IAAAA,UAAU,CAACvS,YAAX,CAAwB,UAAxB,EAAmC,IAAnC;AACAwS,IAAAA,WAAW,CAACxS,YAAZ,CAAyB,UAAzB,EAAoC,IAApC;AACAuS,IAAAA,UAAU,CAACvS,YAAX,CAAwB,aAAxB,EAAsC,IAAtC;AACAwS,IAAAA,WAAW,CAACxS,YAAZ,CAAyB,aAAzB,EAAuC,IAAvC;AACD;;AAED,MAAGmS,IAAH,EAAS;AACPI,IAAAA,UAAU,CAACvS,YAAX,CAAwB,UAAxB,EAAmC,IAAnC;AACAuS,IAAAA,UAAU,CAACvS,YAAX,CAAwB,aAAxB,EAAsC,IAAtC;AACD;AAEF,CAxCD;;AA0CA,MAAMyS,WAAW,GAAG,MAAM;AAEtB,QAAMC,OAAO,GAAGvT,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,CAAhB;;AAEA,MAAIsT,OAAJ,EAAa;AAEXA,IAAAA,OAAO,CAACrT,OAAR,CAAgBsT,MAAM,IAAI;AAExB,YAAMvJ,GAAG,GAAGuJ,MAAM,CAACrU,aAAP,CAAqB,kBAArB,CAAZ;AACA,YAAM6N,KAAK,GAAGwG,MAAM,CAACvT,gBAAP,CAAwB,iBAAxB,CAAd;AACA,YAAMwT,OAAO,GAAGD,MAAM,CAACvT,gBAAP,CAAwB,mBAAxB,CAAhB;AACA,YAAMyT,UAAU,GAAG,GAAnB;AAEA,UAAIC,YAAY,GAAGd,eAAe,CAAC5I,GAAD,CAAlC;AACAnL,MAAAA,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC,MAAM;AAChDuR,QAAAA,YAAY,GAAGd,eAAe,CAAC5I,GAAD,CAA9B;AACD,OAF0C,EAExC,GAFwC,CAA3C;AAIA,UAAIgJ,UAAU,GAAGH,aAAa,CAAC7I,GAAD,CAA9B;AACAnL,MAAAA,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC,MAAM;AAChD6Q,QAAAA,UAAU,GAAGH,aAAa,CAAC7I,GAAD,CAA1B;AACD,OAF0C,EAExC,GAFwC,CAA3C;AAKAkH,MAAAA,UAAU,CAAC,MAAM;AACf4B,QAAAA,aAAa,CAAC9I,GAAD,EAAKuJ,MAAL,EAAY,IAAZ,CAAb;AACD,OAFS,EAER,GAFQ,CAAV;AAGA1U,MAAAA,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC,MAAM;AAChD2Q,QAAAA,aAAa,CAAC9I,GAAD,EAAKuJ,MAAL,CAAb;AACD,OAF0C,EAExC,GAFwC,CAA3C;AAIAC,MAAAA,OAAO,CAACvT,OAAR,CAAgB0T,MAAM,IAAI;AACxBA,QAAAA,MAAM,CAACpT,gBAAP,CAAwB,OAAxB,EAAgC,MAAM;AACpC,cAAGoT,MAAM,CAAC9S,SAAP,CAAiB2J,QAAjB,CAA0B,wBAA1B,CAAH,EAAwD;AACpDR,YAAAA,GAAG,CAAC4J,MAAJ,CAAW5J,GAAG,CAAC6J,UAAJ,GAAiBJ,UAA5B,EAAuC,CAAvC;AACH,WAFD,MAEO;AACLzJ,YAAAA,GAAG,CAAC4J,MAAJ,CAAW5J,GAAG,CAAC6J,UAAJ,GAAiBJ,UAA5B,EAAuC,CAAvC;AACD;AACF,SAND;AAOD,OARD;AAUA1G,MAAAA,KAAK,CAAC9M,OAAN,CAAc8I,IAAI,IAAI;AACpB,cAAMnC,OAAO,GAAG;AACdkN,UAAAA,IAAI,EAAEP,MADQ;AAEd/H,UAAAA,UAAU,EAAE,KAFE;AAGdC,UAAAA,SAAS,EAAE;AAHG,SAAhB;AAKA,cAAMF,QAAQ,GAAG,IAAIwI,oBAAJ,CAAyBC,gBAAzB,EAA2CpN,OAA3C,CAAjB;AACA2E,QAAAA,QAAQ,CAACS,OAAT,CAAiBjD,IAAjB;AACD,OARD;;AAUA,eAASiL,gBAAT,CAA0BC,OAA1B,EAAmC1I,QAAnC,EAA6C;AAC3CuH,QAAAA,aAAa,CAAC9I,GAAD,EAAKuJ,MAAL,CAAb;AACD,OA/CuB,CAiDxB;;;AAEArC,MAAAA,UAAU,CAAC,MAAM;AACfrS,QAAAA,MAAM,CAAC6B,aAAP,CAAqB,IAAID,KAAJ,CAAU,QAAV,CAArB;AACD,OAFS,EAER,IAFQ,CAAV;AAID,KAvDD;AAwDD;AACJ,CA/DD;;AAiEA5B,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4C8S,WAA5C,EAAyD;AAAEvP,EAAAA,IAAI,EAAE;AAAR,CAAzD;;;;;;;;;;;;;;AC5HA;AAEA;;AAEA,MAAMqQ,YAAY,GAAG,MAAM;AAEzB,QAAMC,SAAS,GAAGrU,QAAQ,CAACC,gBAAT,CAA0B,qBAA1B,CAAlB;;AACA,MAAGoU,SAAH,EAAc;AACZA,IAAAA,SAAS,CAACnU,OAAV,CAAmB2C,GAAD,IAAS;AAEzB,UAAIgE,OAAO,GAAG;AACZyN,QAAAA,aAAa,EAAE,IADH;AAEZC,QAAAA,cAAc,EAAE;AAFJ,OAAd;;AAKA,UAAG1R,GAAG,CAAC/B,SAAJ,CAAc2J,QAAd,CAAuB,cAAvB,CAAH,EAA2C;AACzC5D,QAAAA,OAAO,CAAC8C,SAAR,GAAoB,IAApB;;AACA9C,QAAAA,OAAO,CAAC2N,yBAAR,GAAoC,UAASC,OAAT,EAAkB;AACpD,gBAAMC,UAAU,GAAG,KAAKC,MAAL,CAAYD,UAA/B;AACA,gBAAMH,cAAc,GAAG,KAAKI,MAAL,CAAYJ,cAAnC;AACA,iBAAO;AACLvL,YAAAA,IAAI,EAAE,oBAAyB5H,IAAzB,EAA+B;AAAA,kBAAtB;AAAEsT,gBAAAA;AAAF,eAAsB;AACnC,qBAAOD,OAAO,CACZ,iBAAiBG,MAAM,CAACF,UAAU,CAAC1L,IAAZ,CAAvB,GAA2C,GAA3C,GAAiD4L,MAAM,CAACxT,IAAI,CAACyT,WAAL,GAAmBH,UAAU,CAACI,gBAA9B,GAAgDJ,UAAU,CAACK,cAA5D,CAAvD,GAAqI,uBAArI,GAA+JH,MAAM,CAACxT,IAAI,CAAC4T,EAAN,CAArK,GAAgL,gBAAhL,GAAmMJ,MAAM,CAACxT,IAAI,CAAChC,KAAN,CAAzM,GAAuN,GAAvN,GAA6NwV,MAAM,CAACxT,IAAI,CAAC6T,MAAL,GAAc,sBAAd,GAAuC,EAAxC,CAAnO,GAAiR,EAAjR,GAAsRL,MAAM,CAACxT,IAAI,CAAC8T,QAAL,GAAgB,sBAAhB,GAAyC,EAA1C,CAA5R,GAA4U,sEAA5U,GAAoZrW,IAAI,CAACsW,MAAzZ,GAAka,eAAla,GAAob/T,IAAI,CAAChC,KAAzb,GAAic,iBAAjc,GAAqdwV,MAAM,CAACxT,IAAI,CAACiF,KAAN,CAA3d,GAA0e,QAD9d,CAAd;AAGD,aALI;AAML+O,YAAAA,MAAM,EAAE,uBAAyBhU,IAAzB,EAA+B;AAAA,kBAAtB;AAAEsT,gBAAAA;AAAF,eAAsB;AACrC,qBAAOD,OAAO,CACZ,iBAAiBG,MAAM,CAACF,UAAU,CAAC1L,IAAZ,CAAvB,GAA2C,GAA3C,GAAiD4L,MAAM,CAACF,UAAU,CAACW,UAAZ,CAAvD,GAAiF,GAAjF,GAAuFT,MAAM,CAAExT,IAAI,CAAC8T,QAAL,GAAgBR,UAAU,CAACY,YAA3B,GAA0CZ,UAAU,CAACK,cAAvD,CAA7F,GAAuK,sBAAvK,GAAgMH,MAAM,CAACL,cAAD,CAAtM,GAAyN,gBAAzN,GAA4OK,MAAM,CAACxT,IAAI,CAAC8T,QAAL,GAAgB,2CAAhB,GAA8D,wBAA/D,CAAlP,GAA6U,YAA7U,GAA4VN,MAAM,CAACxT,IAAI,CAAC4T,EAAN,CAAlW,GAA6W,gBAA7W,GAAgYJ,MAAM,CAACxT,IAAI,CAAChC,KAAN,CAAtY,GAAqZ,IAArZ,GAA4ZwV,MAAM,CAACxT,IAAI,CAACmU,OAAL,GAAe,CAAf,GAAmB,iBAAnB,GAAuC,eAAxC,CAAla,GAA6d,sEAA7d,GAAqiB1W,IAAI,CAACsW,MAA1iB,GAAmjB,eAAnjB,GAAqkB/T,IAAI,CAAChC,KAA1kB,GAAklB,iBAAllB,GAAsmBwV,MAAM,CAACxT,IAAI,CAACiF,KAAN,CAA5mB,GAA2nB,SAD/mB,CAAd;AAGD;AAVI,WAAP;AAYD,SAfD;AAgBD;;AAED,YAAM+O,MAAM,GAAI,IAAIjB,mDAAJ,CAAYtR,GAAZ,EAAgBgE,OAAhB,CAAhB;AAEAhE,MAAAA,GAAG,CAACrC,gBAAJ,CACE,QADF,EAEE,UAASC,KAAT,EAAgB;AACd0Q,QAAAA,UAAU,CAAC,MAAM;AACfiD,UAAAA,YAAY;AACb,SAFS,EAER,GAFQ,CAAV;AAGD,OANH,EAOE,KAPF;AAUD,KAvCD;AAwCD;AACF,CA7CD;;AAgDAoB,MAAM,CAAExV,QAAF,CAAN,CAAmB8F,EAAnB,CAAuB,aAAvB,EAAqCsO,YAArC;AACAoB,MAAM,CAAExV,QAAF,CAAN,CAAmB8F,EAAnB,CAAuB,sBAAvB,EAA8CsO,YAA9C;AACAtV,MAAM,CAACsV,YAAP,GAAsBA,YAAtB;;;;;;;;;;;;;;;;ACtDA;AACA;AACAlS,+DAAA,CAAoBC,kEAApB;AAEA,MAAMW,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;;AAEA,MAAM0S,qBAAqB,GAAG,MAAM;AAClC,QAAMC,aAAa,GAAG1V,QAAQ,CAACC,gBAAT,CAA0B,2BAA1B,CAAtB;;AACA,MAAGyV,aAAH,EAAkB;AAChBA,IAAAA,aAAa,CAACxV,OAAd,CAAsByV,YAAY,IAAI;AAEpC,YAAMC,MAAM,GAAGD,YAAY,CAAC1V,gBAAb,CAA8B,0BAA9B,CAAf;;AACA,UAAG2V,MAAH,EAAW;AACTA,QAAAA,MAAM,CAAC1V,OAAP,CAAe,CAAC2V,KAAD,EAAO5M,KAAP,KAAiB;AAE9B,cAAI6M,eAAJ;;AACA,cAAG7M,KAAK,KAAK,CAAb,EAAgB;AACd,gBAAGnG,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8S,cAAAA,eAAe,GAAG,mBAAlB;AACD,aAFD,MAEO;AACLA,cAAAA,eAAe,GAAG,gCAAlB;AACD;AACF,WAND,MAMO,IAAG7M,KAAK,KAAK,CAAb,EAAgB;AACrB,gBAAGnG,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8S,cAAAA,eAAe,GAAG,uBAAlB;AACD,aAFD,MAEO;AACLA,cAAAA,eAAe,GAAG,kCAAlB;AACD;AACF,WANM,MAMA,IAAG7M,KAAK,KAAK,CAAb,EAAgB;AACrB,gBAAGnG,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8S,cAAAA,eAAe,GAAG,sBAAlB;AACD,aAFD,MAEO;AACLA,cAAAA,eAAe,GAAG,iCAAlB;AACD;AACF;;AAED5T,UAAAA,mDAAA,CAAQ2T,KAAR,EAAe;AACbxS,YAAAA,IAAI,EAAE,QADO;AAEb0S,YAAAA,SAAS,EAAED,eAFE;AAGbvS,YAAAA,aAAa,EAAE;AACbC,cAAAA,OAAO,EAAEmS,YADI;AAEbhS,cAAAA,GAAG,EAAE,KAFQ;AAGbC,cAAAA,KAAK,EAAE,IAHM;AAIbH,cAAAA,KAAK,EAAE,WAJM;AAKbC,cAAAA,GAAG,EAAE,eALQ;AAMbI,cAAAA,mBAAmB,EAAE,IANR;AAObD,cAAAA,OAAO,EAAE;AAPI;AAHF,WAAf;AAcD,SArCD;AAsCD;AACF,KA3CD;AA6CD;AACF,CAjDD;;AAmDA/E,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4CiV,qBAA5C;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,MAAMO,UAAN,CAAiB;AACb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,EAAAA,WAAW,CAAChO,MAAD,EAAS;AAChB,SAAKA,MAAL,GAAcA,MAAd;AACA,SAAKiO,UAAL,GAAkBjO,MAAM,CAAC9I,aAAP,CAAqB,MAArB,CAAlB;AACA,SAAKgX,SAAL,GAAiBlO,MAAM,CAAC1H,OAAP,CAAe,kCAAf,CAAjB;AACA,SAAK6V,QAAL,GAAgBnO,MAAM,CAAC7C,SAAvB;AACA,SAAKiR,QAAL,GAAgBpO,MAAM,CAACsC,YAAP,CAAoB,kCAApB,CAAhB;AAEA,SAAKtC,MAAL,CAAYnH,SAAZ,CAAsBC,GAAtB,CAA0B,SAA1B;AACA,SAAKkH,MAAL,CAAYzH,gBAAZ,CAA6B,OAA7B,EAAsC,KAAK8V,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAAtC;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;AACID,EAAAA,YAAY,CAACxI,CAAD,EAAI;AACZA,IAAAA,CAAC,CAACG,cAAF;AACA,SAAKiI,UAAL,CAAgB9Q,SAAhB,GAA4B,KAAK+Q,SAAL,CAAerV,SAAf,CAAyBmH,MAAzB,CAAgC,cAAhC,IAAkD,KAAKmO,QAAvD,GAAkE,KAAKC,QAAnG;AACH;;AA7BY;;AAgCjB,MAAMG,SAAN,CAAgB;AACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEP,EAAAA,WAAW,CAACQ,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKN,SAAL,GAAiBM,KAAK,CAAClW,OAAN,CAAc,0BAAd,CAAjB;AAEA,SAAKkW,KAAL,CAAW3V,SAAX,CAAqBC,GAArB,CAAyB,SAAzB;AACA,SAAK0V,KAAL,CAAWjW,gBAAX,CAA4B,OAA5B,EAAqC,KAAK8V,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAArC;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACED,EAAAA,YAAY,CAACxI,CAAD,EAAI;AACdA,IAAAA,CAAC,CAACG,cAAF;AACA,SAAKkI,SAAL,CAAerV,SAAf,CAAyBmH,MAAzB,CAAgC,eAAhC;AACD;;AA1Ba;AA6BhB;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMyO,cAAc,GAAG,MAAM;AACzB,QAAMC,OAAO,GAAG3W,QAAQ,CAACC,gBAAT,CAA0B,kDAA1B,CAAhB;AACA0W,EAAAA,OAAO,CAACzW,OAAR,CAAgB+H,MAAM,IAAI,IAAI+N,UAAJ,CAAe/N,MAAf,CAA1B;AACH,CAHD;;AAKA,MAAM2O,aAAa,GAAG,MAAM;AAC1B,QAAMC,MAAM,GAAG7W,QAAQ,CAACC,gBAAT,CAA0B,iDAA1B,CAAf;AACA4W,EAAAA,MAAM,CAAC3W,OAAP,CAAeuW,KAAK,IAAI,IAAID,SAAJ,CAAcC,KAAd,CAAxB;AACD,CAHD;;AAKA3X,MAAM,CAAC0H,eAAP,IAA0BA,eAAe,CAACV,EAAhB,CAAmB,MAAnB,EAA2B,UAAUW,IAAV,EAAgB;AACjEA,EAAAA,IAAI,CAACC,MAAL,CAAYZ,EAAZ,CAAe,UAAf,EAA2B4Q,cAA3B;AACAjQ,EAAAA,IAAI,CAACC,MAAL,CAAYZ,EAAZ,CAAe,UAAf,EAA2B8Q,aAA3B;AACH,CAHyB,CAA1B;AAIA5W,QAAQ,CAACQ,gBAAT,CAA0B,kBAA1B,EAA8CkW,cAA9C,EAA8D;AAAC3S,EAAAA,IAAI,EAAE;AAAP,CAA9D;AACA/D,QAAQ,CAACQ,gBAAT,CAA0B,kBAA1B,EAA8CoW,aAA9C,EAA6D;AAAC7S,EAAAA,IAAI,EAAE;AAAP,CAA7D;;;;;;;;;;;;;;ACtFA;;AAEA,MAAM8P,MAAM,GAAG,MAAM;AACnB,MAAI7M,sDAAJ,CAAiB,2BAAjB,EAA8C;AAC5C8P,IAAAA,KAAK,EAAE,GADqC;AAE5CC,IAAAA,SAAS,EAAE,IAFiC;AAG5CC,IAAAA,IAAI,EAAE,IAHsC;AAI5CC,IAAAA,QAAQ,EAAE,IAJkC;AAK5ClP,IAAAA,MAAM,EAAE,gBAAUC,MAAV,EAAkBC,MAAlB,EAA0B;AAChC,YAAMC,MAAM,GAAGlI,QAAQ,CAACb,aAAT,CAAuB,gCAAvB,CAAf;;AACA,UAAG+I,MAAH,EAAW;AACT,eAAOA,MAAM,CAAC/E,YAAd;AACD,OAFD,MAEO;AACL;AACD;AACF;AAZ2C,GAA9C;AAcD,CAfD;;AAiBA0Q,MAAM;;;;;;;;;;ACnBN,MAAMqD,YAAY,GAAG,MAAM;AACzB,QAAMC,aAAa,GAAGnX,QAAQ,CAACb,aAAT,CAAuB,qBAAvB,CAAtB;AACA,QAAMiY,cAAc,GAAGpX,QAAQ,CAACb,aAAT,CAAuB,sBAAvB,CAAvB;AAEAgY,EAAAA,aAAa,CAAC3W,gBAAd,CAA+B,OAA/B,EAAwCsN,CAAD,IAAO;AAC5CA,IAAAA,CAAC,CAACG,cAAF;AACAjO,IAAAA,QAAQ,CAAC+E,eAAT,CAAyBjE,SAAzB,CAAmCC,GAAnC,CAAuC,mBAAvC;AACD,GAHD;AAKAqW,EAAAA,cAAc,CAAC5W,gBAAf,CAAgC,OAAhC,EAAyCsN,CAAD,IAAO;AAC7CA,IAAAA,CAAC,CAACG,cAAF;AACAjO,IAAAA,QAAQ,CAAC+E,eAAT,CAAyBjE,SAAzB,CAAmCmB,MAAnC,CAA0C,mBAA1C;AACD,GAHD;AAID,CAbD;;AAeAiV,YAAY;;;;;;;;;;;;;;;;;ACfZ;;AAEA,MAAMxY,eAAe,GAAG,SAAlBA,eAAkB,GAAoB;AAAA,MAAnBqQ,OAAmB,uEAAT,IAAS;AAC1C,MAAI3O,OAAJ;;AAEA,MAAG2O,OAAH,EAAY;AACV3O,IAAAA,OAAO,GAAG2O,OAAO,CAAC9O,gBAAR,CAAyB,QAAzB,CAAV;AACD,GAFD,MAEO;AACLG,IAAAA,OAAO,GAAGJ,QAAQ,CAACC,gBAAT,CAA0B,QAA1B,CAAV;AACD;;AAED,MAAGG,OAAH,EAAW;AACTA,IAAAA,OAAO,CAACF,OAAR,CAAgBG,MAAM,IAAI;AAExBA,MAAAA,MAAM,CAACG,gBAAP,CAAwB,QAAxB,EAAmCC,KAAD,IAAW;AAC3C,YAAI4W,UAAU,GAAGrX,QAAQ,CAACqE,aAAT,CAAuB,QAAvB,CAAjB;AAAA,YACEiT,UAAU,GAAGtX,QAAQ,CAACqE,aAAT,CAAuB,QAAvB,CADf;AAGAiT,QAAAA,UAAU,CAACC,WAAX,GAAyB9W,KAAK,CAACkI,MAAN,CAAa9B,OAAb,CAAqBpG,KAAK,CAACkI,MAAN,CAAa6O,aAAlC,EAAiDC,IAA1E;AACAJ,QAAAA,UAAU,CAACpU,KAAX,CAAiByU,OAAjB,IAA6B,sCAA7B;AACAL,QAAAA,UAAU,CAAC9S,WAAX,CAAuB+S,UAAvB;AACA7W,QAAAA,KAAK,CAACkI,MAAN,CAAagP,KAAb,CAAmBN,UAAnB;AAEA,YAAIO,eAAe,GAAGP,UAAU,CAACQ,qBAAX,GAAmCzR,KAAzD;AAEAwR,QAAAA,eAAe,IAAIlH,UAAU,CAAC5R,MAAM,CAACgZ,gBAAP,CAAwBzX,MAAxB,EAAgC,IAAhC,EAAsCiS,gBAAtC,CAAuD,cAAvD,CAAD,CAA7B;AACAsF,QAAAA,eAAe,IAAIlH,UAAU,CAAC5R,MAAM,CAACgZ,gBAAP,CAAwBzX,MAAxB,EAAgC,IAAhC,EAAsCiS,gBAAtC,CAAuD,eAAvD,CAAD,CAA7B;AAGA7R,QAAAA,KAAK,CAACkI,MAAN,CAAa1F,KAAb,CAAmBmD,KAAnB,GAA4B,GAAEwR,eAAgB,IAA9C;AACAP,QAAAA,UAAU,CAACpV,MAAX;AACD,OAjBD;AAmBA5B,MAAAA,MAAM,CAACM,aAAP,CAAqB,IAAID,KAAJ,CAAU,QAAV,CAArB;AAED,KAvBD;AAwBD;AACF,CAnCD;;AAqCA,MAAMqX,aAAa,GAAG,MAAM;AAC1B,QAAM3X,OAAO,GAAGJ,QAAQ,CAACC,gBAAT,CAA0B,YAA1B,CAAhB;;AACA,MAAGG,OAAH,EAAY;AACVA,IAAAA,OAAO,CAACF,OAAR,CAAiB2C,GAAD,IAAS;AACvB,YAAMuS,MAAM,GAAI,IAAIjB,mDAAJ,CAAYtR,GAAZ,EAAgB;AAC9ByR,QAAAA,aAAa,EAAE,KADe;AAE9BC,QAAAA,cAAc,EAAE;AAFc,OAAhB,CAAhB;AAKD,KAND;AAOD;AACF,CAXD;;AAaAwD,aAAa;AAEb,iEAAerZ,eAAf;;;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AAEA,MAAM8Z,cAAc,GAAGxY,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,CAAvB;;AAEA,IAAIuY,cAAJ,EAAoB;AAClBA,EAAAA,cAAc,CAACtY,OAAf,CAAuBuY,QAAQ,IAAI;AACjC,QAAIC,MAAJ;AACA,QAAIC,WAAW,GAAG;AAChB3F,MAAAA,IAAI,EAAE,KADU;AAEhB4F,MAAAA,OAAO,EAAE,CAACX,8CAAD,EAAaC,6CAAb,EAAwBC,8CAAxB,EAAoCC,8CAApC,EAAgDC,4CAAhD,EAA0DC,8CAA1D,CAFO;AAGhBO,MAAAA,SAAS,EAAE;AACT5N,QAAAA,EAAE,EAAEwN,QAAQ,CAACtZ,aAAT,CAAuB,sBAAvB,CADK;AAET2Z,QAAAA,SAAS,EAAE;AAFF,OAHK;AAOhBC,MAAAA,UAAU,EAAE;AACV9N,QAAAA,EAAE,EAAEwN,QAAQ,CAACtZ,aAAT,CAAuB,uBAAvB,CADM;AAEVmF,QAAAA,IAAI,EAAE,SAFI;AAGV0U,QAAAA,cAAc,EAAE,IAHN;AAIVC,QAAAA,kBAAkB,EAAE,CAJV;AAKVC,QAAAA,SAAS,EAAE;AALD,OAPI;AAchBC,MAAAA,UAAU,EAAE;AACVC,QAAAA,MAAM,EAAEX,QAAQ,CAACtZ,aAAT,CAAuB,yBAAvB,CADE;AAEVka,QAAAA,MAAM,EAAEZ,QAAQ,CAACtZ,aAAT,CAAuB,yBAAvB;AAFE;AAdI,KAAlB;AAmBA,UAAM;AAAEma,MAAAA;AAAF,QAAqBb,QAAQ,CAACnR,OAApC;AACA,QAAIiS,kBAAkB,GAAG,EAAzB;;AAEA,QAAID,cAAJ,EAAoB;AAClBC,MAAAA,kBAAkB,GAAGC,IAAI,CAACC,KAAL,CAAWH,cAAX,CAArB;AACD;;AAED,UAAMI,YAAY,GAAG,MAAM;AACzBhB,MAAAA,MAAM,GAAG,IAAIV,8CAAJ,CAAWS,QAAQ,CAACtZ,aAAT,CAAuB,sBAAvB,CAAX,kCAAgEwZ,WAAhE,GAAgFY,kBAAhF,EAAT;;AAEA,UAAId,QAAQ,CAAC3X,SAAT,CAAmB2J,QAAnB,CAA4B,4BAA5B,CAAJ,EAA+D;AAC7DiO,QAAAA,MAAM,CAACiB,MAAP,CAAcZ,UAAd,CAAyBC,cAAzB,GAA0C,KAA1C;AACD;;AAEDN,MAAAA,MAAM,CAAC5S,EAAP,CAAU,aAAV,EAA0B8T,CAAD,IAAO;AAC9BzI,QAAAA,UAAU,CAAC,YAAY;AACrBuH,UAAAA,MAAM,CAACiB,MAAP,CAAcE,UAAd,CAAyBC,cAAzB,GAA0C,KAA1C;AACD,SAFS,EAEP,GAFO,CAAV;AAGD,OAJD;AAMApB,MAAAA,MAAM,CAAC5S,EAAP,CAAU,yBAAV,EAAqC8T,CAAD,IAAO;AACzCzI,QAAAA,UAAU,CAAC,YAAY;AACrBuH,UAAAA,MAAM,CAACiB,MAAP,CAAcE,UAAd,CAAyBC,cAAzB,GAA0C,IAA1C;AACD,SAFS,EAEP,GAFO,CAAV;AAID,OALD;;AAOA,UAAIrB,QAAQ,CAAC3X,SAAT,CAAmB2J,QAAnB,CAA4B,mBAA5B,CAAJ,EAAsD;AACpD;AACAiO,QAAAA,MAAM,CAAC5S,EAAP,CAAU,kBAAV,EAA+B8T,CAAD,IAAO;AACnC,cAAIG,aAAa,GAAGH,CAAC,CAACI,YAAF,CAAeD,aAAnC;;AAEA,cAAIE,MAAM,CAACC,IAAP,CAAYN,CAAC,CAACI,YAAF,CAAeG,WAA3B,EAAwC9S,QAAxC,CAAiDuS,CAAC,CAACQ,iBAAnD,CAAJ,EAA2E;AACzEL,YAAAA,aAAa,GAAGH,CAAC,CAACI,YAAF,CAAeG,WAAf,CAA2BP,CAAC,CAACQ,iBAA7B,EAAgDL,aAAhE;AACD;;AAED,gBAAMM,qBAAqB,GAAGrP,KAAK,CAACL,IAAN,CAAWiP,CAAC,CAACU,MAAb,EAAqBC,KAArB,CAA2BX,CAAC,CAACY,SAA7B,EAAwCZ,CAAC,CAACY,SAAF,GAAcT,aAAtD,CAA9B;AACA,gBAAMU,UAAU,GAAGzP,KAAK,CAACL,IAAN,CAAWiP,CAAC,CAACU,MAAb,EAAqBI,MAArB,CAA4BC,KAAK,IAAI,CAACN,qBAAqB,CAAChT,QAAtB,CAA+BsT,KAA/B,CAAtC,CAAnB;AACA,gBAAMC,WAAW,GAAG5P,KAAK,CAACL,IAAN,CAAWiP,CAAC,CAACU,MAAb,EAAqBI,MAArB,CAA4B,CAACC,KAAD,EAAO1R,KAAP,KAAiBA,KAAK,GAAG2Q,CAAC,CAACiB,WAAvD,CAApB;AAGAR,UAAAA,qBAAqB,CAACna,OAAtB,CAA8B4a,OAAO,IAAIA,OAAO,CAACha,SAAR,CAAkBC,GAAlB,CAAsB,CAAC,yBAAD,CAAtB,CAAzC;AACAsZ,UAAAA,qBAAqB,CAACna,OAAtB,CAA8B4a,OAAO,IAAIA,OAAO,CAACha,SAAR,CAAkBmB,MAAlB,CAAyB,CAAC,wBAAD,CAAzB,CAAzC;AACAwY,UAAAA,UAAU,CAACva,OAAX,CAAmB4a,OAAO,IAAIA,OAAO,CAACha,SAAR,CAAkBmB,MAAlB,CAAyB,yBAAzB,CAA9B;AACA2Y,UAAAA,WAAW,CAAC1a,OAAZ,CAAoB4a,OAAO,IAAIA,OAAO,CAACha,SAAR,CAAkBC,GAAlB,CAAsB,wBAAtB,CAA/B;AACD,SAhBD;AAiBD;AACF,KAxCD;;AA0CA,UAAMga,iBAAiB,GAAG,MAAM;AAE9B,YAAMC,KAAK,GAAGvC,QAAQ,CAACnR,OAAT,CAAiBoR,MAA/B;;AACA,UAAGsC,KAAH,EAAU;AACR,cAAMC,MAAM,GAAGjb,QAAQ,CAACb,aAAT,CAAuB,uBAAqB6b,KAArB,GAA2B,IAAlD,CAAf;AACA,cAAME,KAAK,GAAGD,MAAM,CAAChb,gBAAP,CAAwB,GAAxB,CAAd;;AAEA,YAAGib,KAAH,EAAU;AAERxC,UAAAA,MAAM,CAAC5S,EAAP,CAAU,kBAAV,EAA+B8T,CAAD,IAAO;AACnC,kBAAMuB,OAAO,GAAGF,MAAM,CAAC9b,aAAP,CAAqB,kCAArB,CAAhB;;AACA,gBAAGgc,OAAH,EAAY;AACVA,cAAAA,OAAO,CAACra,SAAR,CAAkBmB,MAAlB,CAAyB,WAAzB;AACD;;AAEDgZ,YAAAA,MAAM,CAAC9b,aAAP,CAAqB,uCAAqCya,CAAC,CAACiB,WAAF,GAAgB,CAArD,IAAwD,GAA7E,EAAkF/Z,SAAlF,CAA4FC,GAA5F,CAAgG,WAAhG;AAGD,WATD;AAWAma,UAAAA,KAAK,CAAChb,OAAN,CAAc,CAACC,IAAD,EAAM8I,KAAN,KAAgB;AAC5B9I,YAAAA,IAAI,CAACK,gBAAL,CAAsB,OAAtB,EAA+BsN,CAAD,IAAO;AACnCA,cAAAA,CAAC,CAACG,cAAF;AACAyK,cAAAA,MAAM,CAAC0C,OAAP,CAAenS,KAAf;AACD,aAHD;AAID,WALD;AAMD;AACF;AACF,KA5BD;;AA8BA,UAAMoS,kBAAkB,GAAG,MAAM;AAC/B,YAAMvY,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;;AAEA,UAAID,EAAE,CAACE,OAAH,KAAe,IAAnB,EAAyB;AACvB,YAAI0V,MAAM,KAAK3I,SAAf,EAA0B;AACxB2I,UAAAA,MAAM,CAAC4C,OAAP,CAAe,IAAf,EAAqB,IAArB;AACD;;AACD7C,QAAAA,QAAQ,CAAC3X,SAAT,CAAmBC,GAAnB,CAAuB,mBAAvB;AACD,OALD,MAKO,IAAI+B,EAAE,CAACE,OAAH,KAAe,KAAnB,EAA0B;AAC/B0W,QAAAA,YAAY;AACZhB,QAAAA,MAAM,CAAC1F,IAAP;AACA+H,QAAAA,iBAAiB;AACjBtC,QAAAA,QAAQ,CAAC3X,SAAT,CAAmBmB,MAAnB,CAA0B,mBAA1B;AACD;AACF,KAdD;;AAgBA,QAAIsX,kBAAkB,CAAC,YAAD,CAAlB,KAAqC,IAAzC,EAA+C;AAC7C8B,MAAAA,kBAAkB;AAElBvc,MAAAA,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAACiZ,kBAAD,EAAqB,GAArB,CAA3C;AACD,KAJD,MAIO;AACL3B,MAAAA,YAAY;AACZhB,MAAAA,MAAM,CAAC1F,IAAP;AACA+H,MAAAA,iBAAiB;AAClB;AACF,GA7HD;AA8HD;;;;;;;;;;;;;;;;;;ACrID;AACA;AACA;AACA7Y,+DAAA,CAAoBC,kEAApB;AAEA,MAAMW,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;;AAEA,MAAMwY,cAAc,GAAG,MAAM;AAC3B,QAAMC,GAAG,GAAGxb,QAAQ,CAACC,gBAAT,CAA0B,mDAA1B,CAAZ;;AACA,MAAGub,GAAH,EAAQ;AACNA,IAAAA,GAAG,CAACtb,OAAJ,CAAYub,EAAE,IAAI;AAEhB,YAAMnT,GAAG,GAAGmT,EAAE,CAACtc,aAAH,CAAiB,iBAAjB,CAAZ;;AACA,UAAGmJ,GAAH,EAAQ;AAEN,cAAMoT,OAAO,GAAGpT,GAAG,CAACnJ,aAAJ,CAAkB,gBAAlB,CAAhB;AACA,cAAMwc,WAAW,GAAGrT,GAAG,CAACnJ,aAAJ,CAAkB,oBAAlB,CAApB;AACA,cAAMyc,OAAO,GAAGtT,GAAG,CAACnJ,aAAJ,CAAkB,gBAAlB,CAAhB;AAEA+C,QAAAA,mDAAA,CAAQwZ,OAAR,EAAiB;AACfzM,UAAAA,CAAC,EAAEwM,EAAE,CAAC3a,SAAH,CAAa2J,QAAb,CAAsB,wBAAtB,IAAmD3H,EAAE,CAACE,OAAH,KAAe,IAAhB,GAAwB,CAAC,GAAzB,GAA+B,CAAjF,GAAqF,CADzE;AAEfO,UAAAA,aAAa,EAAE;AACbC,YAAAA,OAAO,EAAEiY,EADI;AAEb9X,YAAAA,GAAG,EAAE,KAFQ;AAGbC,YAAAA,KAAK,EAAE,CAHM;AAIbH,YAAAA,KAAK,EAAE,YAJM;AAKbC,YAAAA,GAAG,EAAE,cALQ;AAMbI,YAAAA,mBAAmB,EAAE,IANR;AAObD,YAAAA,OAAO,EAAE;AAPI;AAFA,SAAjB;AAaA3B,QAAAA,mDAAA,CAAQwZ,OAAR,EAAiB;AACfG,UAAAA,OAAO,EAAE,IADM;AAEftY,UAAAA,aAAa,EAAE;AACbC,YAAAA,OAAO,EAAEiY,EADI;AAEb9X,YAAAA,GAAG,EAAE,KAFQ;AAGbC,YAAAA,KAAK,EAAE,CAHM;AAIbH,YAAAA,KAAK,EAAE,WAJM;AAKbC,YAAAA,GAAG,EAAE,cALQ;AAMbI,YAAAA,mBAAmB,EAAE,IANR;AAObD,YAAAA,OAAO,EAAE;AAPI;AAFA,SAAjB;AAaA3B,QAAAA,mDAAA,CAAQyZ,WAAR,EAAqB;AACnB1M,UAAAA,CAAC,EAAEwM,EAAE,CAAC3a,SAAH,CAAa2J,QAAb,CAAsB,wBAAtB,IAAmD3H,EAAE,CAACE,OAAH,KAAe,IAAhB,GAAwB,CAAC,GAAzB,GAA+B,CAAjF,GAAqF,CADrE;AAEnBO,UAAAA,aAAa,EAAE;AACbC,YAAAA,OAAO,EAAEiY,EADI;AAEb9X,YAAAA,GAAG,EAAE,KAFQ;AAGbC,YAAAA,KAAK,EAAE,CAHM;AAIbH,YAAAA,KAAK,EAAE,YAJM;AAKbC,YAAAA,GAAG,EAAE,cALQ;AAMbI,YAAAA,mBAAmB,EAAE,IANR;AAObD,YAAAA,OAAO,EAAE;AAPI;AAFI,SAArB;AAYA3B,QAAAA,mDAAA,CAAQyZ,WAAR,EAAqB;AACnBE,UAAAA,OAAO,EAAE,IADU;AAEnBtY,UAAAA,aAAa,EAAE;AACbC,YAAAA,OAAO,EAAEiY,EADI;AAEb9X,YAAAA,GAAG,EAAE,KAFQ;AAGbC,YAAAA,KAAK,EAAE,CAHM;AAIbH,YAAAA,KAAK,EAAE,WAJM;AAKbC,YAAAA,GAAG,EAAE,cALQ;AAMbI,YAAAA,mBAAmB,EAAE,IANR;AAObD,YAAAA,OAAO,EAAE;AAPI;AAFI,SAArB;AAaA3B,QAAAA,mDAAA,CAAQ0Z,OAAR,EAAiB;AACf3M,UAAAA,CAAC,EAAEwM,EAAE,CAAC3a,SAAH,CAAa2J,QAAb,CAAsB,wBAAtB,IAAmD3H,EAAE,CAACE,OAAH,KAAe,IAAhB,GAAwB,CAAC,EAAzB,GAA8B,CAAhF,GAAoF,CADxE;AAEfO,UAAAA,aAAa,EAAE;AACbC,YAAAA,OAAO,EAAEiY,EADI;AAEb9X,YAAAA,GAAG,EAAE,KAFQ;AAGbC,YAAAA,KAAK,EAAE,CAHM;AAIbH,YAAAA,KAAK,EAAE,YAJM;AAKbC,YAAAA,GAAG,EAAE,cALQ;AAMbI,YAAAA,mBAAmB,EAAE,IANR;AAObD,YAAAA,OAAO,EAAE;AAPI;AAFA,SAAjB;AAaA3B,QAAAA,mDAAA,CAAQ0Z,OAAR,EAAiB;AACfC,UAAAA,OAAO,EAAE,IADM;AAEftY,UAAAA,aAAa,EAAE;AACbC,YAAAA,OAAO,EAAEiY,EADI;AAEb9X,YAAAA,GAAG,EAAE,KAFQ;AAGbC,YAAAA,KAAK,EAAE,CAHM;AAIbH,YAAAA,KAAK,EAAE,WAJM;AAKbC,YAAAA,GAAG,EAAE,cALQ;AAMbI,YAAAA,mBAAmB,EAAE,IANR;AAObD,YAAAA,OAAO,EAAE;AAPI;AAFA,SAAjB;AAYD;AACF,KAtFD;AAwFD;AACF,CA5FD;;AA8FA/E,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4C+a,cAA5C;;AAEA,MAAMO,WAAW,GAAG,MAAM;AACxB,QAAMC,WAAW,GAAG/b,QAAQ,CAACC,gBAAT,CAA0B,yBAA1B,CAApB;;AACA,MAAG8b,WAAH,EAAgB;AACdA,IAAAA,WAAW,CAAC7b,OAAZ,CAAoB8b,UAAU,IAAI;AAChC,YAAMta,OAAO,GAAGsa,UAAU,CAAC7c,aAAX,CAAyB,0BAAzB,CAAhB;AACA,YAAMmJ,GAAG,GAAG0T,UAAU,CAAC7c,aAAX,CAAyB,6BAAzB,CAAZ;AAEA6c,MAAAA,UAAU,CAAC/Y,KAAX,CAAiBsG,WAAjB,CAA6B,WAA7B,EAA2C,GAAE7H,OAAO,CAACyB,YAAR,GAAuBmF,GAAG,CAACnF,YAAJ,GAAmB,CAAE,IAAzF;AACD,KALD;AAMD;AACF,CAVD;;AAYArE,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4Csb,WAA5C;AACAhd,MAAM,CAAC0B,gBAAP,CAAwB,QAAxB,EAAkC4B,sDAAS,CAAC0Z,WAAD,EAAc,GAAd,CAA3C;;;;;;;;;;;;;;ACpHA;AAEA,MAAMvK,IAAI,GAAIvR,QAAQ,CAACC,gBAAT,CAA0B,oCAA1B,CAAd;;AACA,IAAIsR,IAAI,CAACzK,MAAT,EAAiB;AACfyK,EAAAA,IAAI,CAACrR,OAAL,CAAa+Q,GAAG,IAAI;AAClB,UAAMiL,IAAI,GAAG,IAAID,gDAAJ,CAAU,MAAIhL,GAAG,CAAC+D,EAAlB,CAAb;AACD,GAFD;AAGAhV,EAAAA,QAAQ,CAACQ,gBAAT,CAA0B,OAA1B,EAAmC,UAAUC,KAAV,EAAiB;AAClD,UAAMwQ,GAAG,GAAGxQ,KAAK,CAACkI,MAAlB;AACA,UAAMjH,OAAO,GAAGjB,KAAK,CAAC0b,MAAN,CAAaza,OAA7B;AACA,UAAM0a,OAAO,GAAGnL,GAAG,CAAC1Q,OAAJ,CAAY,IAAZ,EAAkB+G,OAAlB,CAA0B+U,qBAA1C;;AAEA,QAAG,OAAOD,OAAP,KAAmB,WAAtB,EAAmC;AACjC,YAAME,WAAW,GAAG5a,OAAO,CAACvC,aAAR,CAAsB,qBAAtB,CAApB;AACA,YAAM4P,OAAO,GAAGkC,GAAG,CAAC1Q,OAAJ,CAAY,iBAAZ,CAAhB;AACA,YAAMgc,QAAQ,GAAGxN,OAAO,CAAC5P,aAAR,CAAsB,yBAAtB,CAAjB;;AAEA,UAAI4P,OAAO,IAAIuN,WAAX,IAA0BC,QAA9B,EAAwC;AACtCA,QAAAA,QAAQ,CAACnX,SAAT,GAAqBkX,WAAW,CAAClX,SAAjC;AACD;AAEF;AAEF,GAhBD,EAgBG,KAhBH;AAiBD;;;;;;;;;;;;;;;;;;;;;;ACxBD;AACA;AACA;AA4BA;AACA;AACA;AACA;AAEAoX,oDAAA,CAAeC,gDAAf,EACEC,iDADF,EAEEC,gDAFF,EAGEC,kDAHF,EAIEC,mDAJF,EAKEC,sDALF,EAMEC,wDANF,EAOEC,oDAPF,EAQEE,mDARF,EASEC,yDATF,EAUEC,qDAVF,EAWEC,uDAXF,EAYEC,mDAZF,EAaEC,iDAbF,EAcEC,sDAdF,EAeEC,uDAfF,EAgBEC,+CAhBF,EAiBEC,qDAjBF,EAkBEC,gDAlBF,EAmBEC,4CAnBF,EAoBEC,4CApBF,EAqBEC,2CArBF,EAsBEC,6CAtBF,EAuBEC,8CAvBF,EAwBEC,qEAxBF,EAyBEE,iEAzBF;AA2BAnB,mEAAA,GAAgCkB,iEAAhC;AAEA,MAAMrb,EAAE,GAAGhE,MAAM,CAACiE,UAAP,CAAkB,qBAAlB,CAAX;AACA,MAAM+E,QAAQ,GAAG,IAAId,sDAAJ,CAAiB,IAAjB,EAAsB;AACrCe,EAAAA,MAAM,EAAE,gBAAUC,MAAV,EAAkBC,MAAlB,EAA0B;AAChC,UAAMC,MAAM,GAAGlI,QAAQ,CAACb,aAAT,CAAuB,gCAAvB,CAAf;;AACA,QAAG+I,MAAH,EAAW;AACT,aAAOA,MAAM,CAAC/E,YAAd;AACD,KAFD,MAEO;AACL;AACD;AACF;AARoC,CAAtB,CAAjB;;AAWA,MAAMsb,QAAQ,GAAI,MAAM;AAEtB,QAAMC,SAAS,GAAG1e,QAAQ,CAACC,gBAAT,CAA0B,mBAA1B,CAAlB;AAEAye,EAAAA,SAAS,CAACxe,OAAV,CAAkB,CAAC2C,GAAD,EAAKoG,KAAL,KAAe;AAC/B,UAAM0V,MAAM,GAAG9b,GAAG,CAACtC,OAAJ,CAAY,WAAZ,CAAf;AACA,UAAMqe,aAAa,GAAGpF,IAAI,CAACC,KAAL,CAAW5W,GAAG,CAACyE,OAAJ,CAAYuX,SAAvB,CAAtB;AACA,UAAMC,IAAI,GAAGjc,GAAG,CAAC5C,gBAAJ,CAAqB,QAArB,CAAb;AAEA,QAAI8e,WAAW,GAAG,CAAlB;AACA,UAAMC,IAAI,GAAG1Z,IAAI,CAAC8I,GAAL,CAAS,GAAGwQ,aAAa,CAACK,KAAd,CAAoBpQ,GAApB,CAAwBI,CAAC,IAAIA,CAAC,CAACC,CAA/B,CAAZ,IAAiD,EAA9D;AACA4P,IAAAA,IAAI,CAAC5e,OAAL,CAAagf,IAAI,IAAI;AAEnB,YAAMC,GAAG,GAAGD,IAAI,CAACE,UAAL,CAAgB,IAAhB,CAAZ;AAEA,YAAMC,UAAU,GAAGH,IAAI,CAACpe,SAAL,CAAe2J,QAAf,CAAwB,wCAAxB,CAAnB;AAEA,UAAI6U,YAAY,GAAGrF,MAAM,CAACsF,MAAP,CAAc,EAAd,EAAkBX,aAAlB,CAAnB;AACAU,MAAAA,YAAY,CAACE,UAAb,GAA0BF,YAAY,CAACE,UAAb,CAAwB9E,MAAxB,CAA+B,UAAS1R,IAAT,EAAe;AACtE,YAAGqW,UAAH,EAAe;AACb,iBAAOhB,6CAAM,CAACrV,IAAI,CAACiG,CAAN,CAAN,CAAewQ,QAAf,CAAwB,YAAxB,CAAP;AACD;;AACD,eAAO,IAAP;AACD,OALyB,CAA1B;AAOA,YAAMC,WAAW,GAAG7c,GAAG,CAACtC,OAAJ,CAAY,qBAAZ,CAApB;AAEA,UAAIof,aAAa,GAAGR,GAAG,CAACS,oBAAJ,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,GAAlC,CAApB;AACA,UAAIC,kBAAkB,GAAGV,GAAG,CAACS,oBAAJ,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,GAAlC,CAAzB;AACA,UAAIE,WAAW,GAAG,SAAlB;AACA,UAAIC,UAAU,GAAG,SAAjB;AACA,UAAIC,SAAS,GAAG,WAAhB;AACA,UAAIC,YAAY,GAAG,SAAnB;AACA,UAAIC,iBAAiB,GAAG,SAAxB;;AAEA,UAAGR,WAAW,CAAC5e,SAAZ,CAAsB2J,QAAtB,CAA+B,wBAA/B,CAAH,EAA6D;AAC3DkV,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,qBAA9B;AACAR,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,qBAA9B;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,qBAAnC;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,qBAAnC;AACAL,QAAAA,WAAW,GAAG,SAAd;AACAC,QAAAA,UAAU,GAAG,SAAb;AACAC,QAAAA,SAAS,GAAG,WAAZ;AACD,OARD,MAQO,IAAGN,WAAW,CAAC5e,SAAZ,CAAsB2J,QAAtB,CAA+B,sBAA/B,CAAH,EAA2D;AAChEkV,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,kBAA9B;AACAR,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,kBAA9B;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,kBAAnC;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,kBAAnC;AACD,OALM,MAKA,IAAGT,WAAW,CAAC5e,SAAZ,CAAsB2J,QAAtB,CAA+B,sBAA/B,CAAH,EAA2D;AAChEkV,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,kBAA9B;AACAR,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,kBAA9B;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,qBAAnC;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,qBAAnC;AACD,OALM,MAKA;AACLR,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,kBAA9B;AACAR,QAAAA,aAAa,CAACQ,YAAd,CAA2B,CAA3B,EAA8B,kBAA9B;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,kBAAnC;AACAN,QAAAA,kBAAkB,CAACM,YAAnB,CAAgC,CAAhC,EAAmC,kBAAnC;AACD;;AAED,YAAMpP,MAAM,GAAG;AACbiE,QAAAA,EAAE,EAAE,QADS;;AAEboL,QAAAA,gBAAgB,CAACC,KAAD,EAAQC,IAAR,EAAczZ,OAAd,EAAuB;AACrC,gBAAM;AAACsY,YAAAA,GAAD;AAAMoB,YAAAA,SAAS,EAAE;AAACjd,cAAAA,GAAD;AAAMkd,cAAAA,MAAN;AAAcja,cAAAA,IAAd;AAAoBka,cAAAA,KAApB;AAA2Bra,cAAAA,KAA3B;AAAkClD,cAAAA;AAAlC,aAAjB;AAA4Dwd,YAAAA,MAAM,EAAE;AAACzR,cAAAA,CAAD;AAAIC,cAAAA;AAAJ;AAApE,cAA8EmR,KAApF;AAEA,gBAAMzY,IAAI,GAAG,IAAI+Y,MAAJ,CAAW,qCAAX,CAAb;AAEAxB,UAAAA,GAAG,CAACyB,SAAJ,GAAgB,kBAAhB;AACAzB,UAAAA,GAAG,CAAC0B,MAAJ,CAAWjZ,IAAX;AACD;;AATY,OAAf;AAYA,YAAMyY,KAAK,GAAG,IAAI7D,2CAAJ,CAAU2C,GAAV,EAAe;AAC3B7a,QAAAA,IAAI,EAAE,MADqB;AAE3BlD,QAAAA,IAAI,EAAE;AACJ,sBAAY,CAAC;AACXkD,YAAAA,IAAI,EAAE,SADK;AAEXlD,YAAAA,IAAI,EAAEke,YAAY,CAACE,UAFR;AAGXM,YAAAA,WAAW,EAAEA,WAHF;AAIXgB,YAAAA,QAAQ,EAAE,IAJC;AAKX/T,YAAAA,QAAQ,EAAE;AACRgU,cAAAA,KAAK,EAAE;AACLC,gBAAAA,SAAS,EAAE,CADN;AAELC,gBAAAA,cAAc,EAAE,CAFX;AAGLC,gBAAAA,MAAM,EAAG,EAHJ;AAILC,gBAAAA,WAAW,EAAG,EAJT;AAKLC,gBAAAA,eAAe,EAAEnB,YALZ;AAMLoB,gBAAAA,oBAAoB,EAAEnB,iBANjB;AAOLoB,gBAAAA,SAAS,EAAE,EAPN;AAQLC,gBAAAA,OAAO,EAAE;AARJ;AADC;AALC,WAAD,EAiBV;AACAjd,YAAAA,IAAI,EAAE,MADN;AAEAlD,YAAAA,IAAI,EAAEke,YAAY,CAACL,KAFnB;AAGAuC,YAAAA,IAAI,EAAE,IAHN;AAIAC,YAAAA,MAAM,EAAEpC,UAJR;AAKAS,YAAAA,WAAW,EAAEA,WALb;AAMAsB,YAAAA,eAAe,EAAGzB,aANlB;AAOA+B,YAAAA,OAAO,EAAE,GAPT;AAQA3U,YAAAA,QAAQ,EAAE;AACRgU,cAAAA,KAAK,EAAE;AACLG,gBAAAA,MAAM,EAAG,CADJ;AAELK,gBAAAA,OAAO,EAAE;AAFJ;AADC;AARV,WAjBU;AADR,SAFqB;AAoC3BI,QAAAA,eAAe,EAAC;AACdC,UAAAA,OAAO,EAAC,IADM;AAEdC,UAAAA,UAAU,EAAC;AAFG,SApCW;AAwC3Bhb,QAAAA,OAAO,EAAE;AACPib,UAAAA,MAAM,EAAE;AACNC,YAAAA,OAAO,EAAE;AACPtB,cAAAA,KAAK,EAAE,CADA;AAEPla,cAAAA,IAAI,EAAE;AAFC;AADH,WADD;AAOPyb,UAAAA,UAAU,EAAE,IAPL;AAQPC,UAAAA,mBAAmB,EAAE,KARd;AASPC,UAAAA,MAAM,EAAE,CAAC,OAAD,EAAS,WAAT,CATD;;AAUPC,UAAAA,OAAO,CAACrU,CAAD,EAAIf,QAAJ,EAAcsT,KAAd,EAAqB;AAE1B;AAEA,kBAAM1X,MAAM,GAAGmF,CAAC,CAACsU,MAAF,GAAWtU,CAAC,CAACsU,MAAF,CAASzZ,MAApB,GAA6BmF,CAAC,CAACnF,MAA9C;AACAA,YAAAA,MAAM,CAAC1F,KAAP,CAAaof,MAAb,GAAsBtV,QAAQ,CAAC,CAAD,CAAR,GAAc,SAAd,GAA0B,SAAhD;;AAEA,gBAAGA,QAAQ,CAAC,CAAD,CAAR,IAAeA,QAAQ,CAAC,CAAD,CAAR,CAAYuV,YAAZ,KAA6B,CAA/C,EAAkD;AAEhD,oBAAMzZ,IAAI,GAAG8V,MAAM,CAACxf,aAAP,CAAqB,sBAAoB4N,QAAQ,CAAC,CAAD,CAAR,CAAY9D,KAAhC,GAAsC,IAA3D,CAAb;;AACA,kBAAGJ,IAAH,EAAS;AACPsI,gBAAAA,UAAU,CAAC,MAAM;AACf,wBAAMU,GAAG,GAAGhJ,IAAI,CAAC1J,aAAL,CAAmB,QAAnB,CAAZ;;AACA,sBAAG0S,GAAG,CAACtH,YAAJ,CAAiB,eAAjB,MAAsC,MAAzC,EAAiD;AAC/CsH,oBAAAA,GAAG,CAAC/I,KAAJ;AACA,0BAAMN,KAAK,GAAGmW,MAAM,CAACxf,aAAP,CAAqB,oBAArB,CAAd;AACAqJ,oBAAAA,KAAK,CAAC1H,SAAN,CAAgBmB,MAAhB,CAAuB,eAAvB;AACAuG,oBAAAA,KAAK,CAAC4I,SAAN,GAAkBvI,IAAI,CAACwI,SAAvB;;AACA,wBAAGvO,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8E,sBAAAA,QAAQ,CAACiB,aAAT,CAAuBF,IAAvB;AACD;;AACDkW,oBAAAA,WAAW,GAAGhS,QAAQ,CAAC,CAAD,CAAR,CAAY9D,KAA1B;AACD;AACF,iBAZS,EAYR,EAZQ,CAAV;AAaD;AAEF;;AAED,gBAAGN,MAAM,CAAC7H,SAAP,CAAiB2J,QAAjB,CAA0B,UAA1B,CAAH,EAA0C;AACxC4V,cAAAA,KAAK,CAACkC,iBAAN,CAAwB,CAAC;AACvBD,gBAAAA,YAAY,EAAE,CADS;AAEvBrZ,gBAAAA,KAAK,EAAE8V;AAFgB,eAAD,CAAxB;AAIAsB,cAAAA,KAAK,CAACmC,MAAN,CAAa,QAAb;AACD;AAEF,WA9CM;;AA+CPC,UAAAA,OAAO,CAAC3U,CAAD,EAAIf,QAAJ,EAAcsT,KAAd,EAAqB;AAC1B,gBAAGtT,QAAQ,CAACjG,MAAT,GAAkB,CAAlB,IAAuBiG,QAAQ,CAAC,CAAD,CAAR,CAAYuV,YAAZ,KAA6B,CAAvD,EAA0D;AACxD,oBAAMzZ,IAAI,GAAG8V,MAAM,CAACxf,aAAP,CAAqB,sBAAoB4N,QAAQ,CAAC,CAAD,CAAR,CAAY9D,KAAhC,GAAsC,IAA3D,CAAb;;AACA,kBAAGJ,IAAH,EAAS;AACPsI,gBAAAA,UAAU,CAAC,MAAM;AACf,wBAAMU,GAAG,GAAGhJ,IAAI,CAAC1J,aAAL,CAAmB,QAAnB,CAAZ;;AACA,sBAAG0S,GAAG,CAACtH,YAAJ,CAAiB,eAAjB,MAAsC,MAAzC,EAAiD;AAC/CsH,oBAAAA,GAAG,CAAC/I,KAAJ;AACA,0BAAMN,KAAK,GAAGmW,MAAM,CAACxf,aAAP,CAAqB,oBAArB,CAAd;AACAqJ,oBAAAA,KAAK,CAAC1H,SAAN,CAAgBmB,MAAhB,CAAuB,eAAvB;AACAuG,oBAAAA,KAAK,CAAC4I,SAAN,GAAkBvI,IAAI,CAACwI,SAAvB;;AACA,wBAAGvO,EAAE,CAACE,OAAH,KAAe,IAAlB,EAAwB;AACtB8E,sBAAAA,QAAQ,CAACiB,aAAT,CAAuBF,IAAvB;AACD;;AACDkW,oBAAAA,WAAW,GAAGhS,QAAQ,CAAC,CAAD,CAAR,CAAY9D,KAA1B;AACD;AACF,iBAZS,EAYR,EAZQ,CAAV;AAaD;AACF;AACF,WAlEM;;AAmEPyX,UAAAA,MAAM,EAAE;AACNzR,YAAAA,CAAC,EAAE;AACD3K,cAAAA,IAAI,EAAE,MADL;AAED8K,cAAAA,MAAM,EAAE,OAFP;AAGDsT,cAAAA,IAAI,EAAE;AACJC,gBAAAA,IAAI,EAAE,MADF;AAEJC,gBAAAA,cAAc,EAAE;AACdC,kBAAAA,IAAI,EAAE,MADQ;AAEdC,kBAAAA,GAAG,EAAEzD,UAAU,GAAGhB,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAAH,GAA+C1E,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAFhD;AAGd3U,kBAAAA,GAAG,EAAEiR,UAAU,GAAGhB,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAAH,GAA+C1E,6CAAM,GAAGtd,GAAT,CAAa,CAAb,EAAe,OAAf,EAAwBgiB,MAAxB,CAA+B,YAA/B;AAHhD,iBAFZ;AAOJD,gBAAAA,GAAG,EAAEzD,UAAU,GAAGhB,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAAH,GAA+C1E,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAP1D;AAQJ3U,gBAAAA,GAAG,EAAEiR,UAAU,GAAGhB,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAAH,GAA+C1E,6CAAM,GAAGtd,GAAT,CAAa,CAAb,EAAe,OAAf,EAAwBgiB,MAAxB,CAA+B,YAA/B;AAR1D,eAHL;AAaDD,cAAAA,GAAG,EAAEzD,UAAU,GAAGhB,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAAH,GAA+C1E,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAb7D;AAcD3U,cAAAA,GAAG,EAAEiR,UAAU,GAAGhB,6CAAM,CAAC,YAAD,CAAN,CAAqB0E,MAArB,CAA4B,YAA5B,CAAH,GAA+C1E,6CAAM,GAAGtd,GAAT,CAAa,CAAb,EAAe,OAAf,EAAwBgiB,MAAxB,CAA+B,YAA/B,CAd7D;AAeDC,cAAAA,KAAK,EAAE;AACLjB,gBAAAA,OAAO,EAAE,EADJ;AAELkB,gBAAAA,aAAa,EAAE5D,UAAU,GAAG,CAAH,GAAO,CAF3B;AAGL6D,gBAAAA,KAAK,EAAEnD;AAHF,eAfN;AAoBDoD,cAAAA,IAAI,EAAE;AACJ5B,gBAAAA,OAAO,EAAC,KADJ;AAEJzB,gBAAAA,WAAW,EAAEE,SAFT;AAGJkD,gBAAAA,KAAK,EAAElD;AAHH;AApBL,aADG;AA2BN9Q,YAAAA,CAAC,EAAE;AACDd,cAAAA,GAAG,EAAE9I,IAAI,CAACC,IAAL,CAAUyZ,IAAI,GAAG,EAAjB,IAAuB,EAD3B;AAEDoE,cAAAA,WAAW,EAAE,IAFZ;AAGDJ,cAAAA,KAAK,EAAE;AACLzB,gBAAAA,OAAO,EAAElC,UADJ;AAELgE,gBAAAA,QAAQ,EAAE,kBAASjkB,KAAT,EAAgB6J,KAAhB,EAAuB+Z,KAAvB,EAA8B;AACtC,yBAAOM,aAAa,CAAClkB,KAAD,CAApB;AACD,iBAJI;AAKL8jB,gBAAAA,KAAK,EAAEnD,UALF;AAMLgC,gBAAAA,OAAO,EAAE,EANJ;AAOL;AACA3T,gBAAAA,GAAG,EAAEiQ,6CAAM,GAAGtd,GAAT,CAAa,EAAb,EAAiB,OAAjB,EAA0BgiB,MAA1B,CAAiC,YAAjC;AARA,eAHN;AAaDI,cAAAA,IAAI,EAAE;AACJI,gBAAAA,cAAc,EAAE,EADZ;AAEJC,gBAAAA,SAAS,EAAC,KAFN;AAGJ1D,gBAAAA,WAAW,EAAEE,SAHT;AAIJkD,gBAAAA,KAAK,EAAElD,SAJH;AAKJgB,gBAAAA,SAAS,EAAE,CALP;AAMJyC,gBAAAA,UAAU,EAAE;AANR;AAbL;AA3BG,WAnED;AAqHPC,UAAAA,OAAO,EAAE;AACP3S,YAAAA,MADO;AAEP4S,YAAAA,MAAM,EAAE;AACNpC,cAAAA,OAAO,EAAE;AADH,aAFD;AAKPqC,YAAAA,OAAO,EAAE;AACPhC,cAAAA,OAAO,EAAE,KADF;AAEPiC,cAAAA,QAAQ,EAAGC,KAAD,IAAW;AACnB,sBAAMF,OAAO,GAAGE,KAAK,CAACzD,KAAN,CAAY0D,MAAZ,CAAmBxjB,OAAnB,CAA2B,WAA3B,EAAwCpB,aAAxC,CAAsD,sBAAtD,CAAhB;AACAykB,gBAAAA,OAAO,CAAC3gB,KAAR,CAAcsD,IAAd,GAAqBud,KAAK,CAACF,OAAN,CAAcI,MAAd,GAAuB,IAA5C;AACAJ,gBAAAA,OAAO,CAAC3gB,KAAR,CAAcK,GAAd,GAAoB,KAApB;AACAsgB,gBAAAA,OAAO,CAAC3gB,KAAR,CAAcse,OAAd,GAAwB,OAAxB;AACAqC,gBAAAA,OAAO,CAAC3gB,KAAR,CAAc4Y,OAAd,GAAwB,CAAxB;AACA+H,gBAAAA,OAAO,CAAC3gB,KAAR,CAAcghB,aAAd,GAA8B,MAA9B;;AAEA,oBAAIH,KAAK,CAACF,OAAN,CAAc/H,OAAd,KAA0B,CAA9B,EAAiC;AAC/B+H,kBAAAA,OAAO,CAAC3gB,KAAR,CAAc4Y,OAAd,GAAwB,CAAxB;AACA;AACD;;AAED+H,gBAAAA,OAAO,CAACzkB,aAAR,CAAsB,gBAAtB,EAAwCoY,WAAxC,GAAsD8G,6CAAM,CAACyF,KAAK,CAACF,OAAN,CAAcM,KAAd,CAAoB,CAApB,CAAD,CAAN,CAA+BnB,MAA/B,CAAsC,MAAtC,CAAtD;AAED,eAjBM;AAkBPoB,cAAAA,SAAS,EAAE,KAlBJ;AAmBPC,cAAAA,IAAI,EAAE;AAnBC,aALF;AA0BPC,YAAAA,SAAS,EAAE;AACTC,cAAAA,IAAI,EAAE;AACJpB,gBAAAA,KAAK,EAAErD,kBADH;AAEJzZ,gBAAAA,KAAK,EAAE;AAFH,eADG;AAKTme,cAAAA,IAAI,EAAE;AACJ3C,gBAAAA,OAAO,EAAE;AADL,eALG;AAQT4C,cAAAA,IAAI,EAAE;AACJ5C,gBAAAA,OAAO,EAAE;AADL;AARG;AA1BJ;AArHF;AAxCkB,OAAf,CAAd;AAwMA,YAAMpZ,KAAK,GAAGmW,MAAM,CAAC1e,gBAAP,CAAwB,kBAAxB,CAAd;AAEAuI,MAAAA,KAAK,CAACtI,OAAN,CAAc8I,IAAI,IAAI;AACpB,cAAMwI,MAAM,GAAGxI,IAAI,CAAC1B,OAAL,CAAamd,SAA5B;AACA,cAAMtb,MAAM,GAAGH,IAAI,CAAC7J,aAAL,CAAmB,uBAAnB,CAAf;AACAgK,QAAAA,MAAM,CAAC3I,gBAAP,CAAwB,OAAxB,EAAgC,MAAM;AACpC,cAAG2I,MAAM,CAACoB,YAAP,CAAoB,eAApB,MAAyC,MAA5C,EAAoD;AAClDoU,YAAAA,MAAM,CAACxf,aAAP,CAAqB,oBAArB,EAA2C2B,SAA3C,CAAqDmB,MAArD,CAA4D,eAA5D;AACAoe,YAAAA,KAAK,CAACkC,iBAAN,CAAwB,CAAC;AACvBD,cAAAA,YAAY,EAAE,CADS;AAEvBrZ,cAAAA,KAAK,EAAEuI;AAFgB,aAAD,CAAxB;AAIAuN,YAAAA,WAAW,GAAGvN,MAAd;AACA6O,YAAAA,KAAK,CAACmC,MAAN;AAED;AACF,SAXD;AAaD,OAhBD;AAkBD,KAzRD;AA2RD,GAlSD;AAoSD,CAxSD;;AA0SA1jB,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4Cie,QAA5C,EAAsD;AAAE1a,EAAAA,IAAI,EAAE;AAAR,CAAtD;;AAEA,MAAMuf,aAAa,GAAG,SAAhBA,aAAgB,CAACoB,GAAD,EAAoB;AAAA,MAAdC,KAAc,uEAAN,CAAM;AACxC,QAAMhC,IAAI,GAAGrd,IAAI,CAACsf,KAAL,CAAWtf,IAAI,CAACqf,KAAL,CAAWD,GAAG,GAAG,MAAjB,EAAyBG,cAAzB,GAA0CC,UAA1C,CAAqD,GAArD,EAA0D,EAA1D,EAA8Dhe,MAAzE,CAAb;AAAA,QACEie,KAAK,GAAG,CAAC,MAAD,EAAQ,MAAR,EAAe,MAAf,EAAsB,OAAtB,EAA+Bzf,IAAI,CAACsf,KAAL,CAAWjC,IAAI,GAAG,CAAlB,IAAuB,CAAtD,CADV;AAAA,QAEEqC,KAAK,GAAG1f,IAAI,CAACkW,GAAL,CAASrW,MAAM,CAACuf,GAAD,CAAf,IAAsBvf,MAAM,CAAC,WAASwd,IAAI,GAACA,IAAI,GAAC,CAAnB,CAAD,CAFtC;AAGA,SAAOoC,KAAK,GAAGC,KAAK,CAACC,OAAN,CAAcN,KAAd,EAAqBE,cAArB,KAAwC,GAAxC,GAA8CE,KAAjD,GAAyDL,GAAG,CAACO,OAAJ,CAAYN,KAAZ,EAAmBO,QAAnB,KAAgC,IAArG;AACD,CALD;;AAOA,MAAMC,iBAAiB,GAAG,MAAM;AAE9B,QAAMC,eAAe,GAAGplB,QAAQ,CAACC,gBAAT,CAA0B,0BAA1B,CAAxB;AAAA,QACMkH,IAAI,GAAG,EADb;;AAGA,MAAIie,eAAJ,EAAqB;AACnBA,IAAAA,eAAe,CAACllB,OAAhB,CAAwBkH,GAAG,IAAI;AAC7B,UAAI,CAACD,IAAI,CAACE,QAAL,CAAcD,GAAG,CAACE,OAAJ,CAAY+d,eAA1B,CAAL,EAAiD;AAC/Cle,QAAAA,IAAI,CAACK,IAAL,CAAUJ,GAAG,CAACE,OAAJ,CAAY+d,eAAtB;AACD;AACF,KAJD;AAKD;;AAEDle,EAAAA,IAAI,CAACjH,OAAL,CAAakH,GAAG,IAAI;AAElB,UAAM6K,WAAW,GAAG,IAAIlL,kDAAJ,CACjB,4BAA2BK,GAAI,IADd,EAElB;AACEM,MAAAA,WAAW,EAAE,IADf;AAEEC,MAAAA,cAAc,EAAE,IAFlB;AAGEC,MAAAA,IAAI,EAAE,KAHR;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAFkB,CAApB;AAUD,GAZD;AAcD,CA3BD;;AA6BAsd,iBAAiB;;AAEjB,MAAMG,gBAAgB,GAAG,MAAM;AAE7B,QAAM1T,WAAW,GAAG5R,QAAQ,CAACC,gBAAT,CAA0B,oBAA1B,CAApB;AAEA2R,EAAAA,WAAW,CAAC1R,OAAZ,CAAoB2C,GAAG,IAAI;AAEzB,UAAMgP,GAAG,GAAGhP,GAAG,CAAC1D,aAAJ,CAAkB,sBAAlB,CAAZ;;AACA,QAAG0S,GAAH,EAAQ;AACNA,MAAAA,GAAG,CAACrR,gBAAJ,CAAqB,OAArB,EAA+BsN,CAAD,IAAO;AACnCA,QAAAA,CAAC,CAACG,cAAF;AACApL,QAAAA,GAAG,CAAC/B,SAAJ,CAAcmB,MAAd,CAAqB,eAArB;AACD,OAHD;AAID;AAEF,GAVD;AAYD,CAhBD;;AAkBAqjB,gBAAgB;;;;;;;;;;;;;;AChbhB;;AAEA,MAAME,KAAK,GAAG,MAAM;AAClB,QAAMC,MAAM,GAAGzlB,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,CAAf;AAEAwlB,EAAAA,MAAM,CAACvlB,OAAP,CAAeslB,KAAK,IAAI;AACtB,UAAME,QAAQ,GAAGF,KAAK,CAACle,OAAN,CAAcqe,YAA/B;AACA,QAAIC,QAAJ;;AACA,QAAGF,QAAH,EAAa;AACXE,MAAAA,QAAQ,GAAG,CACT,YADS,EAET,MAFS,EAGT,UAHS,EAIT,cAJS,EAKT,MALS,EAMT,QANS,EAOT,UAPS,EAQT,YARS,CAAX;AAUD,KAXD,MAWO;AACLA,MAAAA,QAAQ,GAAG,CACT,YADS,EAET,MAFS,EAGT,UAHS,EAIT,cAJS,EAKT,MALS,EAMT,QANS,EAOT,YAPS,CAAX;AASD;;AAED,UAAMC,MAAM,GAAG,IAAIN,6CAAJ,CAASC,KAAT,EAAgB;AAC7BI,MAAAA,QAD6B;AAE7BE,MAAAA,YAAY,EAAE;AAFe,KAAhB,CAAf;AAID,GA9BD;AAgCD,CAnCD;;AAsCAhnB,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4CglB,KAA5C;;;;;;;;;;;;;;;;ACxCA;AACA;AACAtjB,+DAAA,CAAoBC,kEAApB;;AAEA,MAAM4jB,oBAAoB,GAAG,MAAM;AACjC,QAAMC,YAAY,GAAGhmB,QAAQ,CAACC,gBAAT,CAA0B,qBAA1B,CAArB;;AACA,MAAG+lB,YAAH,EAAiB;AACfA,IAAAA,YAAY,CAAC9lB,OAAb,CAAqB+lB,WAAW,IAAI;AAElC,YAAM9P,SAAS,GAAG8P,WAAW,CAAC9mB,aAAZ,CAA0B,aAA1B,CAAlB;AAEA,UAAI+mB,QAAQ,GAAGD,WAAW,CAAChmB,gBAAZ,CAA6B,sBAA7B,CAAf;AAAA,UACIkmB,KADJ;AAGAA,MAAAA,KAAK,GAAGjkB,mDAAA,CAAQgkB,QAAR,EAAkB;AACxBE,QAAAA,QAAQ,EAAE,CAAC,GAAD,IAASF,QAAQ,CAACpf,MAAT,GAAkB,CAA3B,CADc;AAExBzD,QAAAA,IAAI,EAAE,MAFkB;AAGxBE,QAAAA,aAAa,EAAE;AACbC,UAAAA,OAAO,EAAE2S,SADI;AAEbxS,UAAAA,GAAG,EAAE,IAFQ;AAGbF,UAAAA,KAAK,EAAE,SAHM;AAIbG,UAAAA,KAAK,EAAE,IAJM;AAKbyiB,UAAAA,IAAI,EAAE,KALO;AAMb3iB,UAAAA,GAAG,EAAE,MAAO,QAAQyS,SAAS,CAAChQ,WAAV,GAAwBmI,UAAhC;AANC;AAHS,OAAlB,CAAR;AAaD,KApBD;AAqBD;AACF,CAzBD;;AA4BAxP,MAAM,CAAC0B,gBAAP,CAAwB,kBAAxB,EAA4CulB,oBAA5C;;AAEA,MAAMO,QAAQ,GAAG,MAAM;AACrBrM,EAAAA,MAAM,CAACsM,cAAP,CAAsBC,gBAAgB,CAACC,SAAvC,EAAkD,SAAlD,EAA6D;AAC3DC,IAAAA,GAAG,GAAG;AACJ,aAAO,CAAC,EACN,KAAKC,WAAL,GAAmB,CAAnB,IACA,CAAC,KAAKC,MADN,IAEA,CAAC,KAAKC,KAFN,IAGA,KAAKC,UAAL,GAAkB,CAJZ,CAAR;AAMD;;AAR0D,GAA7D;AAWA,QAAMC,aAAa,GAAG/mB,QAAQ,CAACC,gBAAT,CAA0B,kBAA1B,CAAtB;;AACA,MAAG8mB,aAAH,EAAkB;AAChBA,IAAAA,aAAa,CAAC7mB,OAAd,CAAsBslB,KAAK,IAAI;AAE7B,YAAMwB,YAAY,GAAGxB,KAAK,CAACrmB,aAAN,CAAoB,OAApB,CAArB;AACA,YAAM8nB,YAAY,GAAGzB,KAAK,CAACrmB,aAAN,CAAoB,QAApB,CAArB;;AACA,UAAI6nB,YAAY,IAAIC,YAApB,EAAkC;AAChC,YAAI,CAACD,YAAY,CAACE,OAAlB,EAA2B;AACzBF,UAAAA,YAAY,CAAClmB,SAAb,CAAuBC,GAAvB,CAA2B,eAA3B;AACAkmB,UAAAA,YAAY,CAACnmB,SAAb,CAAuBmB,MAAvB,CAA8B,eAA9B;AACD;;AAEDjC,QAAAA,QAAQ,CAACb,aAAT,CAAuB,MAAvB,EAA+BqB,gBAA/B,CAAgD,YAAhD,EAA8D,MAAM;AAClE,cAAI,CAACwmB,YAAY,CAACE,OAAlB,EAA2B;AACzBF,YAAAA,YAAY,CAACG,IAAb;AACD;AACF,SAJD;AAMAH,QAAAA,YAAY,CAACxmB,gBAAb,CAA8B,MAA9B,EAAsC,MAAM;AAC1CwmB,UAAAA,YAAY,CAAClmB,SAAb,CAAuBmB,MAAvB,CAA8B,eAA9B;AACAglB,UAAAA,YAAY,CAACnmB,SAAb,CAAuBC,GAAvB,CAA2B,eAA3B;AACD,SAHD;AAID;AAEF,KAtBD;AAuBD;AACF,CAtCD;;AAwCAulB,QAAQ;;;;;;;;;;;;;;;AC1ER,MAAMc,QAAN,CAAe;AACbnR,EAAAA,WAAW,GAAmB;AAAA,QAAlBoR,WAAkB,uEAAJ,EAAI;AAAE,SAAKC,WAAL,GAAmBtnB,QAAQ,CAACuE,WAAT,CAAqBvE,QAAQ,CAACunB,aAAT,CAAuBF,WAAvB,CAArB,CAAnB;AAA+E;;AAC/GvhB,EAAAA,EAAE,CAACxB,IAAD,EAAOkjB,QAAP,EAAiB;AAAE,SAAKF,WAAL,CAAiB9mB,gBAAjB,CAAkC8D,IAAlC,EAAwCkjB,QAAxC;AAAoD;;AACzEzjB,EAAAA,IAAI,CAACO,IAAD,EAAOkjB,QAAP,EAAiB;AAAE,SAAKF,WAAL,CAAiB9mB,gBAAjB,CAAkC8D,IAAlC,EAAwCkjB,QAAxC,EAAkD;AAAEzjB,MAAAA,IAAI,EAAE;AAAR,KAAlD;AAAoE;;AAC3F0jB,EAAAA,GAAG,CAACnjB,IAAD,EAAOkjB,QAAP,EAAiB;AAAE,SAAKF,WAAL,CAAiBI,mBAAjB,CAAqCpjB,IAArC,EAA2CkjB,QAA3C;AAAuD;;AAC7E3a,EAAAA,IAAI,CAACvI,IAAD,EAAO6X,MAAP,EAAe;AAAE,WAAO,KAAKmL,WAAL,CAAiB3mB,aAAjB,CAA+B,IAAIgnB,WAAJ,CAAgBrjB,IAAhB,EAAsB;AAAE6X,MAAAA;AAAF,KAAtB,CAA/B,CAAP;AAA2E;;AALnF;;AAQf,MAAM5D,QAAQ,GAAG,IAAI6O,QAAJ,CAAa,gBAAb,CAAjB;AACA,iEAAe7O,QAAf;;;;;;;;;;;;;;;;ACTO,MAAM3F,YAAY,GAAI3H,EAAD,IAAQ;AAClC,QAAM2c,IAAI,GAAG3c,EAAE,CAAC4M,qBAAH,EAAb;AACA,SACE+P,IAAI,CAACtkB,GAAL,IAAY,CAAZ,IACAskB,IAAI,CAACrhB,IAAL,IAAa,CADb,IAEAqhB,IAAI,CAACpH,MAAL,KAAgB1hB,MAAM,CAACyP,WAAP,IAAsBvO,QAAQ,CAAC+E,eAAT,CAAyB5B,YAA/D,CAFA,IAGAykB,IAAI,CAACnH,KAAL,KAAe3hB,MAAM,CAACwP,UAAP,IAAqBtO,QAAQ,CAAC+E,eAAT,CAAyBsJ,WAA7D,CAJF;AAMD,CARM;AAWP,iEAAe;AAAEuE,EAAAA;AAAF,CAAf;;;;;;;;;;ACXA,aAAa,GAAG,IAAoD,oBAAoB,KAAK,EAAoL,CAAC,aAAa,yBAAyB,gBAAgB,UAAU,UAAU,MAAM,SAAmC,CAAC,gBAAgB,OAAC,OAAO,oBAAoB,8CAA8C,kCAAkC,YAAY,YAAY,oCAAoC,wBAAwB,uBAAuB,oBAAoB,UAAU,SAAmC,KAAK,WAAW,YAAY,SAAS,EAAE,mBAAmB,sBAAsB,gBAAgB,+DAA+D,GAAG,qBAAqB,sBAAsB,cAAc,wBAAwB,GAAG,qBAAqB,sBAAsB,cAAc,2BAA2B,GAAG,qBAAqB,wBAAwB,sBAAsB,4CAA4C,EAAE,iBAAiB,qBAAqB,wBAAwB,sBAAsB,iBAAiB,EAAE,iBAAiB,qBAAqB,sBAAsB,UAAU,gHAAgH,GAAG,qBAAqB,sBAAsB,sEAAsE,GAAG,qBAAqB,sBAAsB,2BAA2B,GAAG,qBAAqB,sBAAsB,4BAA4B,GAAG,sBAAsB,sBAAsB,4CAA4C,GAAG,sBAAsB,sBAAsB,cAAc,GAAG,sBAAsB,sBAAsB,UAAU,gBAAgB,GAAG,sBAAsB,sBAAsB,iIAAiI,GAAG,sBAAsB,sBAAsB,sDAAsD,GAAG,sBAAsB,sBAAsB,0DAA0D,GAAG,sBAAsB,sBAAsB,6EAA6E,GAAG,sBAAsB,sBAAsB,qCAAqC,GAAG,sBAAsB,sBAAsB,oCAAoC,GAAG,sBAAsB,WAAW,ozBAAozB,EAAE,ihBAAihB,sBAAsB,sBAAsB,UAAU,GAAG,sBAAsB,sBAAsB,0CAA0C,GAAG,sBAAsB,sBAAsB,YAAY,GAAG,sBAAsB,sBAAsB,gBAAgB,GAAG,sBAAsB,sBAAsB,kDAAkD,GAAG,sBAAsB,sBAAsB,sBAAsB,GAAG,sBAAsB,sBAAsB,gCAAgC,GAAG,sBAAsB,sBAAsB,mDAAmD,GAAG,sBAAsB,sBAAsB,kBAAkB,GAAG,sBAAsB,sBAAsB,qBAAqB,GAAG,sBAAsB,sBAAsB,mCAAmC,GAAG,sBAAsB,sBAAsB,6BAA6B,gCAAgC,GAAG,sBAAsB,sBAAsB,8BAA8B,GAAG,sBAAsB,wBAAwB,0BAA0B,uBAAuB,0DAA0D,GAAG,sBAAsB,aAAa,sCAAsC,SAAS,kBAAkB,yCAAyC,cAAc,0BAA0B,WAAW,cAAc,iFAAiF,gBAAgB,aAAa,oGAAoG,KAAK,yDAAyD,sEAAsE,cAAc,8CAA8C,eAAe,sCAAsC,eAAe,uBAAuB,OAAO,sBAAsB,eAAe,iDAAiD,iBAAiB,mEAAmE,iBAAiB,8MAA8M,wLAAwL,eAAe,kLAAkL,4DAA4D,+CAA+C,iIAAiI,kBAAkB,IAAI,8BAA8B,wDAAwD,gBAAgB,iBAAiB,oCAAoC,qBAAqB,mCAAmC,IAAI,iBAAiB,EAAE,IAAI,qBAAqB,mBAAmB,oBAAoB,SAAS,oBAAoB,SAAS,sBAAsB,aAAa,gEAAgE,4BAA4B,mCAAmC,0CAA0C,sFAAsF,0DAA0D,uDAAuD,oGAAoG,sGAAsG,0JAA0J,oGAAoG,gGAAgG,4FAA4F,iBAAiB,+GAA+G,2GAA2G,kFAAkF,wFAAwF,sBAAsB,aAAa,sFAAsF,oFAAoF,2NAA2N,wHAAwH,yEAAyE,IAAI,IAAI,IAAI,mBAAmB,8BAA8B,gBAAgB,kBAAkB,KAAK,iBAAiB,KAAK,oBAAoB,aAAa,eAAe,uBAAuB,0BAA0B,iBAAiB,kCAAkC,cAAc,GAAG,eAAe,6BAA6B,6BAA6B,GAAG,IAAI,2BAA2B,UAAU,oBAAoB,uBAAuB,cAAc,wBAAwB,uBAAuB,cAAc,OAAO,kDAAkD,aAAa,6BAA6B,kCAAkC,GAAG,0BAA0B,yBAAyB,GAAG,wBAAwB,8CAA8C,IAAI,sBAAsB,yCAAyC,yBAAyB,KAAK,sHAAsH,EAAE,yBAAyB,EAAE,GAAG,WAAW;;;;;;;;;;ACAvkU;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,wBAAwB;AACxB,wBAAwB;AACxB,wBAAwB;;AAExB;AACA,qCAAqC;;AAErC;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,mEAAmE;AAC9E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AAC4B;AACS;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAAwB,QAAQ,+CAAM;AACtC;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,6CAAM;AACpB,MAAM,4BAA4B,+CAAM;AACxC,cAAc,6CAAM;AACpB;AACA;AACA,GAAG;;AAEH;AACA,WAAW,6CAAM;AACjB,GAAG;;AAEH;AACA,WAAW,6CAAM;AACjB,GAAG;;AAEH;AACA,WAAW,6CAAM,WAAW,6CAAM;AAClC,GAAG;;AAEH;AACA,WAAW,6CAAM;AACjB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,WAAW,6CAAM;AACjB;AACA,EAAE,IAAI;;;;;;;;;;;;;;;;;;AC9DN;AACA;AACA;AACA;AACA;AACA;AACgE;AAC2O;;AAE3S;AACA,cAAc,gCAAgC;AAC9C,cAAc,kDAAkD;AAChE;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,gBAAgB,qBAAqB;AACrC;AACA;AACA,2CAA2C,gBAAgB;AAC3D,KAAK;;AAEL;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB,gBAAgB,qBAAqB;AACrC;AACA;AACA,2CAA2C,wCAAwC;AACnF,KAAK;;AAEL;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB,gBAAgB,qBAAqB;AACrC;AACA;AACA,2CAA2C,wCAAwC;AACnF;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,qBAAqB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ,IAAI;AACJ,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,uEAAqB;AAC5C;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,kBAAkB;AAClB;;AAEA;;AAEA;AACA,cAAc,2BAA2B;AACzC,cAAc,qCAAqC;AACnD,cAAc,kDAAkD;AAChE;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,YAAY,+CAA+C;AAC3D,WAAW,iBAAiB;AAC5B,WAAW,QAAQ;AACnB,aAAa;AACb;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,WAAW,mBAAmB;AAC9B,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA,SAAS,kBAAkB;AAC3B,UAAU;AACV;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK,GAAG,KAAK,qBAAqB,KAAK;AAClE,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,2BAA2B;AACzC,cAAc,mDAAmD;AACjE,cAAc,2DAA2D;AACzE,cAAc,+CAA+C;AAC7D,cAAc,kDAAkD;AAChE;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,YAAY,2BAA2B;AACvC,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA,SAAS,UAAU;AACnB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,YAAY,mCAAmC,gBAAgB;AAC/D,WAAW,eAAe;AAC1B,cAAc;AACd;AACA;AACA,MAAM,0DAAQ;AACd;AACA,SAAS,gEAAc;AACvB,SAAS,gEAAc;AACvB;AACA;AACA,UAAU,gEAAc;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,4BAA4B;AACvC,aAAa;AACb;AACA;AACA,qBAAqB,yDAAO,oBAAoB,yDAAO;AACvD;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,oBAAoB;AAC/B,WAAW,uBAAuB;AAClC,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,sDAAsD,0DAAQ,aAAa,2BAA2B;AACtG;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,QAAQ,4DAAU;AAClB;AACA;AACA,MAAM,SAAS,yDAAO;AACtB;AACA;AACA,GAAG;AACH;AACA;;AAEA,uBAAuB,iBAAiB;AACxC;AACA,YAAY;AACZ;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,IAAI,SAAS,0DAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,cAAc,2BAA2B;AACzC,cAAc,+CAA+C;AAC7D,cAAc,uDAAuD;AACrE;;AAEA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,0BAA0B;AACrC,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA,eAAe,2DAAS;AACxB;AACA;AACA;;AAEA;AACA,WAAW,0BAA0B;AACrC,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,0BAA0B;AACrC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,0BAA0B;AACrC,WAAW,kBAAkB;AAC7B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAO,6BAA6B,wDAAM,QAAQ,wDAAM;AACxE;AACA,gBAAgB,yDAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,0BAA0B;AACrC,YAAY,sDAAsD;AAClE,WAAW,QAAQ;AACnB;AACA;AACA,SAAS,qBAAqB;AAC9B;AACA;AACA;AACA;AACA;AACA,EAAE,oEAAkB;AACpB;AACA,qBAAqB,+DAAa;AAClC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,0BAA0B;AACrC,YAAY,sDAAsD;AAClE,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yDAAO;AACxB;AACA,gBAAgB,yDAAO,6BAA6B,wDAAM,QAAQ,wDAAM;AACxE;AACA,iBAAiB,yDAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA,0BAA0B,KAAK,WAAW,cAAc;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,0BAA0B;AACrC,YAAY,kDAAkD;AAC9D,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA,8BAA8B,yDAAW;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mCAAmC;AAC1D;;AAEA,8BAA8B,mCAAmC;AACjE;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,iDAAG;AAChC;AACA;AACA;AACA;AACA,WAAW,2DAAa;AACxB;AACA,WAAW,2DAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAU;AACvC,6BAA6B,wDAAU;AACvC,0DAA0D,gDAAE,QAAQ,qDAAO;AAC3E,0DAA0D,qDAAO;AACjE,+DAA+D,qDAAO;AACtE,0DAA0D,qDAAO,QAAQ,gDAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wDAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wDAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wDAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,iCAAiC,KAAK,WAAW,cAAc;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,kBAAkB,0DAAQ;AAC1B,SAAS,0DAAQ;AACjB;;AAEA;AACA,aAAa,qFAAqF;AAClG,aAAa;AACb;;AAEA;AACA,cAAc,2BAA2B;AACzC,cAAc,2BAA2B;AACzC,cAAc,2BAA2B;AACzC,cAAc,mDAAmD;AACjE,cAAc,sDAAsD;AACpE,cAAc,sDAAsD;AACpE,cAAc,uDAAuD;AACrE,cAAc,yDAAyD;AACvE;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA,SAAS,0DAAQ;AACjB;;AAEA;AACA;AACA,aAAa,wBAAwB;AACrC,WAAW,uBAAuB;AAClC,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,YAAY,uDAAuD;AACnE,cAAc,2BAA2B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC,aAAa;AACb;AACA;AACA,SAAS,mBAAmB;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,oBAAoB;AAC3B,OAAO,oBAAoB;AAC3B,iDAAiD,wDAAwD;AACzG;AACA;AACA,iDAAiD,wDAAwD;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,iDAAiD;AAC5D,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,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC,aAAa;AACb;AACA;AACA,SAAS,mBAAmB;AAC5B;AACA,gBAAgB;;AAEhB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,0CAA0C;AACvD,8CAA8C,2EAA2E;AACzH;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,oBAAoB;AACzC,SAAS,gCAAgC;AACzC,8BAA8B,mDAAmD;AACjF;AACA,cAAc,wCAAwC;AACtD;AACA;AACA,GAAG;AACH;;AAEA,qBAAqB,oBAAoB;AACzC,SAAS,iCAAiC;AAC1C,8BAA8B,mDAAmD;AACjF;AACA,cAAc,wCAAwC;AACtD;AACA;AACA,GAAG;AACH;;AAEA;AACA,SAAS,yBAAyB;AAClC,SAAS,oBAAoB,6BAA6B,UAAU;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2DAAS;AAC3B;AACA,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa,0BAA0B;AACvC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc,2BAA2B;AACzC,cAAc,wDAAwD;AACtE;;AAEA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA,QAAQ,4DAAU;AAClB;AACA;AACA,GAAG;;AAEH;AACA;AACA,6BAA6B,4DAAU;AACvC;AACA;AACA;AACA;AACA,cAAc,4DAAU;AACxB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,YAAY;AACvB,WAAW,yBAAyB;AACpC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,0DAAQ;AACjB;;AAEA;AACA,cAAc,2BAA2B;AACzC,cAAc,wDAAwD;AACtE,cAAc,kDAAkD;AAChE;;AAEA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,4DAAU;AACxB;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,mBAAmB;AAC9B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,WAAW,0DAAQ;AACnB;AACA;;AAEA;AACA,cAAc,2BAA2B;AACzC,cAAc,2BAA2B;AACzC,cAAc,sDAAsD;AACpE;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA,iBAAiB,4DAAU;AAC3B;AACA;AACA;;AAEA;AACA,WAAW,yBAAyB;AACpC,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,0DAAQ;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,yDAAO,yBAAyB,yDAAO;AAChD;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,QAAQ,oBAAoB,cAAc;AACxF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yDAAO;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,gEAAc;AACvB,SAAS,gEAAc;AACvB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,yDAAO;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,6CAAO;;AAEnC;AACA,WAAW,MAAM,WAAW,qBAAqB,yCAAyC,2DAAS;AACnG,uBAAuB,KAAK;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,8BAA8B,6CAAO;;AAErC;AACA,WAAW,MAAM,WAAW,qBAAqB,yCAAyC,2DAAS;AACnG,uBAAuB,KAAK;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,yDAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B,eAAe;AACf,MAAM;AACN;AACA;AACA,oBAAoB,2DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,yBAAyB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB,4BAA4B,2DAAS;AAC1F;AACA;AACA;AACA;;AAEA;AACA,SAAS,cAAc;AACvB;AACA;AACA;AACA,sBAAsB;AACtB,oBAAoB;AACpB,IAAI;AACJ;AACA,sBAAsB;AACtB,oBAAoB;AACpB;AACA,UAAU;AACV;;AAEA;AACA,SAAS,wBAAwB;AACjC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf,IAAI;AACJ;AACA,iBAAiB;AACjB,eAAe;AACf;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,yEAAyE;AAClF,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,WAAW;AACjC,kCAAkC,qCAAqC,UAAU,2DAAS;AAC1F;AACA;AACA,gBAAgB,uEAAqB,gBAAgB,qBAAqB;AAC1E,KAAK;AACL;AACA;AACA;;AAEA,uBAAuB,6BAA6B;AACpD;AACA,kBAAkB,2DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA,qCAAqC,yDAAyD;AAC9F;AACA;AACA;AACA,qCAAqC,aAAa,2BAA2B,6DAA6D,GAAG;AAC7I;AACA;AACA,8CAA8C,mFAAmF;AACjI;AACA,wJAAwJ,gDAAE;;AAE1J,6BAA6B,6CAAO;;AAEpC;AACA;AACA;AACA,qBAAqB;AACrB,aAAa,WAAW;AACxB;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe,SAAS,+BAA+B;AACrF;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,2BAA2B;;AAEtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,4CAA4C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA,yBAAyB,KAAK,GAAG,aAAa;AAC9C,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB,2DAA2D,uEAAqB;AAChF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,2BAA2B;AAC3B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;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;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,eAAe,SAAS,+BAA+B;AACtF;AACA,uHAAuH,eAAe;AACtI;;AAEA,uBAAuB,aAAa,GAAG,yBAAyB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,KAAK,OAAO,yBAAyB;AAChE;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;AACA;AACA;AACA,2BAA2B,KAAK;AAChC;AACA;AACA;AACA,8BAA8B,KAAK;AACnC;AACA;AACA,UAAU;AACV;;AAEA;AACA,SAAS,MAAM;AACf,SAAS,cAAc;AACvB,UAAU;AACV;;AAEA,8BAA8B,eAAe;AAC7C;AACA,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,eAAe;AAC5C;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,2DAAS;AAC3B;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;;AAEA;AACA,SAAS,cAAc;AACvB;AACA;AACA,oBAAoB,gDAAE,kBAAkB,gDAAE,cAAc,gDAAE,mBAAmB,gDAAE;AAC/E;;AAEA;AACA,SAAS,wBAAwB;AACjC,SAAS,kBAAkB;AAC3B,cAAc;AACd,cAAc;AACd,mFAAmF,2DAAS;AAC5F;AACA,2CAA2C,yBAAyB;AACpE;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2DAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,iEAAiE;AAC3F,IAAI;AACJ,8BAA8B,iEAAiE;AAC/F,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,SAAS,oBAAoB;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,cAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,yBAAyB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,eAAe;AACxB;AACA,cAAc;AACd,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,SAAS,gCAAgC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;;AAEA,oCAAoC,KAAK,GAAG,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,uBAAuB;AAChC,SAAS,4CAA4C;AACrD,cAAc;AACd,cAAc;AACd;AACA,iDAAiD,gDAAE;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uCAAuC;AACxE,iCAAiC,mCAAmC;AACpE;;AAEA,gCAAgC,6CAAO;;AAEvC;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA,WAAW,cAAc;AACzB;AACA,kCAAkC,mBAAmB,GAAG;AACxD,kCAAkC,qBAAqB,yCAAyC,2DAAS;AACzG;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,0CAA0C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gDAAE,aAAa,gDAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,iCAAiC;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,2DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,6CAAO;;AAErC;AACA,WAAW,qBAAqB;AAChC;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,kCAAkC,kCAAkC,GAAG;AACvE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,6CAAO;;AAEvC;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB,yCAAyC,2DAAS;AACzG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA,uBAAuB,gDAAE;AACzB,yBAAyB,yDAAW;AACpC,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA4B,iBAAiB,GAAG,oBAAoB;AACpE;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uDAAiB,aAAa,wBAAwB;AACxD;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;;AAEA;AACA,oCAAoC,0DAAQ;;;AAG5C;AACA,cAAc,2BAA2B;AACzC,cAAc,gCAAgC;AAC9C,cAAc,wDAAwD;AACtE;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,4CAA4C,KAAK;AACjD;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,yBAAyB;AACpC,WAAW,YAAY;AACvB;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,yDAAO;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gDAAU;AACvB;;AAEA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yDAAO;AACpC;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,sCAAsC,mDAAa;AACnD,GAAG;;AAEH;AACA,IAAI,oDAAc;AAClB,GAAG;;AAEH;AACA,IAAI,sDAAgB;AACpB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,QAAQ,0DAAQ;AAChB;AACA;AACA,YAAY,0DAAQ;AACpB;AACA;AACA;AACA,OAAO;AACP,MAAM,SAAS,yDAAO;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,6CAA6C,2CAA2C;AACxF,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,SAAS,gBAAgB;AACzB;;AAEA;AACA,IAAI,0DAAQ;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI,4DAAU;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB;AACrD;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEiC;;;;;;;;;;;;;;;;;;;;AClrFM;AACW;;AAElD;;AAEA;;AAEA,4BAA4B,2CAA2C;;;AAGvE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,YAAY,qBAAqB;AACjC;AACA;AACA;AACA;AACA;;AAEA,cAAc,yDAAyD;AACvE;;;AAGA;AACA,cAAc,yDAAmB;AACjC,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,MAAM,OAAO;AACb;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,WAAW,gEAAc;AACzB,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;;AAEA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,2CAA2C;AAC9E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,gEAAc;;AAE3C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;AAGA;;AAEA;;;AAGA,iCAAiC,2CAA2C;;AAE5E;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C;;AAE1C;;;AAGA;;AAEA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;;AAEA,6BAA6B,yCAAyC;;AAEtE;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;;AAEH;;AAEA,6BAA6B,yCAAyC;;AAEtE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;;AAEA;;AAEA,iEAAe,eAAe,EAAC;AACwB;;;;;;;;;;;ACroBvD;AACA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAKwB;AAC9B,CAAC;AACD,8BAA8B;AAC9B;AACA;;AAEA;AACA,kDAAkD,8BAAmB;;;;AAIrE;AACA;AACA,CAAC;AACD;;AAEA,kBAAkB,8BAAmB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,kDAAkD,+BAAmB;;;;AAIrE;AACA;AACA,CAAC;AACD;;AAEA,kBAAkB,+BAAmB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,kDAAkD,+BAAmB;;;;AAIrE;AACA;AACA,CAAC;AACD;;AAEA,kBAAkB,+BAAmB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,kDAAkD,+BAAmB;;;;AAIrE;AACA;AACA,CAAC;AACD;;AAEA,kBAAkB,+BAAmB;;AAErC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,kDAAkD,+BAAmB;;;;AAIrE;AACA,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,kCAAkC,+BAAmB;AACrD;;;AAGA,gCAAgC,+BAAmB;;AAEnD,gBAAgB,+BAAmB;;AAEnC,eAAe,+BAAmB;;AAElC,cAAc,+BAAmB;;AAEjC,aAAa,+BAAmB;;AAEhC,mBAAmB,+BAAmB;;AAEtC,kBAAkB,+BAAmB;;AAErC,iBAAiB,+BAAmB;;AAEpC,cAAc,+BAAmB;;AAEjC,iBAAiB,+BAAmB;;AAEpC,8BAA8B,+BAAmB;;AAEjD,kCAAkC,+BAAmB;AACrD,UAAU,sEAAsE;;;AAGhF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA,MAAM;;;AAGN,+CAA+C;;AAE/C,2CAA2C;;AAE3C;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;;;AAGA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,0EAA0E;AAC1E,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,0EAA0E;AAC1E,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN,8DAA8D;;AAE9D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iDAAiD;AACzD,QAAQ,iDAAiD;AACzD,QAAQ,qCAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uDAAuD;AACjE,UAAU,wDAAwD;AAClE,UAAU,2CAA2C;AACrD;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,UAAU,yDAAyD;AACnE,UAAU,yCAAyC;AACnD,UAAU;AACV;AACA;AACA,WAAW;AACX;AACA,MAAM;AACN;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT,QAAQ;;;AAGR;AACA;AACA,QAAQ;;;AAGR;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA,MAAM;;;AAGN;AACA;;AAEA,wEAAwE;;;AAGxE;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B;;AAEA,mEAAmE;;;AAGnE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,0CAA0C;;;AAG1C;AACA;AACA;;AAEA,kDAAkD;;AAElD;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;;;AAGN,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,yEAAyE;;;AAGzE;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM;;;AAGN;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK,GAAG;AACR;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,oDAAoD;;AAEpD;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,GAAG;AACR;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;;AAER;AACA,wEAAwE;;AAExE;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uCAAuC;;AAEvC;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,oDAAoD;;AAEpD;AACA;AACA,wFAAwF;;AAExF;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sDAAsD;AACtD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD;;AAEpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;;;AAGR;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,kCAAkC;AAClC;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,sIAAsI;;AAEtI;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,kCAAkC;;AAElC,0DAA0D;;AAE1D;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;;;AAGtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA,sBAAsB;;;AAGtB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC;;AAEvC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA,CAAC;;AAED,cAAc,gCAAmB;;AAEjC,kBAAkB,gCAAmB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,MAAM;AACN;;;AAGA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mEAAmE;;AAEnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,iCAAiC,gCAAmB;;AAEpD;;AAEA,kCAAkC,gCAAmB;;AAErD;;AAEA,8BAA8B,gCAAmB;;AAEjD;;AAEA,6BAA6B,gCAAmB;;AAEhD;;AAEA,sCAAsC,gCAAmB;;AAEzD;;AAEA,uCAAuC,gCAAmB;;AAE1D;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA,CAAC;;AAED,cAAc,gCAAmB;;AAEjC,kBAAkB,gCAAmB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA,CAAC;;AAED,kBAAkB,gCAAmB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gDAAgD;;AAEhD;AACA,8CAA8C;;AAE9C,wDAAwD;;AAExD;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA,CAAC;;AAED,cAAc,gCAAmB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,gCAAgC;;AAEhC,gCAAgC;;AAEhC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA,iDAAiD;AACjD;;AAEA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,wCAAwC,gCAAmB;;AAE3D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,wCAAwC,gCAAmB;;AAE3D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA,2CAA2C;;;AAG3C;AACA,SAAS;;;AAGT;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;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;;AAEA,OAAO;;AAEP;AACA,kDAAkD,gCAAmB;;;;AAIrE;AACA;AACA,CAAC;AACD;;AAEA,cAAc,gCAAmB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;AAGA;;AAEA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;AAGA;;AAEA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA,kDAAkD,iCAAmB;;;;AAIrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,aAAa,iCAAmB;;AAEhC,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;;;AAGA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,sBAAsB,sBAAsB,wBAAwB;AACvG;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,kDAAkD,iCAAmB;;;;AAIrE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,cAAc,iCAAmB;;AAEjC,8BAA8B,iCAAmB;;AAEjD,+BAA+B,iCAAmB;;AAElD,gCAAgC,iCAAmB;;AAEnD,gCAAgC,iCAAmB;;AAEnD,cAAc,iCAAmB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,kDAAkD,iCAAmB;;;;AAIrE;AACA,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,cAAc,iCAAmB;;AAEjC,8BAA8B,iCAAmB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;;AAEP;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA,gEAAgE;AAChE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE,IAAI;AACN;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA,8DAA8D,iCAAmB;;AAEjF,iCAAmB;AACnB,qBAAqB,iCAAmB;AACxC,+CAA+C;AAC/C,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,2BAA2B,IAAI;;AAE/B;AACA,mCAAmC,IAAI;;AAEvC,kDAAkD,MAAM;;AAExD;AACA,+BAA+B,IAAI;;AAEnC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,2BAA2B;;AAEpD;AACA,kBAAkB,wBAAwB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb,YAAY;AACZ;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,iEAAiE;AACrE;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,iEAAiE;AACrE;AACA,UAAU,gBAAgB;AAC1B,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,kBAAkB,gBAAgB;AAClC,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,yBAAyB,YAAY;AACrC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,SAAS;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,YAAY,kCAAkC;;AAE9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA,2BAA2B,+BAA+B;AAC1D,cAAc,0BAA0B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,SAAS;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,kCAAkC;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA,yCAAyC,UAAU;AACnD;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,UAAU;AACzD;AACA,gBAAgB,0BAA0B;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA,iCAAiC,cAAc,IAAI;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA,8BAA8B,kBAAkB;AAChD;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,iBAAiB;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,MAAM;;AAElB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,gCAAgC;AAChC,qBAAqB;;AAErB;AACA;AACA;AACA,MAAM,EAAE;;AAER;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,aAAa,IAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,iBAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,YAAY,UAAU;AACtB;;AAEA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA,cAAc,0BAA0B;;AAExC;AACA;AACA;AACA;AACA,sBAAsB,mCAAmC;AACzD,SAAS;AACT;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,gBAAgB,kBAAkB;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,iBAAiB;AACxC;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,gCAAgC,SAAS;AACzC;AACA,WAAW;AACX;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,YAAY,gBAAgB;AAC5B;;AAEA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA,gBAAgB,0BAA0B;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,MAAM;AACN,cAAc,mBAAmB;;AAEjC,cAAc,0BAA0B;;AAExC;AACA,uBAAuB,wCAAwC;AAC/D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;AAKA,OAAO;;AAEP;AACA,8DAA8D,iCAAmB;;AAEjF;AACA,iCAAmB;;AAEnB;AACA,iCAAmB;AACnB,4CAA4C,mCAAmC;AAC/E,kCAAkC,uCAAuC;AACzE,qCAAqC,0CAA0C;AAC/E,kCAAkC,uCAAuC;AACzE,0BAA0B,+BAA+B;AACzD,8BAA8B;AAC9B,CAAC;;AAED,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,KAAK,EAAE,EAAE;;AAEf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,KAAI,+BAA+B,CAAC;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA;;AAEA;AACA,qBAAqB,KAAI,+BAA+B,CAAC;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB;;;AAGA;AACA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe,UAAU;AACzB;;;AAGA;AACA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,KAAI,+BAA+B,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;;AAGA;AACA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA,uBAAuB,KAAI,+BAA+B,CAAC;AAC3D;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe;AACf;;;AAGA;AACA;AACA,uBAAuB,KAAI,gCAAgC,CAAC;AAC5D;;AAEA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAI,gCAAgC,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,IAAI;AACJ;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa;;AAEjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,uBAAuB,KAAI,gCAAgC,CAAC;AAC5D;;AAEA;AACA;AACA,KAAK;AACL,uBAAuB,KAAI,gCAAgC,CAAC;AAC5D;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;;;AAGA;AACA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;;AAEA,QAAQ,KAAK,EAAE,EAAE;;AAEjB;AACA;AACA;AACA;;AAEA,qDAAqD;AACrD;;AAEA;;AAEA,MAAM,KAAK,EAAE,EAAE;;AAEf;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,KAAK,EAAE,uBAAuB;;AAEtC;AACA;;AAEA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,KAAI,gCAAgC,CAAC;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,KAAI,gCAAgC,CAAC;AAC1D;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,UAAU;AACvB;;AAEA;AACA,6EAA6E,aAAa;AAC1F;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,KAAI,gCAAgC,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,6CAA6C,YAAY;AACzD;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,IAAI,KAAK,EAAE,EAAE;;;;;AAKb,OAAO;;AAEP,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,iCAAmB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iCAAmB;AAC9B;AACA,0BAA0B,4BAA4B;AACtD,0BAA0B;AAC1B,YAAY,iCAAmB,aAAa,WAAW;AACvD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW,iCAAmB;AAC9B;AACA,gBAAgB,iCAAmB,wBAAwB,iCAAmB;AAC9E,oDAAoD,wCAAwC;AAC5F;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW,iCAAmB,2BAA2B;AACzD,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW,iCAAmB;AAC9B;AACA,kEAAkE,iBAAiB;AACnF;AACA,2DAA2D,aAAa;AACxE;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,yEAAyE,iCAAmB;AAC5F,8FAA8F,iCAAmB;AACjH,4EAA4E,iCAAmB;AAC/F,iGAAiG,iCAAmB;AACpH,2EAA2E,iCAAmB;AAC9F,0EAA0E,iCAAmB;AAC7F,2EAA2E,iCAAmB;;;;;;;;AAQ9F;;AAEA,CAAC;AACD;AACA;AACA,UAAU;AACV;AACA,CAAC;;;;;;;;;;;;;;;ACt8OD,iBAAiB,oCAAoC,iCAAiC,IAAI,uFAAuF,SAAS,yBAAyB,cAAc,kBAAkB,WAAW,iEAAiE,6OAA6O,4IAA4I,6BAA6B,oBAAoB,oPAAoP,0DAA0D,qRAAqR,+BAA+B,yBAAyB,+CAA+C,yBAAyB,wEAAwE,KAAK,+BAA+B,IAAI,8GAA8G,IAAI,yFAAyF,8BAA8B,qCAAqC,8BAA8B,4CAA4C,oCAAoC,6CAA6C,oBAAoB,21BAA21B,yBAAyB,8BAA8B,wCAAwC,WAAW,GAAG,2BAA2B,4CAA4C,uBAAuB,sIAAsI,oEAAoE,iBAAiB,iHAAiH,yDAAyD,oDAAoD,+BAA+B,sBAAsB,0EAA0E,mBAAmB,0BAA0B,6EAA6E,yCAAyC,gFAAgF,+BAA+B,mQAAmQ,oCAAoC,sOAAsO,8BAA8B,sLAAsL,gCAAgC,sSAAsS,oCAAoC,MAAM,YAAY,2BAA2B,oGAAoG,kDAAkD,mGAAmG,sCAAsC,oCAAoC,uCAAuC,gBAAgB,mGAAmG,sCAAsC,iGAAiG,GAAG,GAAwB;;;;;;;;;;;;;;;;;;;;ACAhkL;AAC4G;AAC7B;AAC/E,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,6FAA6F,UAAU,kBAAkB,6BAA6B,WAAW,kBAAkB,sBAAsB,WAAW,kBAAkB,eAAe,gBAAgB,mBAAmB,UAAU,iDAAiD,6CAA6C,SAAS,oDAAoD,YAAY,OAAO,uBAAuB,yBAAyB,4BAA4B,gDAAgD,MAAM,uDAAuD,SAAS,OAAO,uBAAuB,4BAA4B,+BAA+B,8CAA8C,QAAQ,qDAAqD,2BAA2B,0BAA0B,WAAW,6BAA6B,+CAA+C,OAAO,sDAAsD,UAAU,2BAA2B,2BAA2B,8BAA8B,6CAA6C,0DAA0D,aAAa,WAAW,YAAY,WAAW,oBAAoB,aAAa,kBAAkB,yBAAyB,mBAAmB,eAAe,kBAAkB,gBAAgB,UAAU,OAAO,kvBAAkvB,UAAU,kBAAkB,6BAA6B,WAAW,kBAAkB,sBAAsB,WAAW,kBAAkB,eAAe,gBAAgB,mBAAmB,UAAU,iDAAiD,6CAA6C,SAAS,oDAAoD,YAAY,OAAO,uBAAuB,yBAAyB,4BAA4B,gDAAgD,MAAM,uDAAuD,SAAS,OAAO,uBAAuB,4BAA4B,+BAA+B,8CAA8C,QAAQ,qDAAqD,2BAA2B,0BAA0B,WAAW,6BAA6B,+CAA+C,OAAO,sDAAsD,UAAU,2BAA2B,2BAA2B,8BAA8B,6CAA6C,0DAA0D,aAAa,WAAW,YAAY,WAAW,oBAAoB,aAAa,kBAAkB,yBAAyB,mBAAmB,eAAe,kBAAkB,gBAAgB,UAAU,mBAAmB;AACzgH;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;ACP1B;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,iBAAiB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACjEa;;AAEb,kCAAkC;;AAElC,8BAA8B;;AAE9B,kDAAkD,gBAAgB,gEAAgE,wDAAwD,6DAA6D,sDAAsD;;AAE7S,uCAAuC,uDAAuD,uCAAuC,SAAS,OAAO,oBAAoB;;AAEzK,yCAAyC,8FAA8F,wBAAwB,eAAe,eAAe,gBAAgB,YAAY,MAAM,wBAAwB,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,mDAAmD,UAAU,sBAAsB;;AAEve,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;;;;;;;ACnCA,eAAe,KAAoD,oBAAoB,CAAyE,CAAC,kBAAkB,aAAa,cAAc,iFAAiF,gBAAgB,aAAa,oGAAoG,KAAK,gBAAgB,8EAA8E,gBAAgB,YAAY,WAAW,KAAK,WAAW,+GAA+G,kBAAkB,uCAAuC,iBAAiB,aAAa,QAAQ,6BAA6B,wFAAwF,sBAAsB,wJAAwJ,IAAI,KAAK,mBAAmB,KAAK,SAAS,gBAAgB,+GAA+G,gCAAgC,KAAK,wEAAwE,cAAc,mJAAmJ,2BAA2B,wCAAwC,8EAA8E,KAAK,cAAc,+DAA+D,4KAA4K,cAAc,sCAAsC,mEAAmE,iBAAiB,eAAe,mFAAmF,GAAG,kBAAkB,eAAe,8EAA8E,iBAAiB,GAAG,KAAK,gBAAgB,4BAA4B,0BAA0B,GAAG,gBAAgB,4BAA4B,6BAA6B,GAAG,gBAAgB,+BAA+B,gBAAgB,KAAK,kBAAkB,EAAE,iCAAiC,8EAA8E,cAAc,0HAA0H,uBAAuB,iCAAiC,yBAAyB,iBAAiB,WAAW,QAAQ,iEAAiE,iBAAiB,WAAW,cAAc,EAAE,cAAc,gEAAgE,wIAAwI,gHAAgH,cAAc,wBAAwB,cAAc,uBAAuB,cAAc,wEAAwE,kBAAkB,aAAa,6BAA6B,SAAS,aAAa,OAAO,uLAAuL,aAAa,iDAAiD,sHAAsH,8CAA8C,oBAAoB,WAAW,KAAK,MAAM,WAAW,8BAA8B,+CAA+C,KAAK,6BAA6B,iBAAiB,OAAO,kBAAkB,6CAA6C,qDAAqD,KAAK,MAAM,2BAA2B,0FAA0F,+HAA+H,6HAA6H,qEAAqE,SAAS,6BAA6B,0BAA0B,cAAc,IAAI,MAAM,KAAK,KAAK,uCAAuC,qDAAqD,SAAS,6BAA6B,0BAA0B,cAAc,IAAI,MAAM,KAAK,gCAAgC,aAAa,yKAAyK,cAAc,2BAA2B,cAAc,yBAAyB,cAAc,wCAAwC,cAAc,wBAAwB,cAAc,uCAAuC,cAAc,6CAA6C,cAAc,eAAe,gBAAgB,0CAA0C,cAAc,SAAS,iCAAiC,QAAQ,2BAA2B,SAAS,gBAAgB,cAAc,yCAAyC,aAAa,mIAAmI,sBAAsB,2BAA2B,oCAAoC,gBAAgB,oBAAoB,SAAS,iBAAiB,wCAAwC,GAAG,4BAA4B,sBAAsB,iBAAiB,sEAAsE,cAAc,gDAAgD,+BAA+B,4CAA4C,kCAAkC,SAAS,8CAA8C,OAAO,wHAAwH,iDAAiD,mBAAmB,wDAAwD,0BAA0B,OAAO,UAAU,2CAA2C,yCAAyC,6CAA6C,4DAA4D,EAAE,cAAc,kCAAkC,gBAAgB,oBAAoB,gBAAgB,kBAAkB,oBAAoB,uBAAuB,QAAQ,+BAA+B,MAAM,qBAAqB,uBAAuB,+BAA+B,iBAAiB,cAAc,qCAAqC,aAAa,4BAA4B,uBAAuB,EAAE,4BAA4B,sBAAsB,+BAA+B,KAAK,qDAAqD,EAAE,gCAAgC,mCAAmC,IAAI,KAAK,uBAAuB,mDAAmD,KAAK,GAAG,gBAAgB,eAAe,kBAAkB,iBAAiB,gBAAgB,qbAAqb,cAAc,yDAAyD,mBAAmB,4gCAA4gC,eAAe,aAAa,8BAA8B,cAAc,uLAAuL,KAAK,ycAAyc,gBAAgB,uBAAuB,8CAA8C,OAAO,2DAA2D,sFAAsF,8DAA8D,0DAA0D,oBAAoB,EAAE,6BAA6B,cAAc,6EAA6E,4BAA4B,iDAAiD,+CAA+C,kXAAkX,KAAK,mBAAmB,sCAAsC,4DAA4D,oCAAoC,2BAA2B,wCAAwC,4GAA4G,EAAE,4BAA4B,qBAAqB,sBAAsB,WAAW,kRAAkR,8BAA8B,8CAA8C,+GAA+G,+DAA+D,kCAAkC,uJAAuJ,EAAE,iCAAiC,yJAAyJ,EAAE,+BAA+B,4DAA4D,EAAE,sCAAsC,mCAAmC,EAAE,wCAAwC,qCAAqC,EAAE,8CAA8C,4EAA4E,EAAE,6BAA6B,yBAAyB,EAAE,8BAA8B,yBAAyB,EAAE,+BAA+B,4vCAA4vC,KAAK,GAAG,cAAc,iBAAiB,iDAAiD,8HAA8H,8CAA8C,qNAAqN,4DAA4D,+CAA+C,eAAe,6CAA6C,cAAc,6CAA6C,wIAAwI,KAAK,wGAAwG,uBAAuB,yRAAyR,meAAme,oBAAoB,uBAAuB,qCAAqC,wBAAwB,sBAAsB,4BAA4B,KAAK,4EAA4E,uTAAuT,uDAAuD,qBAAqB,MAAM,kCAAkC,oDAAoD,8EAA8E,WAAW,0BAA0B,uBAAuB,KAAK,MAAM,4BAA4B,YAAY,mBAAmB,kBAAkB,gCAAgC,eAAe,yFAAyF,gFAAgF,uBAAuB,UAAU,wCAAwC,4BAA4B,yDAAyD,4DAA4D,mBAAmB,gBAAgB,KAAK,wBAAwB,4CAA4C,cAAc,yBAAyB,0BAA0B,iBAAiB,EAAE,iBAAiB,iBAAiB,gBAAgB,yEAAyE,oFAAoF,8MAA8M,sBAAsB,uDAAuD,oBAAoB,yDAAyD,iBAAiB,qDAAqD,oIAAoI,gCAAgC,aAAa,8BAA8B,wBAAwB,6BAA6B,eAAe,sJAAsJ,2BAA2B,2CAA2C,sDAAsD,EAAE,+BAA+B,gVAAgV,EAAE,kCAAkC,gUAAgU,EAAE,gCAAgC,WAAW,iHAAiH,qEAAqE,QAAQ,EAAE,6BAA6B,gYAAgY,EAAE,+BAA+B,kBAAkB,6EAA6E,kCAAkC,EAAE,yCAAyC,sDAAsD,EAAE,kCAAkC,2FAA2F,KAAK,gBAAgB,aAAa,uEAAuE,UAAU,gJAAgJ,uWAAuW,sBAAsB,sDAAsD,oBAAoB,wDAAwD,iBAAiB,MAAM,aAAa,kCAAkC,0DAA0D,KAAK,oMAAoM,sCAAsC,oUAAoU,EAAE,gCAAgC,WAAW,2dAA2d,gQAAgQ,QAAQ,EAAE,6BAA6B,gBAAgB,2YAA2Y,wDAAwD,oFAAoF,4FAA4F,0BAA0B,uUAAuU,iFAAiF,4FAA4F,yBAAyB,6IAA6I,EAAE,oCAAoC,SAAS,6CAA6C,qCAAqC,4HAA4H,UAAU,EAAE,mCAAmC,SAAS,2DAA2D,EAAE,yCAAyC,8DAA8D,6GAA6G,KAAK,GAAG,oBAAoB,wFAAwF,sCAAsC,UAAU,6aAA6a,oBAAoB,yHAAyH,6FAA6F,yCAAyC,iCAAiC,gEAAgE,0FAA0F,oCAAoC,gCAAgC,iBAAiB,oMAAoM,kBAAkB,SAAS,8HAA8H,SAAS,IAAI,gBAAgB,4CAA4C,UAAU,2BAA2B,4BAA4B,8BAA8B,yHAAyH,0CAA0C,uBAAuB,+DAA+D,WAAW,qGAAqG,mBAAmB,mHAAmH,8GAA8G,2DAA2D,qBAAqB,0BAA0B,oBAAoB,iBAAiB,iBAAiB,kFAAkF,cAAc,YAAY,sDAAsD,GAAG,cAAc,kCAAkC,yFAAyF,oBAAoB,uJAAuJ,+EAA+E,mDAAmD,oCAAoC,oDAAoD,MAAM,iCAAiC,eAAe,sBAAsB,6EAA6E,yEAAyE,uGAAuG,yEAAyE,8BAA8B,YAAY,oBAAoB,qDAAqD,mFAAmF,4IAA4I,4BAA4B,uBAAuB,EAAE,sBAAsB,EAAE,wFAAwF,iBAAiB,aAAa,gEAAgE,yBAAyB,yJAAyJ,0CAA0C,aAAa,mCAAmC,QAAQ,gGAAgG,iNAAiN,iDAAiD,wDAAwD,2DAA2D,oEAAoE,sDAAsD,EAAE,sCAAsC,gBAAgB,4BAA4B,gBAAgB,gBAAgB,uGAAuG,aAAa,2BAA2B,uEAAuE,oFAAoF,iCAAiC,mBAAmB,gCAAgC,8EAA8E,qBAAqB,cAAc,0BAA0B,uBAAuB,YAAY,2BAA2B,KAAK,SAAS,mBAAmB,SAAS,SAAS,wDAAwD,mEAAmE,sBAAsB,4BAA4B,UAAU,yBAAyB,GAAG,sDAAsD,MAAM,IAAI,kDAAkD,SAAS,wCAAwC,qBAAqB,mBAAmB,yCAAyC,+BAA+B,iDAAiD,EAAE,kCAAkC,qKAAqK,wOAAwO,EAAE,kCAAkC,iCAAiC,EAAE,sCAAsC,4CAA4C,KAAK,gBAAgB,kBAAkB,sDAAsD,aAAa,kCAAkC,mIAAmI,0BAA0B,sDAAsD,yCAAyC,mCAAmC,EAAE,mOAAmO,sCAAsC,4BAA4B,wEAAwE,EAAE,khBAAkhB,yGAAyG,gIAAgI,4DAA4D,6BAA6B,oBAAoB,6FAA6F,mFAAmF,oBAAoB,cAAc,IAAI,iCAAiC,gDAAgD,EAAE,uCAAuC,0JAA0J,cAAc,sBAAsB,mCAAmC,sBAAsB,qEAAqE,EAAE,4CAA4C,2CAA2C,eAAe,WAAW,uCAAuC,mBAAmB,0CAA0C,eAAe,4CAA4C,iBAAiB,oEAAoE,6JAA6J,oBAAoB,qBAAqB,GAAG,GAAG,EAAE,8BAA8B,4CAA4C,EAAE,iCAAiC,qHAAqH,yDAAyD,6FAA6F,KAAK,uLAAuL,4kBAA4kB,wFAAwF,yBAAyB,wBAAwB,UAAU,8CAA8C,QAAQ,gDAAgD,uGAAuG,MAAM,0BAA0B,OAAO,0BAA0B,QAAQ,qCAAqC,YAAY,qCAAqC,OAAO,sBAAsB,MAAM,s9CAAs9C,2xBAA2xB,SAAS,mFAAmF,QAAQ,+EAA+E,QAAQ,2BAA2B,eAAe,aAAa,gEAAgE,wHAAwH,4CAA4C,aAAa,4BAA4B,gCAAgC,+BAA+B,uCAAuC,8BAA8B,qCAAqC,EAAE,4BAA4B,gIAAgI,oCAAoC,+EAA+E,mCAAmC,SAAS,qCAAqC,2IAA2I,iHAAiH,6EAA6E,QAAQ,sCAAsC,4EAA4E,6BAA6B,wDAAwD,2gBAA2gB,EAAE,8BAA8B,+DAA+D,mBAAmB,EAAE,iCAAiC,gIAAgI,sCAAsC,qDAAqD,yCAAyC,0DAA0D,yDAAyD,KAAK,eAAe,0BAA0B,iHAAiH,wEAAwE,6EAA6E,GAAG,gSAAgS,EAAE,qCAAqC,WAAW,0CAA0C,gCAAgC,0DAA0D,0BAA0B,mCAAmC,+FAA+F,qFAAqF,oCAAoC,gCAAgC,GAAG,2CAA2C,gCAAgC,IAAI,EAAE,iCAAiC,8BAA8B,EAAE,iCAAiC,8BAA8B,EAAE,iCAAiC,8DAA8D,qIAAqI,+EAA+E,EAAE,mCAAmC,+DAA+D,6DAA6D,8BAA8B,4CAA4C,0CAA0C,6EAA6E,kBAAkB,yBAAyB,2CAA2C,KAAK,0DAA0D,uCAAuC,6QAA6Q,+BAA+B,6EAA6E,+DAA+D,yBAAyB,GAAG,EAAE,mCAAmC,gEAAgE,0CAA0C,gFAAgF,sPAAsP,EAAE,yCAAyC,0FAA0F,mXAAmX,IAAI,kOAAkO,iJAAiJ,2EAA2E,iBAAiB,6EAA6E,GAAG,KAAK,6EAA6E,qIAAqI,2EAA2E,iBAAiB,6EAA6E,GAAG,uBAAuB,YAAY,uBAAuB,EAAE,uCAAuC,kCAAkC,2BAA2B,qCAAqC,8EAA8E,6DAA6D,MAAM,wXAAwX,UAAU,kOAAkO,mFAAmF,yHAAyH,EAAE,uFAAuF,yIAAyI,uHAAuH,+GAA+G,IAAI,EAAE,qCAAqC,0BAA0B,EAAE,+CAA+C,wCAAwC,+BAA+B,EAAE,uCAAuC,SAAS,yCAAyC,oCAAoC,kEAAkE,qCAAqC,yBAAyB,EAAE,yCAAyC,SAAS,yCAAyC,oCAAoC,qCAAqC,yBAAyB,EAAE,uCAAuC,SAAS,yCAAyC,oCAAoC,iEAAiE,qCAAqC,yBAAyB,EAAE,wCAAwC,SAAS,yCAAyC,oCAAoC,qCAAqC,uFAAuF,EAAE,oCAAoC,WAAW,0BAA0B,SAAS,gCAAgC,yCAAyC,IAAI,iDAAiD,4HAA4H,8BAA8B,iCAAiC,2BAA2B,EAAE,wCAAwC,SAAS,sCAAsC,wCAAwC,MAAM,EAAE,mCAAmC,gBAAgB,2KAA2K,yCAAyC,IAAI,2DAA2D,GAAG,SAAS,mGAAmG,yCAAyC,IAAI,mGAAmG,SAAS,EAAE,6CAA6C,6BAA6B,oBAAoB,IAAI,EAAE,mCAAmC,wKAAwK,EAAE,sCAAsC,qEAAqE,EAAE,2CAA2C,mBAAmB,EAAE,2CAA2C,SAAS,mFAAmF,iCAAiC,mDAAmD,oBAAoB,EAAE,6BAA6B,WAAW,uBAAuB,oCAAoC,iBAAiB,0JAA0J,GAAG,2MAA2M,wBAAwB,QAAQ,iBAAiB,QAAQ,iBAAiB,SAAS,oCAAoC,gDAAgD,aAAa,iCAAiC,gRAAgR,2GAA2G,uCAAuC,8BAA8B,4GAA4G,qDAAqD,kCAAkC,iDAAiD,qDAAqD,kCAAkC,uEAAuE,uCAAuC,uKAAuK,kCAAkC,gHAAgH,wEAAwE,yCAAyC,YAAY,iBAAiB,EAAE,8BAA8B,kEAAkE,4CAA4C,+HAA+H,wFAAwF,SAAS,wHAAwH,WAAW,8CAA8C,kIAAkI,IAAI,MAAM,8EAA8E,OAAO,2CAA2C,iCAAiC,oSAAoS,8DAA8D,8CAA8C,sBAAsB,iIAAiI,IAAI,iGAAiG,QAAQ,EAAE,8BAA8B,aAAa,EAAE,+CAA+C,kBAAkB,0RAA0R,EAAE,4BAA4B,gEAAgE,yDAAyD,EAAE,6BAA6B,WAAW,uBAAuB,gBAAgB,iFAAiF,iBAAiB,SAAS,yBAAyB,8LAA8L,iCAAiC,oNAAoN,8FAA8F,wEAAwE,cAAc,oBAAoB,yNAAyN,6CAA6C,gEAAgE,IAAI,EAAE,+BAA+B,+EAA+E,EAAE,6BAA6B,8DAA8D,4EAA4E,qBAAqB,wBAAwB,GAAG,EAAE,+BAA+B,iBAAiB,EAAE,gCAAgC,8EAA8E,gCAAgC,kCAAkC,0BAA0B,8BAA8B,+BAA+B,IAAI,EAAE,sCAAsC,gDAAgD,EAAE,+BAA+B,eAAe,KAAK,GAAG,kBAAkB,+DAA+D,aAAa,mBAAmB;;;;;;;;;;ACA35tD;AACA,CAAC,KAA4D;AAC7D,CAAC,CACuE;AACxE,CAAC,6BAA6B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,2BAA2B,oBAAoB,+BAA+B,oBAAoB,mBAAmB,6BAA6B,aAAa,gBAAgB,eAAe,mBAAmB;;AAE1P,yFAAyF,cAAc;AACvG,+JAA+J;AAC/J,kDAAkD,gBAAgB,yCAAyC;AAC3G;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,cAAc;AACd;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,YAAY,mBAAmB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,gBAAgB,uBAAuB;AACvC;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;;AAEA;;AAEA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,WAAW;AACX;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;;AAEA;;AAEA;AACA;AACA,YAAY;;AAEZ;AACA;AACA,YAAY;;AAEZ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,YAAY;AACZ;AACA,YAAY;;AAEZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;;AAEA,gDAAgD,aAAa;;AAE7D,CAAC;;;;;;;;;;;ACn0DD;AACA,EAAE,KAA4D;AAC9D,EAAE,CACuE;AACzE,CAAC,6BAA6B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,+FAA+F;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,wBAAwB;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA,sBAAsB;AACtB;AACA,mBAAmB;AACnB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,WAAW,2CAA2C;;AAEtD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,6IAA6I;AAC7I;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,6EAA6E,aAAa;AAC1F;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,sEAAsE,IAAI,EAAE,IAAI;AAChF;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uFAAuF;;AAEvF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,mBAAmB;AACnB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,6FAA6F;AAC7F,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;;AAEA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;;AAEA,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,aAAa;AACb;AACA;;AAEA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,6EAA6E,eAAe;AAC5F;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA,yCAAyC;AACzC;;AAEA;AACA;AACA;AACA,QAAQ;AACR,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,8CAA8C;AAC9C,KAAK;AACL;AACA,4CAA4C;AAC5C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,+DAA+D;AAC/D;;AAEA;AACA;AACA,kGAAkG;AAClG;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;;AAEA,2BAA2B;AAC3B;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc,kBAAkB;AAC/E;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC;AAChC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA,cAAc;AACd;;AAEA;AACA,cAAc;AACd;;AAEA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,gQAAgQ;AAChQ,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6DAA6D,+CAA+C,aAAa,IAAI,MAAM;;AAEnI,CAAC;;;;;;;;;;;AC/4JD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;AAChD,EAAE,iCAAO,EAAE,mCAAG;AACd;AACA,GAAG;AAAA,kGAAE;AACL,GAAG,KAAK,EAIN;AACF,CAAC,SAAS,qBAAM,mBAAmB,qBAAM;;AAEzC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,iBAAiB;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,aAAa;AAC1B,aAAa,oBAAoB;AACjC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,aAAa;AAC1B,aAAa,sBAAsB;AACnC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,GAAG;AACH;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACloBD,iBAAiB,mBAAO,CAAC,uEAAuB;AAChD,EAAE,mBAAO,CAAC,yEAAwB;AAClC;;;;;;;;;;;ACFA,yGAA+C;;;;;;;;;;;ACA/C,uBAAuB,mBAAO,CAAC,oDAAa;AAC5C;AACA;AACA;AACA,4CAA4C,aAAa;AACzD,gDAAgD,yBAAyB;AACzE,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAA0C;AAChD;AACA,IAAI,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAC;AACvB,IAAI,KAAK,EAQN;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,qBAAM;AACjB,QAAQ,qBAAM;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,KAAK;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0BAA0B,+BAA+B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;ACxcD;AACA,MAAM,IAA0C;AAChD;AACA,IAAI,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAC;AACvB,IAAI,KAAK,EAQN;AACH,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,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;;;ACjkwBD;AACA;AACA;AACA;AACA;AACA,eAAe,KAAiD,oBAAoB,CAA2G,CAAC,iBAAiB,mBAAmB,cAAc,4BAA4B,YAAY,UAAU,iBAAiB,gEAAgE,SAAS,+BAA+B,kBAAkB,aAAa,cAAc,0BAA0B,aAAa,kBAAkB,uBAAuB,eAAe,cAAc,eAAe,6CAA6C,YAAY,iBAAiB,aAAa,cAAc,0BAA0B,aAAa,sCAAsC,SAAS,EAAE,oDAAoD,+BAA+B,0CAA0C,WAAW,IAAI,SAAS,+BAA+B,+BAA+B,8BAA8B,aAAa,EAAE,IAAI,sBAAsB,6BAA6B,0EAA0E,+CAA+C,sCAAsC,EAAE,EAAE,kBAAkB,uBAAuB,kDAAkD,qGAAqG,4BAA4B,8BAA8B,kBAAkB,0BAA0B,+DAA+D,qBAAqB,aAAa,qCAAqC,WAAW,yBAAyB,+DAA+D,oBAAoB,2CAA2C,kBAAkB,mBAAmB,iBAAiB,iBAAiB,eAAe,aAAa,gBAAgB,8EAA8E,sCAAsC,SAAS,EAAE,iBAAiB,gBAAgB,YAAY,WAAW,KAAK,WAAW,+GAA+G,uBAAuB,wCAAwC,gBAAgB,gBAAgB,wEAAwE,iBAAiB,eAAe,kBAAkB,aAAa,6BAA6B,WAAW,yCAAyC,gFAAgF,qFAAqF,QAAQ,EAAE,6BAA6B,sCAAsC,EAAE,+BAA+B,wCAAwC,EAAE,+BAA+B,KAAK,uBAAuB,0BAA0B,kCAAkC,OAAO,wBAAwB,aAAa,KAAK,GAAG,2BAA2B,mBAAmB,eAAe,aAAa,gBAAgB,8FAA8F,qDAAqD,IAAI,iCAAiC,oGAAoG,sCAAsC,SAAS,iBAAiB,eAAe,aAAa,kDAAkD,YAAY,oBAAoB,YAAY,IAAI,iBAAiB,uGAAuG,YAAY,iBAAiB,kBAAkB,cAAc,YAAY,qCAAqC,cAAc,sCAAsC,cAAc,sBAAsB,oBAAoB,cAAc,gBAAgB,sCAAsC,aAAa,UAAU,4CAA4C,cAAc,yCAAyC,aAAa,+CAA+C,aAAa,2BAA2B,aAAa,iBAAiB,6BAA6B,0BAA0B,mCAAmC,yCAAyC,mCAAmC,+CAA+C,yIAAyI,wEAAwE,YAAY,iBAAiB,wBAAwB,qBAAqB,YAAY,iBAAiB,kBAAkB,cAAc,+CAA+C,oFAAoF,+BAA+B,EAAE,0CAA0C,YAAY,eAAe,cAAc,SAAS,YAAY,GAAG;;;;;;;;;;ACLr/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mBAAmB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtbA;AACA;AACA,oCAAoC;AACpC,eAAe,KAAoD,oBAAoB,CAA2D,CAAC,iBAAiB;AACpK;AACA;AACA,aAAa;AACb;AACA,kEAAkE,8CAA8C,yCAAyC,kCAAkC,qMAAqM,gFAAgF,kCAAkC,cAAc,oDAAoD,SAAS,6NAA6N,UAAU,+OAA+O,qDAAqD,oGAAoG;AAC5qC,8JAA8J,4CAA4C,qCAAqC,6FAA6F,sBAAsB,cAAc,iCAAiC,kBAAkB,6CAA6C,eAAe,sEAAsE,+EAA+E,kBAAkB,qIAAqI,mBAAmB,yEAAyE,4GAA4G,sBAAsB,sHAAsH,EAAE,GAAG,gCAAgC,GAAG,uBAAuB,WAAW,6HAA6H,OAAO,mBAAmB,qBAAqB,WAAW,2DAA2D,yBAAyB,uBAAuB,cAAc;;;;;;;;;;;;;ACTz9C;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,eAAe;AACf,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,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,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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,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,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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9LD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;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,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;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,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;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;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;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;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,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,kBAAkB;AAClB;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;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;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,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;;AAEA;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,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;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,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,UAAU;AACV;AACA;AACA,cAAc;AACd;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,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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;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;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,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;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,cAAc;AACd;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,SAAS;AACT,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,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;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,+CAA+C;AAC/C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,+CAA+C;AAC/C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;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,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,KAAK;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;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;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,iCAAiC;AACjC,cAAc;AACd,gCAAgC;AAChC,cAAc;AACd,mCAAmC;AACnC,cAAc;AACd,mCAAmC;AACnC,cAAc;AACd,gCAAgC;AAChC,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;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,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;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,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;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,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;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,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;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,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;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,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,sBAAsB;;AAEvB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wGAAwG,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AACnM,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2CAA2C,YAAY;AACvD;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA,mBAAmB,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACjK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;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,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,8EAAe,IAAW,OAAO,CAAC;AAClD;AACA,cAAc;AACd;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,EAAE,IAAI,EAAE;AACpC;AACA,4BAA4B,EAAE,IAAI,EAAE;AACpC;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACjM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;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,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+BAA+B;AACnD;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAmC,iBAAiB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,aAAa;AACb;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,cAAc;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;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,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,iBAAiB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sBAAsB;AAC1D;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sBAAsB;AAC1D;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,mBAAmB;AACzC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACpjLD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,iBAAiB,gCAAgC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;;AAElD;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvFa;AACb;AACA;AACA;AACA,YAAY,mBAAO,CAAC,4CAAO;AAC3B,cAAc,mBAAO,CAAC,8CAAQ;AAC9B,eAAe,mBAAO,CAAC,4DAAe;AACtC,cAAc,mBAAO,CAAC,+DAAkB;AACxC,qCAAqC,mBAAO,CAAC,6GAAyC;AACtF;AACA;AACA,gBAAgB,mBAAO,CAAC,mEAAoB;AAC5C,wBAAwB,mBAAO,CAAC,2EAAwB;AACxD,wBAAwB,mBAAO,CAAC,2EAAwB;;AAExD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW;AACX,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB;AACjB,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uDAAuD,gBAAgB;AACvE,wDAAwD,gBAAgB;AACxE,oDAAoD,gBAAgB;AACpE,mDAAmD,gBAAgB;;AAEnE;AACA;AACA,kDAAkD,gBAAgB;;AAElE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,MAAM;AACN,cAAc;AACd,MAAM;AACN,aAAa;AACb,MAAM;AACN,cAAc;AACd,MAAM;AACN;AACA,aAAa;AACb,MAAM;AACN;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;;AAEA;AACA;AACA,iBAAiB;AACjB,eAAe;;AAEf;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA,iBAAiB;AACjB,eAAe;;AAEf;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,4CAA4C,aAAa;AACzD,8CAA8C,WAAW;AACzD;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD,yBAAyB;AAC9E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;;;;;;;;;AC5kCA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;;AAEA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACnDA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;ACvIA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;AC9EA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA,0CAA0C,KAAoD,oBAAoB,CAAqH,CAAC,kBAAkB,aAAa,kBAAkB,qBAAqB,oBAAoB,yCAAyC,4BAA4B,eAAe,6BAA6B,+BAA+B,oEAAoE,sCAAsC,aAAa,qCAAqC,oCAAoC,kDAAkD,WAAW,gBAAgB,YAAY,WAAW,KAAK,WAAW,+GAA+G,kBAAkB,yCAAyC,kDAAkD,WAAW,gBAAgB,qBAAqB,iCAAiC,sCAAsC,4BAA4B,uDAAuD,sBAAsB,SAAS,cAAc,YAAY,mBAAmB,KAAK,yCAAyC,yCAAyC,YAAY,qIAAqI,gEAAgE,GAAG,SAAS,OAAO,kCAAkC,kBAAkB,kCAAkC,iBAAiB,+BAA+B,eAAe,eAAe,eAAe,qBAAqB,eAAe,qBAAqB,eAAe,wBAAwB,eAAe,qBAAqB,IAAI,8CAA8C,uCAAuC,8BAA8B,sBAAsB,sBAAsB,uBAAuB,wCAAwC,oBAAoB,mBAAmB,kBAAkB,mBAAmB,2EAA2E,gBAAgB,QAAQ,kBAAkB,6DAA6D,2DAA2D,IAAI,gCAAgC,yBAAyB,iBAAiB,gBAAgB,eAAe,8EAA8E,wKAAwK,KAAK,iBAAiB,uBAAuB,8BAA8B,KAAK,4BAA4B,kNAAkN,EAAE,+BAA+B,8LAA8L,EAAE,kCAAkC,wDAAwD,2DAA2D,4BAA4B,gBAAgB,MAAM,IAAI,EAAE,4BAA4B,uCAAuC,wOAAwO,6HAA6H,EAAE,4BAA4B,wGAAwG,SAAS,mBAAmB,WAAW,EAAE,oBAAoB,kDAAkD,IAAI,8BAA8B,+DAA+D,QAAQ,oNAAoN,UAAU,KAAK,IAAI,yBAAyB,wCAAwC,mCAAmC,8CAA8C,4BAA4B,kBAAkB,+DAA+D,WAAW,kBAAkB,GAAG,GAAG,GAAG,yBAAyB,wBAAwB,EAAE,0BAA0B,kBAAkB,IAAI,EAAE,6BAA6B,iDAAiD,KAAK,GAAG,0QAA0Q,OAAO,2eAA2e,4BAA4B,kBAAkB,QAAQ,gEAAgE,EAAE,GAAG,IAAI,8BAA8B,SAAS,UAAU,UAAU,cAAc,0CAA0C,4IAA4I,iDAAiD,0BAA0B,IAAI,gBAAgB,iBAAiB,IAAI,uCAAuC,WAAW,KAAK,OAAO,2ZAA2Z,gBAAgB,+CAA+C,eAAe,OAAO,sBAAsB,kBAAkB,gDAAgD,6DAA6D,OAAO,iCAAiC,SAAS,EAAE,gBAAgB,gBAAgB,uBAAuB,yCAAyC,6DAA6D,wDAAwD,GAAG,gBAAgB,6HAA6H,kBAAkB,kCAAkC,0DAA0D,oBAAoB,sCAAsC,cAAc,sHAAsH,cAAc,wBAAwB,IAAI,SAAS,cAAc,KAAK,IAAI,iCAAiC,gBAAgB,mGAAmG,gBAAgB,qCAAqC,UAAU,OAAO,IAAI,iCAAiC,wHAAwH,oBAAoB,qCAAqC,SAAS,EAAE,EAAE,YAAY,MAAM,+BAA+B,MAAM,gBAAgB,UAAU,gBAAgB,wBAAwB,QAAQ,uCAAuC,kBAAkB,yDAAyD,iBAAiB,eAAe,kFAAkF,SAAS,gBAAgB,6CAA6C,gBAAgB,MAAM,YAAY,SAAS,iGAAiG,+DAA+D,YAAY,cAAc,mDAAmD,cAAc,gDAAgD,wBAAwB,uBAAuB,gCAAgC,EAAE,SAAS,0HAA0H,IAAI,uHAAuH,0BAA0B,OAAO,0BAA0B,oRAAoR,uBAAuB,sBAAsB,QAAQ,yCAAyC,mCAAmC,UAAU,KAAK,IAAI,IAAI,8DAA8D,SAAS,UAAU,4EAA4E,wCAAwC,uCAAuC,kKAAkK,SAAS,SAAS,IAAI,gCAAgC,YAAY,oBAAoB,EAAE,iFAAiF,UAAU,SAAS,IAAI,iCAAiC,oEAAoE,qBAAqB,QAAQ,OAAO,oBAAoB,iBAAiB,wDAAwD,sCAAsC,uDAAuD,GAAG,+BAA+B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,iBAAiB,8BAA8B,0BAA0B,2BAA2B,EAAE,oCAAoC,2BAA2B,kBAAkB,gBAAgB,EAAE,mBAAmB,cAAc,6DAA6D,MAAM,sCAAsC,GAAG,6BAA6B,2BAA2B,cAAc,+GAA+G,GAAG,eAAe,iCAAiC,GAAG,eAAe,wDAAwD,iBAAiB,oFAAoF,eAAe,sDAAsD,oIAAoI,iBAAiB,KAAK,EAAE,eAAe,wDAAwD,8DAA8D,eAAe,+CAA+C,gDAAgD,gBAAgB,eAAe,+CAA+C,WAAW,mGAAmG,QAAQ,qCAAqC,MAAM,2BAA2B,YAAY,QAAQ,aAAa,eAAe,0BAA0B,MAAM,UAAU,iCAAiC,wBAAwB,2BAA2B,uBAAuB,EAAE,GAAG,EAAE,0BAA0B,EAAE,GAAG,EAAE,2BAA2B,EAAE,gEAAgE,iHAAiH,4FAA4F,EAAE,IAAI,2EAA2E,OAAO,mBAAmB,uBAAuB,oCAAoC,oCAAoC,UAAU,aAAa,0BAA0B,qEAAqE,+BAA+B,wCAAwC,GAAG,qBAAqB,gJAAgJ,SAAS,wBAAwB,aAAa,uHAAuH,MAAM,0EAA0E,yCAAyC,QAAQ,kBAAkB,+FAA+F,KAAK,4EAA4E,aAAa,MAAM,6DAA6D,SAAS,kFAAkF,0CAA0C,mBAAmB,qCAAqC,UAAU,IAAI,EAAE,kBAAkB,mKAAmK,oBAAoB,2CAA2C,MAAM,6BAA6B,mFAAmF,2IAA2I,kBAAkB,mBAAmB,wBAAwB,mBAAmB,4DAA4D,yCAAyC,eAAe,sCAAsC,oCAAoC,UAAU,0EAA0E,KAAK,aAAa,EAAE,mCAAmC,kBAAkB,0DAA0D,SAAS,EAAE,SAAS,eAAe,MAAM,WAAW,4CAA4C,YAAY,OAAO,SAAS,eAAe,kBAAkB,4CAA4C,8CAA8C,0BAA0B,sBAAsB,oCAAoC,qBAAqB,uCAAuC,uBAAuB,iBAAiB,iBAAiB,SAAS,IAAI,wDAAwD,WAAW,uEAAuE,uBAAuB,IAAI,uCAAuC,kBAAkB,6EAA6E,SAAS,WAAW,wBAAwB,4BAA4B,IAAI,2BAA2B,mCAAmC,gCAAgC,kBAAkB,8BAA8B,SAAS,kBAAkB,mBAAmB,oCAAoC,0BAA0B,gDAAgD,SAAS,MAAM,GAAG,iBAAiB,uBAAuB,8BAA8B,SAAS,wDAAwD,2EAA2E,aAAa,qDAAqD,4DAA4D,uCAAuC,EAAE,GAAG,EAAE,GAAG,iBAAiB,sBAAsB,gBAAgB,gBAAgB,gBAAgB,SAAS,+BAA+B,EAAE,GAAG,EAAE,kBAAkB,UAAU,GAAG,UAAU,QAAQ,gBAAgB,IAAI,6FAA6F,2BAA2B,sCAAsC,eAAe,EAAE,YAAY,YAAY,sBAAsB,mBAAmB,EAAE,SAAS,cAAc,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,UAAU,aAAa,sKAAsK,OAAO,gCAAgC,gBAAgB,IAAI,yGAAyG,ioBAAioB,0FAA0F,4GAA4G,wBAAwB,yLAAyL,gHAAgH,+BAA+B,OAAO,SAAS,8HAA8H,iBAAiB,qEAAqE,gBAAgB,GAAG,uBAAuB,sCAAsC,SAAS,uCAAuC,GAAG,+CAA+C,EAAE,GAAG,EAAE,EAAE,+JAA+J,mBAAmB,EAAE,8BAA8B,iBAAiB,6EAA6E,IAAI,gBAAgB,0BAA0B,kBAAkB,wCAAwC,EAAE,+BAA+B,wCAAwC,OAAO,mBAAmB,YAAY,IAAI,YAAY,SAAS,oFAAoF,+CAA+C,oDAAoD,oLAAoL,SAAS,SAAS,EAAE,+BAA+B,EAAE,4CAA4C,iGAAiG,MAAM,oGAAoG,MAAM,uIAAuI,MAAM,iJAAiJ,MAAM,8BAA8B,+BAA+B,kDAAkD,MAAM,kEAAkE,qBAAqB,sEAAsE,sBAAsB,iDAAiD,0BAA0B,0DAA0D,uBAAuB,mDAAmD,2BAA2B,oSAAoS,kBAAkB,wDAAwD,wKAAwK,KAAK,8EAA8E,qBAAqB,4DAA4D,0DAA0D,KAAK,iBAAiB,kCAAkC,SAAS,kCAAkC,iCAAiC,iBAAiB,gBAAgB,EAAE,oCAAoC,iBAAiB,6DAA6D,SAAS,oBAAoB,EAAE,qCAAqC,yDAAyD,WAAW,oCAAoC,4BAA4B,mCAAmC,oEAAoE,oEAAoE,sCAAsC,2EAA2E,KAAK,MAAM,sOAAsO,iCAAiC,2DAA2D,GAAG,iBAAiB,wDAAwD,EAAE,6DAA6D,4CAA4C,gCAAgC,EAAE,mBAAmB,kCAAkC,eAAe,iGAAiG,qEAAqE,sLAAsL,2CAA2C,qCAAqC,8DAA8D,2CAA2C,MAAM,6BAA6B,MAAM,qCAAqC,uDAAuD,iEAAiE,sBAAsB,yBAAyB,mCAAmC,oCAAoC,4DAA4D,gBAAgB,iPAAiP,iBAAiB,0DAA0D,mBAAmB,0CAA0C,QAAQ,gBAAgB,sEAAsE,iBAAiB,UAAU,0CAA0C,8CAA8C,oBAAoB,iOAAiO,MAAM,+EAA+E,QAAQ,oBAAoB,8BAA8B,mDAAmD,2CAA2C,iDAAiD,yGAAyG,4CAA4C,YAAY,eAAe,SAAS,MAAM,kDAAkD,oBAAoB,qEAAqE,aAAa,IAAI,6CAA6C,gFAAgF,sBAAsB,QAAQ,8IAA8I,+CAA+C,+BAA+B,yBAAyB,gCAAgC,QAAQ,uDAAuD,6CAA6C,KAAK,kBAAkB,8BAA8B,uBAAuB,4BAA4B,6BAA6B,qGAAqG,OAAO,uBAAuB,wCAAwC,QAAQ,uBAAuB,EAAE,sFAAsF,eAAe,2EAA2E,mMAAmM,kBAAkB,wEAAwE,yGAAyG,4GAA4G,kDAAkD,oSAAoS,uBAAuB,wCAAwC,sBAAsB,yCAAyC,eAAe,sCAAsC,KAAK,8KAA8K,EAAE,QAAQ,EAAE,GAAG,yFAAyF,EAAE,QAAQ,EAAE,GAAG,8EAA8E,oDAAoD,kCAAkC,wCAAwC,sCAAsC,EAAE,KAAK,6BAA6B,eAAe,UAAU,yDAAyD,EAAE,OAAO,EAAE,8BAA8B,+BAA+B,EAAE,eAAe,qBAAqB,EAAE,GAAG,aAAa,6CAA6C,qBAAqB,mBAAmB,4DAA4D,yFAAyF,8FAA8F,sEAAsE,6EAA6E,YAAY,+BAA+B,EAAE,eAAe,kDAAkD,mCAAmC,oCAAoC,sCAAsC,gBAAgB,6BAA6B,0EAA0E,EAAE,mCAAmC,mBAAmB,6DAA6D,yIAAyI,6EAA6E,wBAAwB,wLAAwL,IAAI,WAAW,oGAAoG,0EAA0E,gBAAgB,0DAA0D,qFAAqF,8FAA8F,kEAAkE,oGAAoG,6BAA6B,6DAA6D,EAAE,oCAAoC,aAAa,MAAM,UAAU,6EAA6E,kCAAkC,4BAA4B,8CAA8C,QAAQ,oFAAoF,8CAA8C,iBAAiB,eAAe,MAAM,QAAQ,yDAAyD,uCAAuC,MAAM,SAAS,GAAG,QAAQ,oBAAoB,kDAAkD,oBAAoB,gFAAgF,iCAAiC,+MAA+M,gBAAgB,wBAAwB,sGAAsG,uCAAuC,aAAa,kBAAkB,0BAA0B,gEAAgE,QAAQ,GAAG,EAAE,GAAG,wBAAwB,mEAAmE,oCAAoC,iBAAiB,cAAc,sBAAsB,eAAe,IAAI,0CAA0C,oHAAoH,oCAAoC,QAAQ,sBAAsB,SAAS,IAAI,qDAAqD,kBAAkB,uCAAuC,mDAAmD,WAAW,MAAM,mIAAmI,IAAI,uKAAuK,2DAA2D,yBAAyB,SAAS,8BAA8B,8EAA8E,iPAAiP,iBAAiB,SAAS,SAAS,2BAA2B,+CAA+C,qCAAqC,gBAAgB,KAAK,EAAE,mEAAmE,kBAAkB,qCAAqC,UAAU,qDAAqD,gFAAgF,sJAAsJ,IAAI,SAAS,eAAe,+CAA+C,IAAI,SAAS,SAAS,qBAAqB,gIAAgI,SAAS,yCAAyC,wCAAwC,kBAAkB,KAAK,EAAE,KAAK,4GAA4G,oBAAoB,IAAI,SAAS,SAAS,6BAA6B,GAAG,sCAAsC,oDAAoD,KAAK,qBAAqB,GAAG,iBAAiB,kDAAkD,KAAK,YAAY,wBAAwB,oBAAoB,KAAK,OAAO,aAAa,YAAY,EAAE,yGAAyG,gEAAgE,uBAAuB,gCAAgC,EAAE,+BAA+B,wDAAwD,GAAG,6CAA6C,kBAAkB,GAAG,yDAAyD,wCAAwC,EAAE,oEAAoE,iBAAiB,oBAAoB,KAAK,GAAG,EAAE,YAAY,gBAAgB,uBAAuB,gCAAgC,EAAE,+BAA+B,QAAQ,EAAE,wBAAwB,iBAAiB,iDAAiD,oCAAoC,+DAA+D,qFAAqF,kCAAkC,uBAAuB,2CAA2C,YAAY,2FAA2F,mHAAmH,2IAA2I,YAAY,IAAI,+CAA+C,EAAE,8BAA8B,MAAM,WAAW,kBAAkB,8BAA8B,aAAa,cAAc,sBAAsB,2CAA2C,6DAA6D,6EAA6E,UAAU,2BAA2B,iCAAiC,gCAAgC,sCAAsC,WAAW,4BAA4B,SAAS,kEAAkE,SAAS,0PAA0P,+GAA+G,QAAQ,MAAM,2CAA2C,QAAQ,4CAA4C,SAAS,EAAE,GAAG,KAAK,KAAK,yKAAyK,+KAA+K,YAAY,8CAA8C,0EAA0E,uDAAuD,0DAA0D,GAAG,kEAAkE,wEAAwE,GAAG,iDAAiD,MAAM,yBAAyB,kBAAkB,oBAAoB,EAAE,UAAU,GAAG,SAAS,mBAAmB,2BAA2B,6EAA6E,IAAI,oBAAoB,IAAI,uFAAuF,8JAA8J,GAAG,WAAW,cAAc,QAAQ,gDAAgD,uGAAuG,OAAO,0BAA0B,6BAA6B,8EAA8E,WAAW,WAAW,+BAA+B,yBAAyB,eAAe,kBAAkB,oCAAoC,oCAAoC,0CAA0C,oDAAoD,yCAAyC,MAAM,qCAAqC,wBAAwB,mCAAmC,4DAA4D,qCAAqC,8CAA8C,eAAe,yCAAyC,oBAAoB,QAAQ,MAAM,oCAAoC,kBAAkB,IAAI,kBAAkB,SAAS,aAAa,eAAe,4BAA4B,yDAAyD,WAAW,KAAK,UAAU,QAAQ,6BAA6B,8NAA8N,QAAQ,wSAAwS,6CAA6C,2BAA2B,sCAAsC,sHAAsH,oDAAoD,eAAe,KAAK,GAAG,GAAG,gHAAgH,0FAA0F,oBAAoB,mCAAmC,mBAAmB,SAAS,oDAAoD,2CAA2C,gBAAgB,yEAAyE,0DAA0D,mCAAmC,UAAU,oCAAoC,8CAA8C,sDAAsD,kEAAkE,yCAAyC,2BAA2B,kGAAkG,oVAAoV,gBAAgB,6BAA6B,MAAM,UAAU,oFAAoF,UAAU,gDAAgD,WAAW,0BAA0B,iHAAiH,6EAA6E,wOAAwO,iBAAiB,yEAAyE,GAAG,aAAa,gCAAgC,oCAAoC,mCAAmC,6BAA6B,cAAc,WAAW,OAAO,uHAAuH,WAAW,wFAAwF,+EAA+E,0CAA0C,mDAAmD,+BAA+B,qBAAqB,2EAA2E,wBAAwB,yBAAyB,8DAA8D,iCAAiC,iBAAiB,iCAAiC,kIAAkI,mBAAmB,0EAA0E,oDAAoD,MAAM,2EAA2E,mBAAmB,kDAAkD,aAAa,QAAQ,wOAAwO,eAAe,6BAA6B,sGAAsG,uGAAuG,QAAQ,OAAO,sCAAsC,mBAAmB,qDAAqD,wCAAwC,yCAAyC,0BAA0B,mDAAmD,0FAA0F,KAAK,wXAAwX,2FAA2F,OAAO,UAAU,QAAQ,gDAAgD,WAAW,qBAAqB,WAAW,oBAAoB,WAAW,oCAAoC,aAAa,oCAAoC,UAAU,sBAAsB,2KAA2K,kCAAkC,SAAS,mDAAmD,SAAS,2BAA2B,aAAa,IAAI,SAAS,qTAAqT,MAAM,2QAA2Q,0DAA0D,OAAO,qBAAqB,qFAAqF,EAAE,EAAE,EAAE,8CAA8C,EAAE,EAAE,UAAU,6GAA6G,EAAE,EAAE,YAAY,0DAA0D,YAAY,iNAAiN,oiBAAoiB,kFAAkF,yCAAyC,+BAA+B,qZAAqZ,SAAS,sJAAsJ,UAAU,kKAAkK,gFAAgF,aAAa,aAAa,EAAE,mBAAmB,EAAE,2nBAA2nB,kBAAkB,OAAO,qEAAqE,WAAW,gEAAgE,aAAa,wEAAwE,MAAM,0DAA0D,UAAU,kEAAkE,oBAAoB,6SAA6S,aAAa,OAAO,mFAAmF,MAAM,oCAAoC,oBAAoB,kBAAkB,QAAQ,wGAAwG,UAAU,iFAAiF,gBAAgB,uCAAuC,UAAU,sBAAsB,yCAAyC,8CAA8C,uBAAuB,gBAAgB,SAAS,kBAAkB,2EAA2E,UAAU,yEAAyE,WAAW,0EAA0E,YAAY,4EAA4E,SAAS,eAAe,wBAAwB,0BAA0B,gDAAgD,sCAAsC,mFAAmF,wEAAwE,qCAAqC,0BAA0B,wCAAwC,qLAAqL,2DAA2D,6BAA6B,wEAAwE,mDAAmD,8CAA8C,EAAE,+FAA+F,gBAAgB,2BAA2B,2DAA2D,8IAA8I,mGAAmG,yBAAyB,mBAAmB,MAAM,yGAAyG,GAAG,qBAAqB,6EAA6E,kGAAkG,wBAAwB,iRAAiR,YAAY,SAAS,cAAc,oCAAoC,oBAAoB,GAAG,uBAAuB,wLAAwL,wEAAwE,qBAAqB,0BAA0B,4CAA4C,YAAY,YAAY,EAAE,EAAE,EAAE,cAAc,MAAM,wEAAwE,yBAAyB,qCAAqC,sFAAsF,QAAQ,wIAAwI,MAAM,YAAY,SAAS,6BAA6B,WAAW,GAAG,2BAA2B,gCAAgC,gCAAgC,YAAY,YAAY,sIAAsI,YAAY,wBAAwB,gBAAgB,qEAAqE,oJAAoJ,8FAA8F,6BAA6B,oIAAoI,gBAAgB,+CAA+C,oBAAoB,gDAAgD,SAAS,+DAA+D,EAAE,2CAA2C,EAAE,mCAAmC,sBAAsB,oDAAoD,gBAAgB,2QAA2Q,aAAa,4BAA4B,mHAAmH,iDAAiD,YAAY,EAAE,cAAc,sDAAsD,0EAA0E,aAAa,2IAA2I,mBAAmB,4BAA4B,yBAAyB,6DAA6D,iBAAiB,yBAAyB,EAAE,GAAG,UAAU,eAAe,8JAA8J,4BAA4B,8FAA8F,SAAS,8FAA8F,eAAe,EAAE,UAAU,8CAA8C,ynBAAynB,gCAAgC,6FAA6F,gHAAgH,YAAY,iCAAiC,sEAAsE,kBAAkB,2DAA2D,+BAA+B,iBAAiB,8BAA8B,wBAAwB,gGAAgG,mCAAmC,MAAM,OAAO,iBAAiB,kEAAkE,mBAAmB,0MAA0M,uDAAuD,cAAc,qFAAqF,wDAAwD,wBAAwB,EAAE,sBAAsB,sCAAsC,iBAAiB,2QAA2Q,iBAAiB,qBAAqB,+EAA+E,mEAAmE,iBAAiB,2HAA2H,oGAAoG,sBAAsB,mBAAmB,MAAM,WAAW,eAAe,gCAAgC,qDAAqD,mFAAmF,iBAAiB,eAAe,oBAAoB,6EAA6E,qHAAqH,oEAAoE,SAAS,eAAe,0BAA0B,MAAM,SAAS,OAAO,WAAW,GAAG,yDAAyD,6BAA6B,MAAM,SAAS,MAAM,sLAAsL,4BAA4B,MAAM,SAAS,OAAO,6BAA6B,GAAG,qMAAqM,MAAM,WAAW,GAAG,yDAAyD,QAAQ,+LAA+L,GAAG,aAAa,6CAA6C,mBAAmB,SAAS,qDAAqD,GAAG,IAAI,EAAE,GAAG,0GAA0G,uKAAuK,qIAAqI,QAAQ,oDAAoD,2DAA2D,MAAM,SAAS,cAAc,0BAA0B,8CAA8C,IAAI,2DAA2D,GAAG,wBAAwB,MAAM,SAAS,OAAO,WAAW,GAAG,2MAA2M,mEAAmE,2XAA2X,qBAAqB,0BAA0B,GAAG,wBAAwB,kCAAkC,4JAA4J,aAAa,8BAA8B,mBAAmB,YAAY,GAAG,mFAAmF,mBAAmB,4CAA4C,eAAe,8BAA8B,EAAE,uCAAuC,gDAAgD,cAAc,EAAE,yCAAyC,yDAAyD,gDAAgD,0BAA0B,GAAG,8DAA8D,wBAAwB,IAAI,YAAY,GAAG,sEAAsE,GAAG,6BAA6B,MAAM,SAAS,8BAA8B,SAAS,kEAAkE,mCAAmC,MAAM,SAAS,8CAA8C,2CAA2C,2BAA2B,MAAM,SAAS,OAAO,WAAW,6BAA6B,2DAA2D,0BAA0B,mBAAmB,UAAU,qGAAqG,qCAAqC,0DAA0D,sCAAsC,wDAAwD,iBAAiB,oHAAoH,6BAA6B,2DAA2D,sBAAsB,sDAAsD,eAAe,4GAA4G,+DAA+D,qDAAqD,wJAAwJ,oDAAoD,0CAA0C,sDAAsD,0EAA0E,6CAA6C,sFAAsF,2CAA2C,0EAA0E,0BAA0B,4EAA4E,yFAAyF,YAAY,wCAAwC,4DAA4D,+BAA+B,wBAAwB,mCAAmC,yFAAyF,sJAAsJ,MAAM,oBAAoB,GAAG,4BAA4B,0DAA0D,MAAM,oBAAoB,GAAG,8BAA8B,oDAAoD,MAAM,oBAAoB,GAAG,iCAAiC,gDAAgD,MAAM,oBAAoB,GAAG,+BAA+B,wEAAwE,8DAA8D,wGAAwG,oFAAoF,oCAAoC,wBAAwB,8DAA8D,iDAAiD,sGAAsG,yCAAyC,+DAA+D,GAAG,iFAAiF,+DAA+D,wCAAwC,MAAM,kBAAkB,GAAG,yFAAyF,2CAA2C,KAAK,2BAA2B,qFAAqF,0CAA0C,iIAAiI,uBAAuB,MAAM,SAAS,SAAS,8CAA8C,eAAe,6MAA6M,aAAa,MAAM,SAAS,OAAO,WAAW,IAAI,qDAAqD,yCAAyC,qBAAqB,aAAa,MAAM,+BAA+B,iBAAiB,MAAM,WAAW,qBAAqB,OAAO,UAAU,wBAAwB,yDAAyD,iLAAiL,oIAAoI,MAAM,sCAAsC,MAAM,mCAAmC,MAAM,qCAAqC,MAAM,8BAA8B,MAAM,6BAA6B,MAAM,2BAA2B,MAAM,8BAA8B,MAAM,8BAA8B,MAAM,uBAAuB,mGAAmG,uBAAuB,MAAM,cAAc,mCAAmC,gGAAgG,qBAAM,CAAC,qBAAM,gCAAgC,qBAAqB,YAAY,WAAW,sBAAsB,gBAAgB,qBAAqB,kBAAkB,KAAK,KAAK,MAAM,gBAAgB,eAAe,8BAA8B,oBAAoB,+BAA+B,IAAI,gDAAgD,gBAAgB,MAAM,WAAW,iBAAiB,SAAS,0BAA0B,gBAAgB,YAAY,UAAU,6CAA6C,oBAAoB,2HAA2H,kVAAkV,gBAAgB,SAAS,gCAAgC,SAAS,oBAAoB,WAAW,8BAA8B,kEAAkE,0BAA0B,oCAAoC,kBAAkB,2CAA2C,sBAAsB,6BAA6B,aAAa,UAAU,UAAU,KAAK,IAAI,gBAAgB,kBAAkB,QAAQ,iCAAiC,IAAI,wBAAwB,QAAQ,gBAAgB,iBAAiB,aAAa,kBAAkB,WAAW,KAAK,yCAAyC,IAAI,6BAA6B,wBAAwB,OAAO,KAAK,oBAAoB,QAAQ,oBAAoB,IAAI,KAAK,MAAM,yBAAyB,cAAc,GAAG,GAAG,GAAG,eAAe,4BAA4B,MAAM,kBAAkB,EAAE,GAAG,eAAe,2IAA2I,UAAU,QAAQ,aAAa,oLAAoL,iBAAiB,cAAc,uDAAuD,GAAG,SAAS,+BAA+B,gCAAgC,GAAG,uCAAuC,uIAAuI,0EAA0E,iCAAiC,IAAI,WAAW,IAAI,IAAI,oBAAoB,wBAAwB,EAAE,YAAY,uHAAuH,uGAAuG,MAAM,yDAAyD,4LAA4L,oIAAoI,KAAK,iBAAiB,gEAAgE,EAAE,sCAAsC,8DAA8D,gFAAgF,GAAG,sCAAsC,2CAA2C,yMAAyM,2BAA2B,IAAI,cAAc,SAAS,6CAA6C,iBAAiB,MAAM,kCAAkC,qBAAqB,0KAA0K,IAAI,EAAE,8BAA8B,8CAA8C,iBAAiB,sCAAsC,mCAAmC,eAAe,oBAAoB,IAAI,EAAE,IAAI,SAAS,UAAU,wCAAwC,iBAAiB,gCAAgC,qCAAqC,IAAI,EAAE,IAAI,QAAQ,UAAU,uCAAuC,iBAAiB,0BAA0B,iDAAiD,qCAAqC,IAAI,EAAE,OAAO,OAAO,UAAU,sCAAsC,iBAAiB,4CAA4C,8BAA8B,IAAI,IAAI,kCAAkC,8BAA8B,cAAc,mBAAmB,+CAA+C,UAAU,yCAAyC,mCAAmC,4EAA4E,aAAa,oCAAoC,sDAAsD,qBAAqB,qCAAqC,wCAAwC,sCAAsC,mCAAmC,mCAAmC,sDAAsD,qCAAqC,sCAAsC,6BAA6B,UAAU,IAAI,8BAA8B,0EAA0E,6DAA6D,WAAW,wBAAwB,6BAA6B,iCAAiC,6CAA6C,+CAA+C,6CAA6C,kCAAkC,4BAA4B,gCAAgC,4BAA4B,2BAA2B,0CAA0C,4BAA4B,cAAc,gCAAgC,8DAA8D,8BAA8B,uJAAuJ,8EAA8E,GAAG,6BAA6B,8CAA8C,4BAA4B,4CAA4C,2BAA2B,0CAA0C,4DAA4D,eAAe,2IAA2I,eAAe,wHAAwH,UAAU,QAAQ,kIAAkI,KAAK,uCAAuC,oCAAoC,uCAAuC,6CAA6C,gDAAgD,IAAI,aAAa,iDAAiD,gBAAgB,MAAM,yBAAyB,GAAG,oEAAoE,cAAc,eAAe,cAAc,GAAG,SAAS,sEAAsE,gDAAgD,kCAAkC,sEAAsE,kHAAkH,MAAM,iBAAiB,MAAM,WAAW,GAAG,8BAA8B,iDAAiD,EAAE,0CAA0C,qCAAqC,EAAE,GAAG,EAAE,aAAa,0HAA0H,uEAAuE,gBAAgB,GAAG,sCAAsC,oCAAoC,EAAE,2SAA2S,YAAY,WAAW,mBAAmB,kBAAkB,iqBAAiqB,iCAAiC,eAAe,iBAAiB,4BAA4B,yBAAyB,iBAAiB,wEAAwE,YAAY,mCAAmC,iBAAiB,wCAAwC,4BAA4B,oBAAoB,6BAA6B,mBAAmB,cAAc,uHAAuH,0CAA0C,yGAAyG,gDAAgD,mCAAmC,sBAAsB,EAAE,IAAI,SAAS,UAAU,wCAAwC,iBAAiB,yDAAyD,EAAE,IAAI,QAAQ,UAAU,uCAAuC,iBAAiB,yBAAyB,gFAAgF,8CAA8C,wBAAwB,yCAAyC,mCAAmC,EAAE,sCAAsC,iRAAiR,kRAAkR,+DAA+D,kBAAkB,iBAAiB,gCAAgC,wGAAwG,+GAA+G,MAAM,0FAA0F,MAAM,8KAA8K,+BAA+B,iHAAiH,MAAM,+CAA+C,MAAM,mCAAmC,gDAAgD,YAAY,IAAI,GAAG,KAAK,QAAQ,4EAA4E,EAAE,qFAAqF,EAAE,mGAAmG,EAAE,6DAA6D,mCAAmC,oEAAoE,oCAAoC,+MAA+M,SAAS,eAAe,oBAAoB,sIAAsI,aAAa,eAAe,iEAAiE,IAAI,wBAAwB,MAAM,4NAA4N,8CAA8C,oCAAoC,2BAA2B,iCAAiC,wCAAwC,usBAAusB,6BAA6B,MAAM,YAAY,sBAAsB,IAAI,kCAAkC,wQAAwQ,SAAS,mBAAmB,oCAAoC,gHAAgH,sCAAsC,6DAA6D,4CAA4C,IAAI,EAAE,EAAE,0DAA0D,OAAO,oCAAoC,wBAAwB,4CAA4C,4SAA4S,iFAAiF,0BAA0B,+BAA+B,qDAAqD,0CAA0C,sCAAsC,iBAAiB,+CAA+C,yCAAyC,EAAE,gBAAgB,aAAa,sBAAsB,GAAG,2BAA2B,MAAM,YAAY,kDAAkD,YAAY,2CAA2C,iCAAiC,GAAG,kBAAkB,gJAAgJ,MAAM,gFAAgF,MAAM,8GAA8G,MAAM,yEAAyE,MAAM,gGAAgG,MAAM,0FAA0F,uBAAuB,IAAI,2BAA2B,oDAAoD,4BAA4B,MAAM,YAAY,sBAAsB,MAAM,+BAA+B,oBAAoB,gCAAgC,8BAA8B,qCAAqC,0BAA0B,iCAAiC,gCAAgC,yDAAyD,qEAAqE,GAAG,0CAA0C,2FAA2F,GAAG,uBAAuB,MAAM,YAAY,sBAAsB,yEAAyE,uFAAuF,IAAI,wIAAwI,SAAS,mBAAmB,gBAAgB,GAAG,gCAAgC,qFAAqF,+BAA+B,iFAAiF,yBAAyB,4EAA4E,0BAA0B,+BAA+B,0EAA0E,wDAAwD,yCAAyC,gBAAgB,GAAG,gCAAgC,uBAAuB,2BAA2B,+BAA+B,GAAG,uIAAuI,oDAAoD,EAAE,qCAAqC,0DAA0D,KAAK,kCAAkC,0FAA0F,EAAE,yDAAyD,6FAA6F,qCAAqC,sEAAsE,yFAAyF,uCAAuC,eAAe,cAAc,MAAM,SAAS,MAAM,uGAAuG,aAAa,MAAM,SAAS,MAAM,mCAAmC,oDAAoD,IAAI,kLAAkL,EAAE,GAAG,2BAA2B,iCAAiC,aAAa,WAAW,kDAAkD,WAAW,mCAAmC,0BAA0B,wCAAwC,iCAAiC,sDAAsD,KAAK,wBAAwB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,IAAI,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,+EAA+E,KAAK,4EAA4E,KAAK,KAAK,qBAAqB,KAAK,YAAY,WAAW,2GAA2G,SAAS,eAAe,oBAAoB,uJAAuJ,kGAAkG,GAAG,gDAAgD,MAAM,MAAM,sCAAsC,gFAAgF,aAAa,kHAAkH,wBAAwB,sBAAsB,GAAG,KAAK,2DAA2D,wBAAwB,gDAAgD,gBAAgB,SAAS,uCAAuC,qKAAqK,kBAAkB,cAAc,4EAA4E,oCAAoC,GAAG,6BAA6B,oGAAoG,8GAA8G,KAAK,QAAQ,6FAA6F,yPAAyP,4GAA4G,OAAO,mCAAmC,+DAA+D,QAAQ,OAAO,+BAA+B,0BAA0B,iCAAiC,gCAAgC,+MAA+M,+BAA+B,gLAAgL,kDAAkD,GAAG,4BAA4B,4BAA4B,iCAAiC,iCAAiC,8BAA8B,qCAAqC,4CAA4C,GAAG,yBAAyB,uCAAuC,qEAAqE,8CAA8C,qEAAqE,gFAAgF,iBAAiB,oEAAoE,EAAE,oCAAoC,kQAAkQ,yEAAyE,8EAA8E,0BAA0B,oJAAoJ,yCAAyC,mFAAmF,8GAA8G,QAAQ,kFAAkF,oDAAoD,mEAAmE,+BAA+B,gDAAgD,YAAY,0CAA0C,uNAAuN,KAAK,sEAAsE,kBAAkB,mHAAmH,EAAE,0FAA0F,0CAA0C,wCAAwC,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,mQAAmQ,iCAAiC,6DAA6D,0CAA0C,kCAAkC,2DAA2D,sBAAsB,MAAM,wBAAwB,MAAM,iBAAiB,0DAA0D,mBAAmB,GAAG,MAAM,GAAG,sDAAsD,iBAAiB,0CAA0C,kCAAkC,MAAM,sFAAsF,SAAS,eAAe,eAAe,0CAA0C,yDAAyD,EAAE,GAAG,MAAM,YAAY,sCAAsC,sBAAsB,mDAAmD,EAAE,kEAAkE,WAAW,OAAO,4CAA4C,+BAA+B,sBAAsB,yEAAyE,2FAA2F,EAAE,wBAAwB,QAAQ,gDAAgD,4EAA4E,mHAAmH,+CAA+C,gFAAgF,mHAAmH,+CAA+C,sIAAsI,8CAA8C,MAAM,iBAAiB,qBAAqB,4BAA4B,wCAAwC,yDAAyD,iBAAiB,EAAE,IAAI,6CAA6C,wDAAwD,kBAAkB,EAAE,KAAK,KAAK,oEAAoE,kBAAkB,0BAA0B,qBAAqB,EAAE,IAAI,4BAA4B,uCAAuC,wHAAwH,YAAY,8HAA8H,gBAAgB,EAAE,2DAA2D,4CAA4C,MAAM,iBAAiB,2BAA2B,0EAA0E,EAAE,iDAAiD,EAAE,sDAAsD,EAAE,IAAI,2CAA2C,6BAA6B,sCAAsC,2FAA2F,MAAM,oBAAoB,MAAM,IAAI,2IAA2I,QAAQ,cAAc,aAAa,cAAc,8FAA8F,4BAA4B,2FAA2F,mBAAmB,+DAA+D,uBAAuB,0IAA0I,2BAA2B,mBAAmB,MAAM,SAAS,2BAA2B,0EAA0E,EAAE,SAAS,iJAAiJ,0BAA0B,0FAA0F,2BAA2B,wFAAwF,UAAU,oBAAoB,4BAA4B,MAAM,6BAA6B,kBAAkB,GAAG,WAAW,iFAAiF,2IAA2I,MAAM,iBAAiB,KAAK,0BAA0B,0CAA0C,EAAE,OAAO,oBAAoB,8EAA8E,4lCAA4lC,kDAAkD,SAAS,iBAAiB,+XAA+X,0FAA0F,0BAA0B,mBAAmB,wBAAwB,qDAAqD,yBAAyB,qDAAqD,gCAAgC,uCAAuC,gCAAgC,gCAAgC,wBAAwB,0BAA0B,uDAAuD,gCAAgC,qCAAqC,iKAAiK,mJAAmJ,2CAA2C,0BAA0B,SAAS,SAAS,wBAAwB,yCAAyC,0BAA0B,yCAAyC,yBAAyB,+BAA+B,gCAAgC,sBAAsB,aAAa,wiBAAwiB,mCAAmC,SAAS,kaAAka,6DAA6D,8RAA8R,qBAAqB,OAAO,IAAI,+DAA+D,SAAS,UAAU,oBAAoB,uDAAuD,WAAW,YAAY,UAAU,WAAW,8BAA8B,aAAa,gBAAgB,6CAA6C,kBAAkB,UAAU,eAAe,oBAAoB,sOAAsO,uEAAuE,yFAAyF,2EAA2E,iCAAiC,uCAAuC,yCAAyC,kBAAkB,UAAU,gEAAgE,yDAAyD,gJAAgJ,IAAI,iCAAiC,qHAAqH,qBAAqB,8SAA8S,oJAAoJ,qIAAqI,aAAa,MAAM,4aAA4a,MAAM,uEAAuE,ubAAub,yBAAyB,OAAO,GAAG,waAAwa,cAAc,gCAAgC,cAAc,oCAAoC,gBAAgB,kCAAkC,cAAc,gCAAgC,cAAc,sBAAsB,cAAc,sBAAsB,cAAc,sDAAsD,aAAa,kCAAkC,cAAc,kDAAkD,YAAY,iCAAiC,mBAAmB,yBAAyB,yBAAyB,kFAAkF,kBAAkB,UAAU,kBAAkB,sCAAsC,eAAe,MAAM,WAAW,YAAY,2EAA2E,cAAc,mCAAmC,eAAe,0DAA0D,sCAAsC,YAAY,cAAc,QAAQ,sFAAsF,SAAS,2HAA2H,aAAa,iCAAiC,aAAa,QAAQ,uHAAuH,YAAY,iCAAiC,eAAe,0LAA0L,aAAa,WAAW,0GAA0G,MAAM,8BAA8B,MAAM,0DAA0D,wCAAwC,KAAK,YAAY,uCAAuC,mBAAmB,4EAA4E,mBAAmB,wEAAwE,eAAe,mDAAmD,oBAAoB,oGAAoG,mBAAmB,gBAAgB,+CAA+C,EAAE,UAAU,GAAG,mBAAmB,uDAAuD,UAAU,EAAE,cAAc,0BAA0B,YAAY,+CAA+C,4CAA4C,WAAW,gCAAgC,cAAc,uBAAuB,aAAa,6BAA6B,eAAe,MAAM,WAAW,kBAAkB,8BAA8B,gBAAgB,qEAAqE,cAAc,uDAAuD,uDAAuD,aAAa,mGAAmG,YAAY,6BAA6B,0BAA0B,gCAAgC,aAAa,4HAA4H,EAAE,8DAA8D,gBAAgB,yDAAyD,eAAe,qCAAqC,kBAAkB,0BAA0B,oBAAoB,2CAA2C,mBAAmB,MAAM,yBAAyB,eAAe,cAAc,gBAAgB,+BAA+B,eAAe,wCAAwC,WAAW,WAAW,iBAAiB,iCAAiC,kPAAkP,UAAU,kJAAkJ,wBAAwB,kPAAkP,sBAAsB,oBAAoB,uBAAuB,eAAe,mBAAmB,EAAE,WAAW,yKAAyK,OAAO,6DAA6D;AAC1/8G;;;;;;;;;;;ACDA;AACA,mFAAmF,uEAAuE,GAAG,eAAe,sBAAsB,GAAG,gCAAgC,SAAS,cAAc,gDAAgD,gBAAgB,MAAM,wCAAwC,0CAA0C,8DAA8D,wDAAwD,gBAAgB,4CAA4C,0CAA0C,kLAAkL,0EAA0E,kFAAkF,OAAO,KAAK,eAAe,wEAAwE,gBAAgB,EAAE,mBAAmB,KAAqC,CAAC,iCAAO,EAAE,mCAAE,WAAW,YAAY;AAAA,kGAAE,CAAC,CAAgE,CAAC,sBAAsB,qBAAM,CAAC,qBAAM,qDAAqD,aAAa,OAAO,6NAA6N,cAAc,SAAS,2DAA2D,gBAAgB,+BAA+B,WAAW,KAAK,eAAe,mCAAmC,6DAA6D,MAAM,EAAE,4GAA4G,mMAAmM,YAAY,cAAc,oNAAoN,eAAe,uEAAuE,MAAM,mBAAmB,2JAA2J,qBAAqB,mDAAmD,yBAAyB,mBAAmB,mBAAmB,EAAE,4BAA4B,qBAAqB,iBAAiB,2BAA2B,sDAAsD,iCAAiC,iBAAiB,kBAAkB,iFAAiF,SAAS,oBAAoB,mDAAmD,oDAAoD,QAAQ,uBAAuB,gCAAgC,EAAE,kEAAkE,qRAAqR,UAAU,ssBAAssB,oBAAoB,8GAA8G,4CAA4C,iGAAiG,2CAA2C,gOAAgO,kBAAkB,4QAA4Q,QAAQ,IAAI,gCAAgC,SAAS,YAAY,YAAY,4BAA4B,2BAA2B,iCAAiC,+EAA+E,sDAAsD,sBAAsB,8BAA8B,uDAAuD,qCAAqC,4BAA4B,eAAe,qGAAqG,2BAA2B,qGAAqG,aAAa,IAAI,qBAAqB,sHAAsH,mBAAmB,6NAA6N,uBAAuB,wJAAwJ,OAAO;;;;;;;;;;;;;;;;;;ACD5tM;AAC/E,YAAwL;;AAExL;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,oKAAO;;;;AAIxB,iEAAe,2KAAc,MAAM;;;;;;;;;;;ACZtB;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,cAAc;;AAExG;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,yDAAyD;AACzD,IAAI;;AAEJ;;;AAGA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;AC5QA;AACA,mJAAmJ,KAAqC,CAAC,iCAAO,EAAE,mCAAE,WAAW,YAAY;AAAA,kGAAE,CAAC,CAAyD,CAAC,sBAAsB,qBAAM,CAAC,qBAAM,qDAAqD,aAAa,OAAO,wDAAwD,eAAe,+CAA+C,qCAAqC,MAAM,mBAAmB,oCAAoC,eAAe,4DAA4D,eAAe,qCAAqC,qHAAqH,gCAAgC,GAAG,eAAe,KAAK,gBAAgB,4GAA4G,0CAA0C,MAAM,4DAA4D,kCAAkC,8FAA8F,SAAS,iBAAiB,mBAAmB,gFAAgF,YAAY,gDAAgD,KAAK,MAAM,wBAAwB,2MAA2M,qBAAqB,aAAa,qBAAqB,8BAA8B,4CAA4C,qCAAqC,oBAAoB,yTAAyT,SAAS,4IAA4I,oBAAoB,gCAAgC,8BAA8B,6EAA6E,qCAAqC,oBAAoB,oYAAoY,SAAS,IAAI,sBAAsB,QAAQ,uFAAuF,kBAAkB,0CAA0C,6BAA6B,eAAe,6BAA6B,uJAAuJ,qBAAqB,SAAS,2DAA2D,gBAAgB,+BAA+B,WAAW,KAAK,SAAS,yBAAyB,gCAAgC,6EAA6E,MAAM,mGAAmG;;;;;;;;;;;;;;;;;;;;;;;;;ACDxqH;AACA;AACA;AACA;AACA;AAC2D;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,sCAAsC;;;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,GAAG;AAChC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB,kBAAkB;AACvD;AACA,kBAAkB;AAClB,EAAE;;AAEF;;AAEA,IAAI,IAAqC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,8CAA8C;AAC9C,kCAAkC;AAClC,oCAAoC;AACpC,kCAAkC;AAClC,8BAA8B;AAC9B,gCAAgC;AAChC,8BAA8B;AAC9B,gCAAgC;AAChC,oCAAoC;AACpC,wCAAwC;AACxC,8CAA8C;AAC9C;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG,IAAI;AACP,yBAAyB;AACzB;AACA;AACA,8EAA8E;AAC9E;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,GAAG,8BAA8B;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE;;AAEpE;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE,wEAAwE;AAC1E;;AAEA;;AAEA;AACA,6BAA6B;;AAE7B;AACA;AACA,uDAAuD,6EAA6E;AACpI;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sFAAsF;;AAEtF;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA,OAAO,GAAG;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,8BAA8B,4DAAY,4CAA4C;AACtF;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG;AACH;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,0CAA0C,EAAE,sDAAW;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN,sBAAsB;;AAEtB;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,IAAI;;;AAGJ;AACA,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,mCAAmC;AACnC;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA,MAAM;AACN;;;AAGA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA,0GAA0G;;AAE1G;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA,uEAAuE;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,iEAAe,KAAK,EAAC;AAC0G;AAC/H;;;;;;;;;;;ACr7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA,+BAA+B;AAC/B,kCAAkC;;;AAGlC;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACqkE;AACxgE;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAqB;AACzC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,eAAe,8DAAK;AACpB,2BAA2B,8DAAK;AAChC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAO;AAChB,iBAAiB,8DAAO;AACxB;AACA;AACA,mBAAmB,0DAAO,gBAAgB,iEAAc;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAO;AACxB,mBAAmB,8DAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,8DAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,oEAAkB;AACvD,mEAAiB;AACjB;AACA;AACA;AACA,CAAC;AACD,8DAAY;AACZ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,mEAAiB;AACjB;AACA,CAAC;AACD,8DAAY;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAQ;AACjB;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,8DAAO;AACd;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;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,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,YAAY,gCAAgC;AAC3F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAQ;AACd;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAc,+CAA+C,8DAAI,YAAY,8DAAI;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc,GAAG,cAAc,GAAG,wBAAwB;AACtE;AACA;AACA,SAAS,kCAAkC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0BAA0B;AACnC,qDAAqD;AACrD,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,WAAW,gCAAgC;AAC3C,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,8DAAc;AAC7C,+BAA+B,8DAAc;AAC7C,+BAA+B,8DAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;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,8DAAmB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA,MAAM;AACN;AACA,QAAQ,8DAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,UAAU,8DAAO;AACjB;AACA,QAAQ,SAAS,8DAAQ;AACzB;AACA,QAAQ;AACR;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gCAAgC;AAC3C;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,wBAAwB,8DAAgB;AACxC,wBAAwB,8DAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,WAAW,8BAA8B;AACzC;AACA;AACA;AACA;AACA,cAAc,8DAAc;AAC5B;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA,UAAU,8DAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8DAAO;AACvD;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA,8BAA8B,mEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,MAAM;AACN;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;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,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,UAAU;AAC1D;AACA;AACA,wBAAwB,8DAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAO;AACf;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAa;AACnB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,8DAAO;AACb;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,SAAS,kCAAkC;AAC3C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA,uCAAuC,8DAAgB;AACvD,6BAA6B,8DAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qBAAqB,SAAS;AACzC;AACA;AACA;AACA,WAAW,+BAA+B;AAC1C,wBAAwB,mBAAmB;AAC3C;AACA,+BAA+B,8DAAa,yBAAyB,kBAAkB;AACvF;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8DAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc,iBAAiB,YAAY,gCAAgC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAI,YAAY,8DAAI;AAC7C;AACA;AACA;AACA;AACA,wBAAwB,8DAAa;AACrC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;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;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA,0BAA0B,8DAAc;AACxC;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA,0BAA0B,8DAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,+BAA+B;AAC1C;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW,eAAe;AACzD;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8DAAa;AAClD,qCAAqC,8DAAa;AAClD;AACA,yBAAyB,0DAAO;AAChC,yBAAyB,0DAAE;AAC3B,yBAAyB,0DAAE,GAAG,0DAAO;AACrC;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,UAAU,8DAAQ;AAClB,eAAe,eAAe;AAC9B,yBAAyB,8DAAgB;AACzC;AACA;AACA,4CAA4C,UAAU;AACtD;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAS;AACpB;AACA;AACA,WAAW,8DAAS;AACpB;AACA;AACA,cAAc,0DAAG;AACjB,eAAe,0DAAG;AAClB,oBAAoB,qCAAqC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA,4BAA4B,8DAAY;AACxC;AACA,WAAW,yBAAyB;AACpC,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,wBAAwB,8DAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0DAAG;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+BAA+B;AAC1C;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0DAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8DAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc,8DAAO;AACrB;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4CAA4C;AACvD;AACA,SAAS,cAAc,EAAE,8DAAgC;AACzD;AACA;AACA,QAAQ,8DAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,+BAA+B;AAC1C;AACA;AACA,WAAW,mBAAmB;AAC9B,yBAAyB,8DAAQ;AACjC;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA,uBAAuB,8DAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8DAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+DAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,0DAAE;AAC/D;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ,8DAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+DAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA,WAAW,8DAAQ,YAAY,8DAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,8DAAO;AAClB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAK;AAC1B;AACA,qBAAqB;AACrB;AACA,WAAW,8DAAY;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA,wDAAwD,8DAAK;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,8DAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gEAAc;AACd,gEAAc;AACd,gEAAc;AACd,gEAAc;AACd,mEAAiB;AACjB;AACA;AACA;AACA,CAAC;AACD,mEAAiB;AACjB;AACA,CAAC;AACD,mEAAiB;AACjB;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8DAAa;AAChD,4CAA4C,UAAU;AACtD;AACA;AACA,yCAAyC,8DAAa;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8DAAU;AAC5B,6CAA6C,UAAU;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAc;AAC9B,uBAAuB,8DAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,8DAAI;AACN;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAM;AACrB,kBAAkB,8DAAS;AAC3B,gBAAgB,8DAAO;AACvB;AACA;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA,GAAG;AACH;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,YAAY,8DAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iCAAiC;AAC1C,SAAS,mBAAmB;AAC5B;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAc;AAC3B,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,aAAa,8DAAc;AAC3B,sCAAsC,0DAAO,GAAG,0DAAO;AACvD;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,SAAS,kDAAkD;AAC3D,eAAe,8DAAe;AAC9B,eAAe,8DAAe;AAC9B,oBAAoB,8DAAe;AACnC,oBAAoB,8DAAe;AACnC;AACA,WAAW,8DAAe;AAC1B,WAAW,8DAAe;AAC1B,kBAAkB,8DAAc;AAChC,kBAAkB,8DAAc;AAChC;AACA;AACA;AACA,SAAS,kCAAkC;AAC3C;AACA;AACA,cAAc;AACd;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAe,MAAM,8DAAe;AAC/C,WAAW,8DAAe,MAAM,8DAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA,WAAW,qCAAqC;AAChD;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,oBAAoB,8DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI,8DAAQ;AACZ;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAS;AAC/B,kBAAkB,8DAAW;AAC7B,kBAAkB,8DAAW,mDAAmD,8DAAW;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB,oDAAoD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,eAAe,8BAA8B;AAC7C;AACA,6BAA6B,8DAAS;AACtC;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ,eAAe,YAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAQ;AACZ;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C,UAAU,8DAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA,0DAA0D,QAAQ;AAClE;AACA;AACA,WAAW,8DAAa,YAAY,8DAAO;AAC3C,gBAAgB,8DAAY;AAC5B;AACA,QAAQ,SAAS,8DAAO;AACxB,yCAAyC,UAAU;AACnD;AACA,eAAe,8DAAa,kBAAkB,8DAAO;AACrD,oBAAoB,8DAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAmD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAW,uBAAuB,8DAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ,SAAS,8DAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ,SAAS,8DAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8DAAc;AAChC;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAW;AACpC;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8BAA8B;AACzC;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA,sBAAsB,8DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ,SAAS,8DAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ,SAAS,8DAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8DAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,sBAAsB,8DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB,8BAA8B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,MAAM;AACN,cAAc;AACd;AACA;AACA;AACA,WAAW,eAAe,gBAAgB,4BAA4B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA,aAAa,uBAAuB;AACpC,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB,OAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAW;AACtB,WAAW,8DAAW;AACtB;AACA,MAAM;AACN,WAAW,8DAAW;AACtB,WAAW,8DAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAQ;AACd;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAU;AAChB;AACA;AACA,MAAM,8DAAU;AAChB;AACA;AACA;AACA,WAAW,eAAe,2BAA2B;AACrD;AACA;AACA;AACA,iBAAiB,8DAAM;AACvB,oBAAoB,8DAAS;AAC7B;AACA;AACA,0DAA0D,8DAAQ;AAClE;AACA,UAAU,8DAAO;AACjB;AACA;AACA,MAAM;AACN;AACA;AACA,WAAW,oCAAoC;AAC/C,IAAI,8DAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAM;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mEAAiB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0DAAQ;AAC/B,aAAa,0DAAQ;AACrB;AACA,eAAe,0DAAS;AACxB;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAK;AAC5B,kBAAkB,8DAAY,kBAAkB;AAChD,IAAI,8DAAY;AAChB;AACA;AACA,EAAE,8DAAY;AACd;AACA;AACA;AACA;AACA,IAAI,mEAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gEAAc;AAClB,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ,8DAAI;AACZ;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,wBAAwB,8DAAW;AACnC,IAAI,8DAAQ;AACZ;AACA,IAAI,8DAAQ;AACZ;AACA;AACA,oBAAoB,kCAAkC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,SAAS,cAAc,EAAE,8DAAgC;AACzD;AACA;AACA,QAAQ,8DAAmB;AAC3B;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,yBAAyB,8DAAQ;AACjC;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA,uBAAuB,8DAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;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,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA,iDAAiD,0DAAa,GAAG,0DAAY;AAC7E;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0CAA0C,UAAU;AACpD,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAc;AAC5C;AACA;AACA;AACA,kBAAkB,6BAA6B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,OAAO,EAAE,+DAAiB,WAAW,6BAA6B;AAC7E,QAAQ,8DAAa;AACrB,kBAAkB,6BAA6B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6BAA6B;AAC7C;AACA,MAAM;AACN,kBAAkB,6BAA6B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6BAA6B;AAC/C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yCAAyC;AAClE;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,uBAAuB,8DAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC,sBAAsB,yCAAyC;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB,8DAAmB;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB,8DAAmB;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB,8DAAmB;AAC1C;AACA,KAAK;AACL;AACA,uBAAuB,8DAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,2CAA2C,UAAU;AACrD;AACA,MAAM,yBAAyB,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA,sDAAsD,wCAAwC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAA6B;AACtC;AACA,qCAAqC,UAAU;AAC/C;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,UAAU;AACnB;AACA,OAAO,8DAAQ;AACf;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM;AACb;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,UAAU,8DAAO;AACjB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU,8DAAO;AACjB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,oBAAoB,8DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC;AACvC,iCAAiC,8DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA,4CAA4C,qCAAqC;AACjF,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,4BAA4B,+DAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAA4B,IAAI,eAAe;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,EAAE,8DAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAc;AAC5C;AACA;AACA;AACA,iBAAiB,+DAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8DAAa;AACvB;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+DAAc;AACzB;AACA;AACA,sBAAsB,+DAAc;AACpC;AACA;AACA;;AAEA;AACA,OAAO,+DAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8DAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAc,6CAA6C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,4BAA4B;AACrE,KAAK;AACL;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,0BAA0B,mEAAiB;AAC3C,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0DAAS,kBAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAQ;AACjB,qEAAqE,GAAG;AACxE;AACA;AACA,4EAA4E,GAAG;AAC/E;AACA;AACA;AACA;AACA;AACA,iBAAiB,+DAAO,wBAAwB,KAAK;AACrD,GAAG;AACH;AACA;AACA;AACA,4BAA4B,0DAAS;AACrC;AACA;AACA;AACA;AACA;AACA,MAAM,+DAAO,eAAe,KAAK;AACjC,KAAK;AACL,GAAG;AACH;AACA;AACA,IAAI,+DAAO,SAAS,iEAAe,cAAc,gEAAc;AAC/D,GAAG;AACH;AACA;AACA;AACA,wDAAwD;AACxD,oBAAoB,8DAAc,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA,yBAAyB,YAAY,cAAc,WAAW;AAC9D;AACA;AACA,sBAAsB,YAAY,eAAe,WAAW;AAC5D,yBAAyB,WAAW;AACpC;AACA;AACA,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY,GAAG,YAAY;AACpD;AACA,oBAAoB,YAAY,YAAY,YAAY;AACxD,oBAAoB,YAAY;AAChC,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK,UAAU,GAAG;AAC3C;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,0DAAS,YAAY;AAClE,6CAA6C,0DAAQ;AACrD,6CAA6C,2DAAW;AACxD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA,MAAM,0DAAS,YAAY;AAC3B,MAAM,mEAAiB,YAAY;AACnC,OAAO,KAAK;AACZ,MAAM,0DAAQ;AACd,MAAM,2DAAW;AACjB;AACA;AACA;AACA,oBAAoB;AACpB,WAAW,uBAAuB;AAClC;AACA;AACA;AACA,gBAAgB,+DAAU;AAC1B;AACA,gBAAgB,+DAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,8DAAQ;AACnB,QAAQ,+DAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAQ;AACrC,mEAAmE,+DAAU;AAC7E;AACA,SAAS,2BAA2B,EAAE,+DAAY;AAClD;AACA;AACA;AACA;AACA,wBAAwB,+DAAU;AAClC,uBAAuB,8DAAO;AAC9B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,8DAAQ;AACV;AACA;AACA;AACA;AACA,EAAE,8DAAQ;AACV;AACA;AACA,MAAM,+DAAe;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+DAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU,iCAAiC,+BAA+B;AACrF,SAAS,8DAAa;AACtB;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,MAAM,+DAAW;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,+DAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+DAAW;AACpB;AACA;AACA,kCAAkC,cAAc;AAChD,IAAI,8DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA,wBAAwB,8DAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL,IAAI,8DAAI;AACR;AACA;AACA;AACA,KAAK;AACL,IAAI,8DAAI;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4BAA4B,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,eAAe,qCAAqC,EAAE,mEAAiB;AACvE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uBAAuB;AACnE;AACA;AACA;AACA;AACA;AACA,sDAAsD,UAAU;AAChE,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAI;AACV;AACA,OAAO;AACP;AACA;AACA,uCAAuC,KAAK;AAC5C;AACA,WAAW,qBAAqB;AAChC;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+DAAS;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC,WAAW,+DAAS;AACpB;AACA;AACA;AACA;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,oDAAoD,uBAAuB;AAC3E;AACA;AACA,sDAAsD,UAAU;AAChE;AACA;AACA,sDAAsD,UAAU;AAChE,6BAA6B,+DAAU,eAAe,gBAAgB;AACtE;AACA,+CAA+C,KAAK;AACpD;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iBAAiB;AACnE;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAQ;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,MAAM,8DAAU;AAChB;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8DAAa,QAAQ,2BAA2B;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAO;AACf;AACA;AACA,MAAM;AACN;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,UAAU;AAC5D;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,MAAM,+DAAW;AACjB;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;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI,8DAAI;AACR;AACA,KAAK;AACL;AACA,IAAI,8DAAI;AACR;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,+DAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C;AACA;AACA,oBAAoB,+DAAa;AACjC;AACA;AACA;AACA,MAAM,8DAAQ;AACd;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,qBAAqB,+DAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAI;AACpC;AACA;AACA;AACA;AACA,WAAW,0DAAQ;AACnB,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,0DAAS;AACpB,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,SAAS,yDAAyD;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,0CAA0C,0DAAO,eAAe,0DAAO;AACvE;AACA;AACA;AACA;AACA;AACA,SAAS,+DAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAW;AACtB;AACA;AACA;AACA;AACA,gBAAgB,8DAAW;AAC3B,cAAc,8DAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAA2D;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,0DAAE;AAChE;AACA;AACA;AACA,SAAS,4CAA4C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,0DAAO;AACvF;AACA;AACA;AACA;AACA;AACA,yDAAyD,0DAAO;AAChE;AACA;AACA;AACA;AACA,gGAAgG,0DAAO;AACvG;AACA;AACA;AACA;AACA;AACA,6DAA6D,0DAAO;AACpE;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wCAAwC;AACjD;AACA;AACA,wDAAwD,0DAAG;AAC3D,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA,8CAA8C,0DAAG;AACjD,0BAA0B,0DAAG;AAC7B,oBAAoB,0DAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4CAA4C;AACrD;AACA;AACA;AACA;AACA,uCAAuC,0DAAG;AAC1C;AACA;AACA,0CAA0C,0DAAG;AAC7C,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA,sDAAsD,0DAAG;AACzD,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB,SAAS,8BAA8B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB,EAAE,+DAAiB,SAAS,qBAAqB;AAC7E,WAAW,+DAA+D;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,8DAAc;AACzC,4CAA4C,0DAAG,IAAI,8DAAa;AAChE,yBAAyB,+DAAU;AACnC;AACA;AACA;AACA,WAAW,sDAAsD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA,uCAAuC,0DAAG,8BAA8B,0DAAG;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAE;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,8DAAc;AAC9B,kBAAkB,8DAAc;AAChC,uBAAuB,8DAAc;AACrC,iBAAiB,8DAAc;AAC/B,kBAAkB,8DAAc;AAChC,oBAAoB,8DAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2DAAc;AACzB;AACA;AACA,WAAW,2DAAc;AACzB;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,SAAS,oDAAoD;AAC7D,SAAS,sCAAsC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB;AAC1B,SAAS,0BAA0B;AACnC;AACA,OAAO,sBAAsB;AAC7B;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2DAAqB;AAChC;AACA;AACA,WAAW,2DAAoB;AAC/B;AACA,SAAS,2DAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB;AAC5B;AACA;AACA;AACA;AACA,2CAA2C,8BAA8B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;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,+DAA0B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,+DAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAc,QAAQ,mCAAmC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,oBAAoB,8DAAW;AAC/B;AACA;AACA;AACA;AACA,YAAY,+DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB;AAC7B;AACA,YAAY,+DAAa;AACzB;AACA;AACA,6CAA6C,8DAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAU;AACzB,eAAe,+DAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yBAAyB,+BAA+B;AACnE,WAAW,cAAc;AACzB,kDAAkD,2DAAkB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,WAAW,8DAAa,eAAe,8DAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;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,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ;AACjB,SAAS,kCAAkC;AAC3C;AACA,YAAY,8DAAW,CAAC,8DAAY;AACpC;AACA;AACA,YAAY,8DAAW,CAAC,8DAAY;AACpC,IAAI;AACJ;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA,UAAU,8DAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,UAAU,8DAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,kBAAkB;AAC/E;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,2BAA2B,+DAAc;AACzC;AACA;AACA,0BAA0B,+DAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAAe;AAC3B,UAAU,+DAAe;AACzB;AACA,UAAU;AACV;AACA;AACA,SAAS,oBAAoB;AAC7B;AACA;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC,mBAAmB,aAAa;AAChC,MAAM;AACN,mBAAmB,cAAc;AACjC,mBAAmB,aAAa;AAChC;AACA,GAAG;AACH;AACA;AACA;AACA,QAAQ,aAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,8DAAO;AACb;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAQ;AACd;AACA;AACA;AACA,MAAM,8DAAc;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI,SAAS,8DAAQ;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI,SAAS,8DAAQ;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,oBAAoB;AAC7B;AACA;AACA;AACA;AACA,uCAAuC,yBAAyB;AAChE,kBAAkB,qBAAqB;AACvC;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA,WAAW,oBAAoB;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA,QAAQ,+DAAU;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,wBAAwB,eAAe,0DAAG;AAC1C;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,mBAAmB;AAC5B,MAAM,8DAAc;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,QAAQ;AAC3B;AACA,MAAM,8DAAc;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,mBAAmB;AAC5B;AACA;AACA;AACA,SAAS,8BAA8B;AACvC;AACA,IAAI,8DAAQ;AACZ,iBAAiB,8CAA8C;AAC/D,IAAI,8DAAU;AACd;AACA;AACA;AACA,SAAS,yCAAyC;AAClD;AACA;AACA;AACA;AACA,eAAe,4CAA4C;AAC3D;AACA;AACA;AACA;AACA,aAAa,4CAA4C;AACzD;AACA;AACA;AACA,SAAS,kBAAkB;AAC3B;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,mDAAmD,eAAe;AAClE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sCAAsC;AAC/C;AACA,cAAc,sCAAsC;AACpD,WAAW,QAAQ,yBAAyB,MAAM;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,yDAAyD,8BAA8B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa;AACtB,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,2CAA2C;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,sBAAsB,8DAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAM;AAC5B;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yBAAyB,SAAS,WAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA;AACA,WAAW,0BAA0B,SAAS,WAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iDAAiD;AAC3E;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,KAAK;AACL;AACA,sBAAsB,iDAAiD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oCAAoC,gBAAgB,QAAQ,QAAQ;AAC/E,sBAAsB,+DAAa;AACnC;AACA;AACA,iBAAiB,8DAAc;AAC/B;AACA;AACA;AACA,iBAAiB,8DAAc;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,gBAAgB,8DAAc;AAC9B;AACA;AACA;AACA,gBAAgB,8DAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAQ;AACd;AACA,MAAM,8DAAU;AAChB;AACA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,0BAA0B;AACrC,yBAAyB,gEAAc;AACvC,sBAAsB,+DAAa;AACnC,sBAAsB,8DAAM;AAC5B,WAAW,2BAA2B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iCAAiC;AAC5C;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAc;AACtC,sBAAsB,8DAAc;AACpC,oBAAoB,8DAAc;AAClC,2BAA2B,8DAAc;AACzC,qBAAqB,8DAAc;AACnC;AACA,wBAAwB,8DAAc;AACtC,sBAAsB,8DAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+DAAe;AACvB,QAAQ;AACR;AACA;AACA,6BAA6B,+DAAa;AAC1C;AACA;AACA,UAAU,+DAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAU;AAChB;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAc;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,WAAW,8DAAc;AACzB;AACA;AACA;AACA,IAAI,+DAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAc;AACvC;AACA,QAAQ;AACR;AACA;AACA,uBAAuB,8DAAc;AACrC;AACA;AACA;AACA,UAAU,+DAAM;AAChB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL,IAAI,+DAAoB;AACxB;AACA;AACA;AACA;AACA,sBAAsB,8DAAM;AAC5B,yBAAyB,8DAAS;AAClC;AACA;AACA;AACA,sBAAsB,+DAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAc;AAC3B,MAAM;AACN;AACA,uCAAuC,8DAAc;AACrD;AACA,cAAc,8DAAc;AAC5B,wCAAwC,8DAAkB;AAC1D;AACA;AACA;AACA;AACA,IAAI,8DAAU;AACd;AACA;AACA;AACA,sBAAsB,8DAAM;AAC5B,yBAAyB,8DAAS;AAClC;AACA;AACA;AACA;AACA,QAAQ,+DAAU;AAClB,SAAS,+DAAU;AACnB;AACA,kBAAkB,eAAe;AACjC;AACA,YAAY,+DAAU;AACtB,aAAa,+DAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA,MAAM;AACN,MAAM,8DAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,+BAA+B;AAC7E;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS,8CAA8C;AACtE;AACA;AACA,8BAA8B,8DAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAO;AAC7B,oBAAoB,8DAAS;AAC7B,iCAAiC,8DAAM;AACvC;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C;AACA;AACA;AACA;AACA,eAAe,8DAAc;AAC7B;AACA;AACA,MAAM;AACN;AACA;AACA,iBAAiB,8DAAc;AAC/B,mBAAmB,0DAAE;AACrB,QAAQ;AACR;AACA,iBAAiB,8DAAc;AAC/B,mBAAmB,0DAAE;AACrB;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAM;AAC3B;AACA;AACA,WAAW,oCAAoC;AAC/C,IAAI,8DAAU;AACd;AACA;AACA;AACA,iBAAiB,8DAAkB;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA,kBAAkB,+DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAO;AACf;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8BAA8B;AACvC;AACA,SAAS,cAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,mBAAmB,8DAAM;AACzB,oBAAoB,8DAAM;AAC1B,qBAAqB,8DAAM;AAC3B;AACA;AACA;AACA,kBAAkB,8DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,8DAAI;AACN;AACA,EAAE,8DAAI;AACN;AACA,EAAE,8DAAI;AACN,IAAI,8DAAI;AACR,IAAI,8DAAI;AACR,IAAI,8DAAI;AACR,GAAG;AACH;AACA;AACA,EAAE,8DAAI;AACN;AACA;AACA,UAAU;AACV;AACA;AACA,SAAS,WAAW;AACpB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,SAAS,+BAA+B,cAAc;AACtD;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,UAAU;AACjB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,OAAO,WAAW;AAClB;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,SAAS,uCAAuC;AAChD,SAAS,gBAAgB;AACzB;AACA,SAAS,4CAA4C,EAAE,+DAAa;AACpE;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA,OAAO,8DAAW;AAClB,OAAO,8DAAW;AAClB;AACA;AACA;AACA,kBAAkB,8DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA;AACA,KAAK;AACL;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,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAyC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,yBAAyB;AACpC,WAAW,4CAA4C,EAAE,+DAAa;AACtE,WAAW,gBAAgB;AAC3B,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA,kBAAkB,8DAAM;AACxB;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iCAAiC;AAC5C,qBAAqB,8DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+DAAS;AACf;AACA;AACA,MAAM,+DAAS;AACf,MAAM;AACN,sBAAsB,8DAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAa;AACxC;AACA;AACA;AACA,QAAQ,+DAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,+DAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,wEAAwE;AACnF,qBAAqB,8DAAM;AAC3B;AACA;AACA,sBAAsB,+DAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA,MAAM,8DAAI;AACV;AACA;AACA;AACA;AACA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA,MAAM,8DAAI;AACV;AACA;AACA;AACA,IAAI,8DAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA,mBAAmB,8DAAM;AACzB;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,WAAW,4CAA4C,EAAE,+DAAa;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,MAAM,+DAAqB;AAC3B;AACA;AACA;AACA;AACA,MAAM,+DAAoB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,+DAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+DAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,eAAe;AAClD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,2DAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,OAAO;AACP,kBAAkB,2DAAI;AACtB,kBAAkB,2DAAI;AACtB,mBAAmB,2DAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAa;AAC1B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,kBAAkB,2DAAI;AACtB,iBAAiB,2DAAI;AACrB,oBAAoB,2DAAI;AACxB,cAAc,2DAAI;AAClB,mBAAmB,2DAAI;AACvB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,8DAAW;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAa;AACrB;AACA;AACA;AACA;AACA,oCAAoC,8DAAc;AAClD;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,SAAS,UAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAc;AACxC,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,8EAA8E;AACvF;AACA;AACA,SAAS,sBAAsB;AAC/B,sBAAsB,8DAAa;AACnC,sBAAsB,8DAAa;AACnC,wBAAwB,8DAAa;AACrC;AACA,gBAAgB,+DAAO;AACvB;AACA;AACA,aAAa,YAAY,GAAG,YAAY;AACxC;AACA;AACA;AACA,cAAc,+DAAO;AACrB;AACA,OAAO,8DAAa;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,0CAA0C,+DAAW;AACrD;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,QAAQ,+DAAY;AACpB;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI,+DAAc;AAClB,IAAI,+DAAc;AAClB;AACA,wBAAwB,8DAAa;AACrC;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA,UAAU,+DAAY;AACtB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS,eAAe;AACxB,gBAAgB,6DAA6D;AAC7E;AACA;AACA,wBAAwB,+DAAY;AACpC;AACA,MAAM;AACN,kBAAkB,WAAW;AAC7B;AACA,IAAI;AACJ,gBAAgB,eAAe;AAC/B;AACA;AACA;AACA,+CAA+C,wBAAwB;AACvE,cAAc,8DAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,wBAAwB;AACnC,SAAS,UAAU;AACnB;AACA;AACA;AACA,sBAAsB,8DAAI;AAC1B,sBAAsB,8DAAI;AAC1B;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yBAAyB;AAClC;AACA;AACA;AACA;AACA,+BAA+B,QAAQ,mBAAmB,UAAU,gCAAgC,UAAU;AAC9G;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+DAAkB;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAY;AACvB;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB,eAAe,8DAAc;AAC7B,eAAe,8DAAc;AAC7B;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAoD,8DAAK;AACzD;AACA;AACA;AACA,4BAA4B,8DAAK;AACjC;AACA;AACA,gBAAgB,8DAAe,gDAAgD,8DAAK;AACpF,uBAAuB,8DAAK;AAC5B;AACA;AACA;AACA,gBAAgB,wCAAwC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,8DAAe;AAClC,cAAc,yCAAyC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAc;AACzB;AACA;AACA,WAAW,UAAU;AACrB,eAAe,8DAAc;AAC7B,eAAe,8DAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA,kDAAkD,8DAAK;AACvD;AACA;AACA;AACA;AACA,QAAQ;AACR;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,+DAAkB;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAY;AACpB;AACA;AACA;AACA;AACA,uBAAuB,8DAAK;AAC5B,uBAAuB,8DAAK,aAAa,8DAAK;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,8DAAS;AAC7B,WAAW,8DAAc,sCAAsC,oEAAkB;AACjF;AACA;AACA;AACA;AACA,UAAU,8DAAO;AACjB;AACA,OAAO,+DAAY;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,6DAA6D,0DAAE;AAC/D,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA,mBAAmB,8DAAM;AACzB;AACA;AACA,yBAAyB,+DAAe;AACxC,6BAA6B,8DAAS;AACtC;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,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,0DAAE;AACjE,kBAAkB,gBAAgB;AAClC;AACA,6BAA6B,8DAAS,CAAC,+DAAe,4BAA4B,0DAAO;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,cAAc;AACtC,+BAA+B,QAAQ;AACvC;AACA,mBAAmB,8DAAM;AACzB,WAAW,2CAA2C;AACtD,WAAW,eAAe;AAC1B,SAAS,8DAAa;AACtB,2BAA2B,+DAAa;AACxC,sBAAsB,8DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+DAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA;AACA;AACA,IAAI,8DAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACA,qDAAqD,0DAAG;AACxD,IAAI;AACJ;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAa;AACtB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,eAAe,8DAAc;AAC7B,eAAe,8DAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAQ;AAC9B;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAAG;AAC/B;AACA,WAAW,+DAAe,2BAA2B,8DAAS;AAC9D;AACA;AACA,QAAQ,8DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0DAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0BAA0B;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB,WAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAM;AAC7B;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAU;AAChB;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mCAAmC;AACnD,WAAW,oCAAoC;AAC/C,WAAW,qCAAqC;AAChD,SAAS,uCAAuC;AAChD,QAAQ,wCAAwC;AAChD,SAAS,yCAAyC;AAClD,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAa;AACnB;AACA;AACA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA,OAAO,8DAAc;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,8DAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,UAAU;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,WAAW,QAAQ,EAAE,+DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,IAAI,+DAAO;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,SAAS,kCAAkC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8DAAc;AACxB,UAAU,8DAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,YAAY,8DAAW;AACvB,UAAU,8DAAW;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAc;AACnC;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA,WAAW,8DAAY;AACvB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,QAAQ,EAAE,8DAAY;AAC9B;AACA,MAAM,mCAAmC;AACzC,MAAM,mCAAmC;AACzC,IAAI;AACJ;AACA,QAAQ,QAAQ,EAAE,8DAAY;AAC9B;AACA,MAAM,mCAAmC;AACzC,MAAM,mCAAmC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB;AAC3B,SAAS;AACT;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA,oBAAoB,gCAAgC;AACpD;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAE4rB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxgV5rB;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,wBAAwB,QAAQ;AAChC;AACA;AACA,MAAM;AACN,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;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,kBAAkB,UAAU;AAC5B;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;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,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,SAAS,8BAA8B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI;AACJ;AACA;AACA;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,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,SAAS;AAC3C,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AAC/B;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS;AACjD,eAAe,IAAI,IAAI,IAAI,IAAI,IAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,IAAI;AACJ,sBAAsB,uBAAuB;AAC7C;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,UAAU;AACxB;AACA;AACA;AACA,MAAM;AACN,uCAAuC,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,oBAAoB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sCAAsC,sCAAsC;AAC5E;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yCAAyC,kCAAkC;AAC3E,SAAS,iGAAiG;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wDAAwD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wDAAwD;AACjE;AACA;AACA,IAAI;AACJ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,QAAQ;AACjB,SAAS,WAAW;AACpB;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU;AACnC,yBAAyB,UAAU;AACnC;AACA;AACA;AACA,yBAAyB,UAAU;AACnC,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;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,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB;AAC3B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,SAAS,iCAAiC;AAC1C;AACA;AACA;AACA;AACA,SAAS,WAAW;AACpB;AACA;AACA,OAAO,eAAe;AACtB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe;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,6BAA6B,aAAa;AAC1C,4BAA4B,YAAY;AACxC;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,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4CAA4C;AACrD,SAAS,oBAAoB;AAC7B;AACA,OAAO,kBAAkB;AACzB;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,SAAS,4CAA4C;AACrD;AACA,SAAS,6BAA6B;AACtC,SAAS,yBAAyB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAA4C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;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,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8CAA8C;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uCAAuC,WAAW;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAqD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEq4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1jFr4E;AACA;AACA;AACA;AACA;AACA;AACq3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNj1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACApC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoD;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,gBAAgB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,gBAAgB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B,mBAAmB,uDAAW;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,kCAAkC;AACxD;AACA;AACA,MAAM;AACN;AACA,MAAM;;AAEN,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA,IAAI;AACJ,oBAAoB,0BAA0B;AAC9C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,sDAAsD;AAC7G;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,+BAA+B;AACrD;AACA;;AAEA;AACA;;AAEA;AACA,IAAI;;;AAGJ,kBAAkB,iBAAiB;AACnC;;AAEA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC,yEAAyE,SAAS;AAClF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wEAAwE;AACxE,2CAA2C;;AAE3C,sBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,MAAM;AACN;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;;AAEA,oBAAoB,iBAAiB;AACrC;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,0CAA0C,QAAQ;AAClD;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;;AAEA,oBAAoB,iBAAiB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,qDAAS;AAC5B,qBAAqB,uDAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;;AAE1B,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;AACA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,gBAAgB,gBAAgB;AAChC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,wBAAwB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,wBAAwB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,uDAAW;;AAE9B,kBAAkB,gBAAgB;AAClC;;AAEA,oBAAoB,iBAAiB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR,wBAAwB,qBAAqB;AAC7C;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,uDAAW;AAC9B;AACA;;AAEA,cAAc,iBAAiB;AAC/B;AACA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;AACA,MAAM;AACN,kBAAkB,qBAAqB;AACvC;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA,MAAM;AACN,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA,MAAM;AACN,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;;AAExC;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB;;AAEtB,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;;AAEtB,kBAAkB,iBAAiB;AACnC,qCAAqC;;AAErC;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA,oBAAoB,kBAAkB;AACtC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB;;AAEvB,kBAAkB,iBAAiB;AACnC;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,gBAAgB;AAC9B;;AAEA,gBAAgB,kBAAkB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA,sBAAsB,0BAA0B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,SAAS;AACT,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,kBAAkB,uBAAuB;AACzC;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,CAAC,EAAC;AACotB;;;;;;;;;;;;;;;;;;;;ACz8CruB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,YAAY;AACZ,0BAA0B;AAC1B,6BAA6B;AAC7B;AACA,kBAAkB;AAClB;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,2BAA2B;AAC3B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qBAAqB;AACrB,8BAA8B;AAC9B;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,0BAA0B;AAC1B,uBAAuB;AACvB,gBAAgB;AAChB,kBAAkB;AAClB,KAAK;AACL;AACA;AACA,KAAK;AACL,0BAA0B;AAC1B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,eAAe;AACf,cAAc;AACd,cAAc;AACd,oBAAoB;AACpB,sBAAsB;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEkE;;;;;;;;;;;;;;;;;ACnJ3B;AACxB;AACf;AACA;AACA,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA,MAAM;;AAEN;AACA,2CAA2C,MAAM;AACjD;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACvC+C;AACA;AAC/C,iEAAe;AACf,eAAe;AACf,eAAe;AACf,CAAC;;;;;;;;;;;;;;;;ACL8C;;AAE/C;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,oFAAoF;;AAEpF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,8BAA8B,OAAO,8BAA8B;AAC1F;AACA,IAAI;AACJ,oBAAoB,8BAA8B;;AAElD;AACA,sBAAsB,8BAA8B;AACpD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,wDAAM;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe;AACf;AACA,CAAC;;;;;;;;;;;;;;;ACrCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU;;AAEd;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnDyC;AACM;AAC/C,iEAAe;AACf,YAAY;AACZ,eAAe;AACf,CAAC;;;;;;;;;;;;;;;ACLc;AACf;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AACyC;AACR;AAC6B;AACR;AACF;AACE;AACN;AACM;AACN;AACT;AACM;AACE;AACV;AACF;AACa;AACT;AACU;AACR;AACF;AACe;AACjB;AACoB;AACzD;AACA,eAAe;AACf,QAAQ;AACR,WAAW;AACX,YAAY;AACZ,OAAO;AACP,MAAM;AACN,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,eAAe;AACf,SAAS;AACT,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA,aAAa,wDAAM,GAAG;AACtB;;AAEA,qBAAqB,0DAAC;AACtB;AACA,MAAM,0DAAC;AACP,0BAA0B,wDAAM,GAAG;AACnC;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,MAAM;;;AAGN;AACA;AACA,qBAAqB,kEAAU;AAC/B,oBAAoB,gEAAS;AAC7B;AACA,KAAK;AACL,qBAAqB,kEAAU;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,mEAAkB;AACxC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,GAAG;;AAER,yBAAyB,wDAAM,GAAG,EAAE,qDAAQ,qBAAqB;;AAEjE,oBAAoB,wDAAM,GAAG;AAC7B,4BAA4B,wDAAM,GAAG;AACrC,0BAA0B,wDAAM,GAAG,WAAW;;AAE9C;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,MAAM;;;AAGN,eAAe,sDAAC,EAAE;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAAC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qDAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,4BAA4B;;AAE5B;AACA;AACA,MAAM;;;AAGN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,sCAAsC,mBAAmB;AACzD;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU;;AAEhB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,qCAAqC,EAAE,iBAAiB,eAAe,qCAAqC,EAAE,aAAa;AACzJ;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC;;AAErC,gBAAgB,0DAAC;AACjB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,+DAA+D;AAChF;;AAEA;AACA;AACA,oBAAoB,0DAAC,qDAAqD;;AAE1E;;AAEA;AACA;;AAEA;AACA,OAAO;;;AAGP;;AAEA;AACA,uBAAuB,uDAAW;AAClC;AACA,mBAAmB,0DAAC;AACpB;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,MAAM;;;AAGN,yBAAyB;;AAEzB;AACA;AACA,MAAM;;;AAGN,yBAAyB;;AAEzB;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;AACN;AACA,MAAM;;;AAGN,2BAA2B;;AAE3B,+BAA+B;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA,kCAAkC;;AAElC,gCAAgC;;AAEhC,2BAA2B;;AAE3B;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,6DAAW;AACjB;;AAEA;AACA;AACA;;AAEA;AACA,IAAI,wDAAM;AACV;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,qDAAQ;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,YAAY,iEAAM,EAAE,qEAAQ;AAC5B,iEAAe,MAAM;;;;;;;;;;;;;;;ACjmBrB,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;;;;;;;ACzHD;AACA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA,CAAC;;;;;;;;;;;;;;;;;;;;;;AC3GwC;AACI;AACF;AACF;AACJ;AACF;AACE;AACrC;;AAEA;;AAEA;AACA,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA,6HAA6H,oDAAQ;AACrI,IAAI;AACJ,2CAA2C,oDAAQ;AACnD;AACA;;AAEA;AACA;AACA,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA,IAAI;AACJ,wBAAwB,6DAAiB;AACzC,uBAAuB,4DAAgB;AACvC,sBAAsB,2DAAe;;AAErC;AACA,sBAAsB,yDAAa;AACnC;;AAEA,mBAAmB,wDAAY;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe;AACf;AACA;AACA,CAAC;;;;;;;;;;;;;;;AChGc;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACZe;AACf;AACA;AACA;AACA;AACA,IAAI;AACJ,0CAA0C;;AAE1C;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA,IAAI,UAAU;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1Ce;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;AClCsD;AACvC;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,IAAI;;;AAGJ,uBAAuB,qDAAG;AAC1B,uDAAuD;;AAEvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,qDAAG;AAC1B,EAAE,0DAAQ;AACV;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;;AAGJ;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iFAAiF;AACjF;;AAEA;AACA,oFAAoF;AACpF;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/IyC;AACL;AACQ;AAC7B;AACf,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,4BAA4B,qDAAG;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,+CAA+C,0DAAC;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC;;AAEtC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,sDAAsD;;AAEtD;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ,gDAAgD;;AAEhD;AACA;;;;;;;;;;;;;;;;;;AC7NoD;AAChB;AACQ,CAAC;;AAE7C;AACA;AACA,sBAAsB,uDAAW,aAAa,qDAAS;AACvD;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,mBAAmB,uDAAW;AAC9B,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,0DAAC;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;;AAE9C;;AAEA;AACA,gBAAgB,0DAAC;AACjB;;AAEA,sFAAsF,sBAAsB;AAC5G,8DAA8D;;AAE9D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,wBAAwB,qDAAG;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,0DAAC;AACnC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACjH+C;AACI;AACnD,iEAAe;AACf,eAAe;AACf,iBAAiB;AACjB,CAAC;;;;;;;;;;;;;;;ACLc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACRe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACRuC;AACQ;AAC/C,iEAAe;AACf,WAAW;AACX,eAAe;AACf,CAAC;;;;;;;;;;;;;;;;;ACLsC;AACH;AACrB;AACf,iBAAiB,qDAAS;AAC1B;;AAEA;AACA;AACA;;AAEA,oBAAoB,0DAAC;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpCe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,gCAAgC;AAClD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClByC;AACN;AACQ;AAC3C,iEAAe;AACf,YAAY;AACZ,SAAS;AACT,aAAa;AACb,CAAC;;;;;;;;;;;;;;;;;ACPwC;AACL;AACrB;AACf;AACA,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA,IAAI,UAAU;;AAEd,uDAAuD,0DAAC;AACxD,yBAAyB,kBAAkB,GAAG,2BAA2B;AACzE,sCAAsC,kBAAkB;;AAExD;AACA;;AAEA;AACA,sBAAsB,oBAAoB;AAC1C,0BAA0B,0DAAC,4CAA4C,mBAAmB,EAAE,uBAAuB;AACnH;AACA;;AAEA,sCAAsC,kBAAkB;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,0DAAC;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH,kBAAkB,yBAAyB;AAC3C,qBAAqB,0DAAC;AACtB;;AAEA,yCAAyC,QAAQ;AACjD,sBAAsB,0DAAC;AACvB;AACA;;;;;;;;;;;;;;;AC1De;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,0BAA0B,kBAAkB,GAAG,2BAA2B,IAAI,kBAAkB,GAAG,uBAAuB;AAC1H;AACA;;;;;;;;;;;;;;;ACTe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,sDAAsD;;AAEtD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxC4C;AAC7B;AACf,uCAAuC;AACvC;AACA;;AAEA;AACA,MAAM,wDAAM;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,wDAAM;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,wDAAM;AACV;AACA;;;;;;;;;;;;;;;;ACrCuC;AACxB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,iBAAiB,qDAAS;;AAE1B,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAsB,6BAA6B;AACnD;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK,GAAG;;AAER;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;;AC1EuC;AACxB;AACf;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qDAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;ACnEmC;AACQ;AACJ;AACA;AACE;AACQ;AACU;AAC3D,iEAAe;AACf,SAAS;AACT,aAAa;AACb,WAAW;AACX,WAAW;AACX,YAAY;AACZ,gBAAgB;AAChB,qBAAqB;AACrB,CAAC;;;;;;;;;;;;;;;ACfD;AACe;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AC7BA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AC9DA;AACe;AACf;AACA;AACA;;;;;;;;;;;;;;;;ACJ6D;AAC9C;AACf;AACA,+FAA+F,aAAa;AAC5G;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA,4FAA4F,MAAM;AAClG,MAAM;AACN;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;;AAE1C,oCAAoC;;AAEpC;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,sDAAsD,0BAA0B;;AAEnI;AACA,0CAA0C;;AAE1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;AACA,QAAQ,sEAAoB;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACpLoC;AACa;AAClC;AACf;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,0DAAC;;AAE1B;AACA;AACA;AACA,+CAA+C,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AAC5I,QAAQ,0DAAQ;AAChB;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA,6CAA6C,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AAC1I,MAAM,0DAAQ;AACd;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;ACtCA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC/Be;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACT+C;AACI;AACJ;AAC/C,iEAAe;AACf,eAAe;AACf,iBAAiB;AACjB,eAAe;AACf,CAAC;;;;;;;;;;;;;;;ACPc;AACf;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACRe;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kDAAkD,mDAAmD;AACrG;;AAEA,2BAA2B,KAAK;;AAEhC;AACA;AACA,yCAAyC,KAAK;AAC9C;AACA;;AAEA,wCAAwC,KAAK;;AAE7C;AACA,wCAAwC,KAAK;AAC7C,MAAM;AACN,wCAAwC,KAAK;AAC7C;AACA;AACA;;;;;;;;;;;;;;;;AChCiD;AAClC;AACf;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE,8DAAc;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;ACfiD;AAClC;AACf;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA,EAAE,8DAAc;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;AClBqD;AACtC;AACf;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,8DAAY;AACrC;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrB6C;AACA;AACA;AACA;AACF;AAC3C,iEAAe;AACf,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,aAAa;AACb,CAAC;;;;;;;;;;;;;;;ACXc;AACf;AACA;;;;;;;;;;;;;;;ACFe;AACf;AACA;;;;;;;;;;;;;;;ACFe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,wCAAwC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1D;;AAEA;AACA,oDAAoD;;AAEpD;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;AC/C6D;AAC9C;AACf;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA,+EAA+E,kFAAkF,+BAA+B;;AAEhM;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,QAAQ,sEAAoB;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACpFyC;AACI;AACQ;AACI;AACI;AACZ;AACU;AACJ;AACE;AACzD,iEAAe;AACf,YAAY;AACZ,cAAc;AACd,kBAAkB;AAClB,oBAAoB;AACpB,sBAAsB;AACtB,gBAAgB;AAChB,qBAAqB;AACrB,mBAAmB;AACnB,oBAAoB;AACpB,CAAC;;;;;;;;;;;;;;;ACnBc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACrEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN,kBAAkB,4CAA4C;AAC9D;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;;;AAGJ,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA,IAAI;;;AAGJ,uEAAuE,UAAU;AACjF;;;;;;;;;;;;;;;;AChDoC;AACrB;AACf;AACA;AACA,gBAAgB,0DAAC,gBAAgB,kBAAkB;AACnD;AACA;;AAEA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,0DAAC;AACtC,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACnCe;AACf;;AAEA;AACA,qDAAqD;;AAErD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACjDe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;AChCuD;AACxC;AACf;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;AACA;AACA;AACA,GAAG,GAAG;;AAEN;AACA,IAAI,gEAAc;AAClB,IAAI,gEAAc;AAClB;;AAEA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA,GAAG;;AAEH,kBAAkB,kBAAkB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA,mDAAmD;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA,yDAAyD,UAAU;AACnE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAgB,yCAAyC;AACzD,KAAK;AACL;;AAEA;AACA;AACA,uCAAuC,yCAAyC;AAChF,KAAK;AACL;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL,gBAAgB,aAAa;AAC7B,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,IAAI,gEAAc,yDAAyD,aAAa;AACxF,IAAI,gEAAc,wDAAwD,kEAAkE;AAC5I;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpTe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,wBAAwB,yBAAyB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,+BAA+B;AAC1M;;AAEA;AACA,6CAA6C,kBAAkB,4BAA4B,YAAY;AACvG,IAAI;AACJ;AACA,IAAI;;;AAGJ;;AAEA;AACA;AACA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,UAAU;AAC1H,MAAM;AACN,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,UAAU;AACpH;AACA,IAAI;;;AAGJ,0CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA,IAAI;;;AAGJ,0CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAC1J,MAAM;AACN,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AACpJ;;AAEA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAC1J,MAAM;AACN,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AACpJ;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AC/De;AACf;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;AACA;AACA;;;;;;;;;;;;;;;;ACPoC;AACrB;AACf;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,0DAAC;AAC1B;;;;;;;;;;;;;;;;;AC3CoE;AAChC;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD,4BAA4B,QAAQ,IAAI,cAAc;AACtD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,0DAAC;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA,0CAA0C,0EAAiB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,0DAAC;;AAEzB;AACA;;AAEA;AACA;AACA,0EAA0E,EAAE,OAAO,EAAE;AACrF;AACA;;AAEA,2BAA2B,2CAA2C;AACtE;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;;AAEnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA,iEAAiE,oBAAoB;AACrF;AACA;AACA,iCAAiC;;AAEjC;AACA,2BAA2B,0DAAC;AAC5B;;AAEA,cAAc,0DAAC;AACf;AACA;AACA,uBAAuB,0DAAC;AACxB;AACA,mEAAmE,EAAE,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE;AAC9H;AACA,KAAK,GAAG;;AAER;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA,0CAA0C,0EAAiB;AAC3D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA,2CAA2C,0EAAiB;AAC5D;AACA;;AAEA;AACA,iBAAiB,0DAAC,iBAAiB,qCAAqC;AACxE,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;ACrSA;;AAEA;AACyC;AACQ;AAClC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,0DAAQ;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;;AAEA,kEAAkE;AAClE;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,qBAAqB,uDAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAW;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,uDAAW;AAChC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;AC7NA,kCAAkC,iBAAiB;AACF;AAClC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;;AAEzB;AACA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,0DAAQ;AAClB;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;AC9LyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,sBAAsB;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;;AAEA;AACA;AACA,qBAAqB,GAAG,QAAQ,2BAA2B;AAC3D,QAAQ;AACR;AACA,qBAAqB,GAAG,SAAS,2BAA2B;AAC5D,QAAQ;AACR,gBAAgB,GAAG;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,2BAA2B,OAAO,2BAA2B;AACzG;AACA,sBAAsB,GAAG,IAAI,GAAG,IAAI,GAAG;AACvC,kBAAkB,OAAO;AACzB,gBAAgB,YAAY;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,oEAAY;AAClC;;AAEA;AACA;;AAEA;AACA,wBAAwB,oEAAY;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI,oFAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,kEAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;;AC5HyD;AACJ;AACI;AAC1C;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA,kEAAkE;;AAElE;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW,KAAK,WAAW,KAAK,WAAW,eAAe,QAAQ,eAAe,QAAQ,aAAa,MAAM;AACxJ,wBAAwB,oEAAY;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,oEAAY;AACxC;;AAEA;AACA,2BAA2B,oEAAY;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,EAAE,kEAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;;;ACtGyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,MAAM;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,oDAAoD,OAAO;AAC3D;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;;;AAGR;AACA,2BAA2B,MAAM,QAAQ,0CAA0C,IAAI,gCAAgC;AACvH,OAAO,GAAG;;AAEV;AACA;AACA,OAAO;AACP;AACA;AACA,sCAAsC,KAAK,eAAe,KAAK,eAAe,KAAK;AACnF,0DAA0D,qDAAqD,cAAc,qDAAqD;AAClL;AACA,uCAAuC,gBAAgB,IAAI,cAAc,EAAE,YAAY,GAAG;;AAE1F;AACA;;AAEA;AACA,sBAAsB,oEAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,oEAAY;AACpC;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI,oFAA0B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,kEAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;ACzJoC;AACiB;AACtC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,0DAAC;AAC3B;AACA;;AAEA;AACA,qBAAqB,YAAY;AACjC,SAAS;AACT,QAAQ;AACR;;AAEA;AACA,0BAA0B,0DAAC;AAC3B;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,+BAA+B,eAAe,8BAA8B,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG;;AAEvJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,0DAAC,oCAAoC,8BAA8B;AAC5F;AACA;;AAEA;AACA,wBAAwB,0DAAC,oCAAoC,kCAAkC;AAC/F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,eAAe;AAC7D,sCAAsC,eAAe;AACrD,KAAK;;AAEL;AACA;AACA,oDAAoD,sCAAsC,MAAM,iBAAiB,yCAAyC,mBAAmB;AAC7K,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO,OAAO,OAAO,qBAAqB,0BAA0B,MAAM,2BAA2B;AAChJ;AACA;;AAEA;AACA,8CAA8C,QAAQ,cAAc,0CAA0C,eAAe,2CAA2C;AACxK;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA,EAAE,kEAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;;ACnLqD;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,MAAM;AACN;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,oEAAY;AACpC;AACA;AACA,OAAO,2BAA2B,GAAG,MAAM,GAAG;AAC9C;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI,oFAA0B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,kEAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;;;ACrEyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,oEAAY;AACrC;;AAEA;AACA,wBAAwB,oEAAY;AACpC;;AAEA;AACA;AACA;;AAEA,uCAAuC,GAAG,MAAM,GAAG,mBAAmB,QAAQ,eAAe,QAAQ;AACrG,wBAAwB,oEAAY;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI,oFAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,kEAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;ACrG4C;AAC7B;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,MAAM,UAAU;;AAEhB;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,YAAY,qDAAG;AACf,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU;;AAEhB,yBAAyB,qDAAG;AAC5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;;;AAGA,0BAA0B,qDAAG;AAC7B;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,QAAQ;;;AAGR;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACpPe;AACf;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM,sBAAsB;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,8EAA8E,aAAa;AAC3F;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,uCAAuC,kCAAkC;AACzE,KAAK;;AAEL;AACA;AACA;;AAEA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnHoD;AAChB;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,mBAAmB,uDAAW;AAC9B,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,yBAAyB,cAAc,QAAQ;AACrG;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,uDAAuD;AACzG;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qDAAqD,YAAY;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,0DAAC;AACP;AACA;;AAEA;AACA;AACA,MAAM,0DAAC;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;AC/FuC;AACxB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,qDAAS;AAC5B;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qDAAS;AAC5B;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,KAAK,GAAG,IAAI,GAAG,MAAM;AACtC,MAAM;AACN,iBAAiB,IAAI,GAAG,MAAM;AAC9B;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,qDAAqD,YAAY;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qDAAS;AAC5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qDAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;ACrJA;AACoD;AAChB;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB,uDAAW;AAC9B,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,iCAAiC,yBAAyB,wCAAwC,+BAA+B;AACjI;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,wBAAwB;AAC9C;;AAEA;AACA,0DAA0D;;AAE1D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA,MAAM;AACN;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI,0DAAC;AACL;AACA;;AAEA;AACA;AACA,IAAI,0DAAC;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;AClIuC;AACH;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE,yBAAyB,4BAA4B,MAAM;AAC3H,sCAAsC,oBAAoB,QAAQ,mBAAmB,SAAS,oBAAoB;;AAElH;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,0DAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,WAAW;AAC9D;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,0DAAC;;AAE/B;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;;AAEA;AACA,0FAA0F,mBAAmB,UAAU,kCAAkC;AACzJ;AACA,YAAY;AACZ,mEAAmE,kCAAkC,4BAA4B,mBAAmB;AACpJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,wBAAwB,4BAA4B,MAAM;AAC9F;AACA;AACA,QAAQ;;AAER;AACA;;AAEA;AACA;AACA,eAAe,0DAAC;AAChB;;AAEA,aAAa,0DAAC;AACd;;AAEA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D,kCAAkC,0DAAC,4CAA4C,0DAAC;AAChF;AACA,OAAO;AACP,MAAM;AACN,gCAAgC,iCAAiC;AACjE;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2EAA2E;;AAE3E,kDAAkD,cAAc;AAChE;AACA,UAAU;;;AAGV,+BAA+B,iBAAiB;AAChD;AACA;AACA,QAAQ;AACR,kDAAkD,4BAA4B;AAC9E;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qDAAS;AAC5B;AACA,iEAAiE,0DAAC,wCAAwC,0DAAC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,oBAAoB,wBAAwB;AAC5C;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;AC1RmD;AACE;AACR;AACM;AACQ;AAC5C;AACf;AACA,CAAC;AACD;AACA,iBAAiB,oEAAgB;AACjC,kBAAkB,qEAAiB;AACnC,cAAc,iEAAa;AAC3B,iBAAiB,oEAAgB;AACjC,qBAAqB,wEAAoB;AACzC,GAAG;AACH;;;;;;;;;;;;;;;ACfe;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA,kBAAkB,yBAAyB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;AC/De;AACf;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1Be;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;;AAEA;AACA,oBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACjCe;AACf;AACA;;AAEA,kBAAkB,0BAA0B;AAC5C;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACTe;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;;AAEA;AACA;;AAEA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;;;;AC9CA;AACuC;AACH;AACkB;AACvC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uBAAuB,qDAAG;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,qDAAG;AACrD;AACA;AACA,MAAM;AACN;AACA;;;AAGA,+BAA+B,qDAAG;AAClC;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;;;AAGN,kDAAkD;;AAElD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,eAAe,0DAAC;AAChB;;AAEA;AACA,8CAA8C;;AAE9C;AACA;AACA;;AAEA;AACA;AACA,4FAA4F;AAC5F,QAAQ,6EAA6E;AACrF,MAAM;AACN;AACA;;AAEA;AACA,uCAAuC;;AAEvC;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,qDAAG;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA,mCAAmC;AACnC;;AAEA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qDAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAQ;AAC9B;AACA,aAAa,MAAM,aAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,0DAAQ;AAC9B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,UAAU;;;AAGV,mDAAmD;;AAEnD,0GAA0G;;AAE1G;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,0DAAC;AAChB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;ACrasF;AAClD;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,0DAAC;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,oFAAyB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA,iDAAiD,0DAAC,2BAA2B,0DAAC;AAC9E;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;ACxLoC;AACgC;AACkB;AACvE;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B,4BAA4B,IAAI;AAChC,wBAAwB,IAAI;AAC5B,uBAAuB,IAAI;AAC3B,qBAAqB,IAAI;AACzB,sBAAsB,IAAI;AAC1B,+BAA+B,IAAI;AACnC,mCAAmC,IAAI;AACvC,yBAAyB,IAAI;AAC7B,oBAAoB,IAAI;AACxB,0BAA0B,IAAI;AAC9B,wBAAwB,IAAI;AAC5B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN,sCAAsC,kBAAkB,GAAG,SAAS,2BAA2B,kBAAkB,GAAG,SAAS,GAAG,SAAS;AACzI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,6CAA6C;;AAE5G;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uGAAuG,yBAAyB,EAAE,OAAO;;AAEzI;AACA;AACA,0BAA0B,0DAAC;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mCAAmC,gBAAgB;AACnD,sCAAsC,yBAAyB;AAC/D;;AAEA;AACA;AACA,sDAAsD,QAAQ;AAC9D,2DAA2D,yBAAyB;AACpF;;AAEA,qFAAqF,yBAAyB;AAC9G,cAAc;AACd;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mEAAmE,cAAc;AACjF;AACA;;AAEA;AACA,eAAe,0EAAiB;AAChC,eAAe,0EAAiB;AAChC;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA,eAAe,0EAAiB,sEAAsE,OAAO,WAAW,OAAO;AAC/H;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,qBAAqB;AAC3C;AACA;AACA,UAAU;AACV,gCAAgC,sBAAsB,SAAS,mBAAmB,MAAM,qBAAqB;AAC7G;AACA;;AAEA;AACA,2CAA2C,0EAAiB;AAC5D;;AAEA;AACA;AACA;AACA,QAAQ;AACR,yCAAyC,oBAAoB,qCAAqC,kBAAkB;AACpH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR,yCAAyC,4BAA4B;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,oFAAyB;AACxD;AACA,KAAK;AACL;AACA;AACA,cAAc,0DAAC;AACf;;AAEA;AACA,wCAAwC;;AAExC;AACA;AACA,cAAc,0DAAC;AACf;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,qBAAqB,EAAE,YAAY;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,0EAAiB;AACvC;AACA,oBAAoB,0DAAC;AACrB;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,0EAAiB;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;;AAEN,kGAAkG,0DAAC;AACnG;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;ACzZoC;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,MAAM;AACN,gBAAgB,0DAAC;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,aAAa,uCAAuC;AACpD,MAAM;AACN,aAAa,yBAAyB;AACtC;;AAEA;AACA,aAAa,2BAA2B;AACxC,MAAM;AACN,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,EAAE,IAAI,EAAE;AAC3C,MAAM;AACN;AACA,mCAAmC,EAAE,IAAI,EAAE,eAAe,aAAa;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,0DAAC;AACP;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,0BAA0B,0DAAC;AAC3B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;ACjHyC;AACL;AACa;AACqC;AACvE;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA,uCAAuC,OAAO;AAC9C,kCAAkC,QAAQ;AAC1C,MAAM;AACN,4CAA4C,OAAO;AACnD,mCAAmC,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C,MAAM;AACN,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,0DAAQ;AAC5B;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,8BAA8B,oFAAyB;AACvD;AACA,KAAK;AACL;AACA;AACA,cAAc,0DAAC;;AAEf;AACA;AACA;;AAEA,+BAA+B,kCAAkC;;AAEjE;AACA,gBAAgB,0DAAC,gBAAgB,kCAAkC;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;ACxWiD;AACb;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0DAAC;AACzB;AACA;;AAEA;AACA,8BAA8B,0DAAC;AAC/B,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA,4FAA4F,aAAa;AACzG,4FAA4F,aAAa;AACzG,qEAAqE,oEAAoE,uFAAuF;AAChO;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,MAAM,SAAS,0DAAQ;AACvB,iDAAiD;AACjD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA,UAAU;;;AAGV,gHAAgH,iBAAiB;AACjI,gHAAgH,iBAAiB;;AAEjI;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU,2FAA2F;AACrG;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,sBAAsB;AAC5C,sEAAsE,qBAAqB;AAC3F;AACA,MAAM;AACN,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;AC3MoC;AACmB;AACxC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C,0DAAC,kDAAkD,0DAAC,gBAAgB,yBAAyB,6BAA6B,MAAM,IAAI,MAAM;AACpL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,SAAS;AACtC;AACA;;AAEA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,yBAAyB;AAC1D,MAAM;AACN,iCAAiC,iBAAiB;AAClD;AACA,qCAAqC,yBAAyB,4BAA4B,EAAE;AAC5F;AACA;AACA;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,mEAAmE,OAAO;AAC1E;AACA;;AAEA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA6C,QAAQ;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,qCAAqC;AACnE;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,MAAM,gEAAc,+CAA+C,mBAAmB;AACtF;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;AClSuC;AACH;AACiB;AACtC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,0DAAC,uBAAuB,yBAAyB;AAC1E;AACA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2DAA2D,WAAW;AACtE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2FAA2F,WAAW;AACtG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,8DAAY;AACjC,qBAAqB,8DAAY;AACjC;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe,MAAM,eAAe;AACtF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,eAAe,MAAM,eAAe;AACnH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,0DAAC,uBAAuB,yBAAyB;AAC5E;;AAEA;AACA;AACA,4DAA4D,+BAA+B;AAC3F,UAAU;AACV;AACA;AACA;;AAEA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,kEAAkE,WAAW,MAAM,WAAW;AAC9F,2EAA2E,WAAW;AACtF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0DAA0D,+BAA+B;AACzF,QAAQ;AACR;AACA;;AAEA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yBAAyB;AACxC;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,8CAA8C;;AAE9C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN,sDAAsD,kCAAkC;AACxF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,8CAA8C;;AAE9C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN,uDAAuD,kCAAkC;AACzF;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;ACnmBe;AACf,aAAa;AACb,sBAAsB;AACtB;;;;;;;;;;;;;;;;ACHyC;AAC1B;AACf,mBAAmB,uDAAW;;AAE9B;AACA;AACA;AACA,8CAA8C,gBAAgB;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;;;;;;;;;;;;;;;ACtByB;AACV;AACf,4CAA4C,WAAW,KAAK,OAAO;AACnE;AACA,gDAAgD,YAAY;;AAE5D;AACA,gBAAgB,mDAAC,mCAAmC,WAAW,KAAK,OAAO;AAC3E;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACZyU;AACzU;AACA,UAAU;AACV,aAAa;AACb,UAAU;AACV,aAAa;AACb,MAAM;AACN,YAAY;AACZ,WAAW;AACX,YAAY;AACZ,IAAI;AACJ,KAAK;AACL,SAAS;AACT,eAAe;AACf,YAAY;AACZ,aAAa;AACb,QAAQ;AACR,QAAQ;AACR,KAAK;AACL,MAAM;AACN,MAAM;AACN,MAAM;AACN,IAAI;AACJ,OAAO;AACP,IAAI;AACJ,QAAQ;AACR,SAAS;AACT,MAAM;AACN,SAAS;AACT,MAAM;AACN,SAAS;AACT,QAAQ;AACR,SAAS;AACT,SAAS;AACT,MAAM;AACN,UAAU;AACV,QAAQ;AACR,QAAQ;AACR;AACA;AACA,wBAAwB,sCAAI;AAC5B;AACA;AACA,GAAG;AACH,CAAC;AACD,iEAAe,mCAAC;;;;;;;;;;;;;;;AC7CD;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8BAA8B,qCAAqC,EAAE,OAAO;;AAE5E;AACA,gCAAgC,qCAAqC;AACrE;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;AC9Be;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;;;;;;;;;;;;;;ACTe;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,0BAA0B;AAChD;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;AClCuC;AACvC;;AAEA;AACA,iBAAiB,qDAAS;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACvBuC;AACO;AAC9C;;AAEA;AACA;AACA,EAAE,IAAI;AACN,kBAAkB,2DAAU;AAC5B,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;;AAE3D;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;;AAEA,gEAAgE,YAAY,GAAG,aAAa;AAC5F;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACtDoD;AACpD;;AAEA;AACA,iBAAiB,qDAAS;AAC1B,mBAAmB,uDAAW;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA,QAAQ,WAAW;AACnB;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCuC;;AAEvC;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW;AACjB;;AAEA;AACA;AACA,MAAM,WAAW;AACjB;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM,4DAA4D;AAClE;;;AAGA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,oEAAoE;AACpE,0EAA0E;AAC1E;AACA;;AAEA;AACA;AACA,oEAAoE;AACpE,0EAA0E;AAC1E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;;AAEA,sDAAsD,iBAAiB;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE4D;AACM;AACG;AACM;AACA;AACA;AACH;AACH;AACZ;AACA;AACkB;AAClB;AACS;AACuB;AACpB;AACN;AACQ;AACd;AACwB;AACJ;AACA;AACA;AACe;AACH;;;;;;;UCnCzF;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;WCJA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;;;;;UElDA;UACA;UACA;UACA;UACA;UACA;UACA","sources":["webpack://sixt/./node_modules/@popperjs/core/lib/createPopper.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://sixt/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://sixt/./node_modules/@popperjs/core/lib/enums.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/index.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://sixt/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://sixt/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://sixt/./node_modules/@popperjs/core/lib/popper.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/format.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/math.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/uniqueBy.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/validateModifiers.js","webpack://sixt/./node_modules/@popperjs/core/lib/utils/within.js","webpack://sixt/./node_modules/amator/index.js","webpack://sixt/./src/scripts/app.js","webpack://sixt/./src/scripts/modules/career.js","webpack://sixt/./src/scripts/modules/content-scroll.js","webpack://sixt/./src/scripts/modules/copy.js","webpack://sixt/./src/scripts/modules/count.js","webpack://sixt/./src/scripts/modules/filter.js","webpack://sixt/./src/scripts/modules/flywheel.js","webpack://sixt/./src/scripts/modules/header.js","webpack://sixt/./src/scripts/modules/hero.js","webpack://sixt/./src/scripts/modules/hyphen.js","webpack://sixt/./src/scripts/modules/lazy.js","webpack://sixt/./src/scripts/modules/lightbox.js","webpack://sixt/./src/scripts/modules/list.js","webpack://sixt/./src/scripts/modules/map.js","webpack://sixt/./src/scripts/modules/modal.js","webpack://sixt/./src/scripts/modules/navbar.js","webpack://sixt/./src/scripts/modules/ninjaForm.js","webpack://sixt/./src/scripts/modules/poster.js","webpack://sixt/./src/scripts/modules/product_sidebar.js","webpack://sixt/./src/scripts/modules/scroll.js","webpack://sixt/./src/scripts/modules/search.js","webpack://sixt/./src/scripts/modules/select.js","webpack://sixt/./src/scripts/modules/slider.js","webpack://sixt/./src/scripts/modules/svg-transition.js","webpack://sixt/./src/scripts/modules/tabs.js","webpack://sixt/./src/scripts/modules/timeline.js","webpack://sixt/./src/scripts/modules/video.js","webpack://sixt/./src/scripts/modules/videobg.js","webpack://sixt/./src/scripts/utils/eventBus.js","webpack://sixt/./src/scripts/utils/inViewport.js","webpack://sixt/./node_modules/basicscroll/dist/basicScroll.min.js","webpack://sixt/./node_modules/bezier-easing/src/index.js","webpack://sixt/./node_modules/chartjs-adapter-moment/dist/chartjs-adapter-moment.esm.js","webpack://sixt/./node_modules/chartjs-plugin-annotation/dist/chartjs-plugin-annotation.esm.js","webpack://sixt/./node_modules/chartjs-plugin-crosshair/dist/chartjs-plugin-crosshair.esm.js","webpack://sixt/./node_modules/choices.js/public/assets/scripts/choices.js","webpack://sixt/./node_modules/countup.js/dist/countUp.min.js","webpack://sixt/./node_modules/tippy.js/dist/tippy.css","webpack://sixt/./node_modules/css-loader/dist/runtime/api.js","webpack://sixt/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://sixt/./node_modules/glightbox/dist/js/glightbox.min.js","webpack://sixt/./node_modules/gsap/dist/ScrollTrigger.js","webpack://sixt/./node_modules/gsap/dist/gsap.js","webpack://sixt/./node_modules/houdinijs/dist/js/houdini.js","webpack://sixt/./node_modules/hyphen/de-1996/index.js","webpack://sixt/./node_modules/hyphen/de/index.js","webpack://sixt/./node_modules/hyphen/export-contract.js","webpack://sixt/./node_modules/hyphen/hyphen.js","webpack://sixt/./node_modules/hyphen/patterns/de-1996.js","webpack://sixt/./node_modules/in-view/dist/in-view.min.js","webpack://sixt/./node_modules/lodash.throttle/index.js","webpack://sixt/./node_modules/lozad/dist/lozad.min.js","webpack://sixt/./src/styles/main.scss?4ef5","webpack://sixt/./src/styles/admin.scss?636e","webpack://sixt/./node_modules/moment/locale/af.js","webpack://sixt/./node_modules/moment/locale/ar-dz.js","webpack://sixt/./node_modules/moment/locale/ar-kw.js","webpack://sixt/./node_modules/moment/locale/ar-ly.js","webpack://sixt/./node_modules/moment/locale/ar-ma.js","webpack://sixt/./node_modules/moment/locale/ar-sa.js","webpack://sixt/./node_modules/moment/locale/ar-tn.js","webpack://sixt/./node_modules/moment/locale/ar.js","webpack://sixt/./node_modules/moment/locale/az.js","webpack://sixt/./node_modules/moment/locale/be.js","webpack://sixt/./node_modules/moment/locale/bg.js","webpack://sixt/./node_modules/moment/locale/bm.js","webpack://sixt/./node_modules/moment/locale/bn-bd.js","webpack://sixt/./node_modules/moment/locale/bn.js","webpack://sixt/./node_modules/moment/locale/bo.js","webpack://sixt/./node_modules/moment/locale/br.js","webpack://sixt/./node_modules/moment/locale/bs.js","webpack://sixt/./node_modules/moment/locale/ca.js","webpack://sixt/./node_modules/moment/locale/cs.js","webpack://sixt/./node_modules/moment/locale/cv.js","webpack://sixt/./node_modules/moment/locale/cy.js","webpack://sixt/./node_modules/moment/locale/da.js","webpack://sixt/./node_modules/moment/locale/de-at.js","webpack://sixt/./node_modules/moment/locale/de-ch.js","webpack://sixt/./node_modules/moment/locale/de.js","webpack://sixt/./node_modules/moment/locale/dv.js","webpack://sixt/./node_modules/moment/locale/el.js","webpack://sixt/./node_modules/moment/locale/en-au.js","webpack://sixt/./node_modules/moment/locale/en-ca.js","webpack://sixt/./node_modules/moment/locale/en-gb.js","webpack://sixt/./node_modules/moment/locale/en-ie.js","webpack://sixt/./node_modules/moment/locale/en-il.js","webpack://sixt/./node_modules/moment/locale/en-in.js","webpack://sixt/./node_modules/moment/locale/en-nz.js","webpack://sixt/./node_modules/moment/locale/en-sg.js","webpack://sixt/./node_modules/moment/locale/eo.js","webpack://sixt/./node_modules/moment/locale/es-do.js","webpack://sixt/./node_modules/moment/locale/es-mx.js","webpack://sixt/./node_modules/moment/locale/es-us.js","webpack://sixt/./node_modules/moment/locale/es.js","webpack://sixt/./node_modules/moment/locale/et.js","webpack://sixt/./node_modules/moment/locale/eu.js","webpack://sixt/./node_modules/moment/locale/fa.js","webpack://sixt/./node_modules/moment/locale/fi.js","webpack://sixt/./node_modules/moment/locale/fil.js","webpack://sixt/./node_modules/moment/locale/fo.js","webpack://sixt/./node_modules/moment/locale/fr-ca.js","webpack://sixt/./node_modules/moment/locale/fr-ch.js","webpack://sixt/./node_modules/moment/locale/fr.js","webpack://sixt/./node_modules/moment/locale/fy.js","webpack://sixt/./node_modules/moment/locale/ga.js","webpack://sixt/./node_modules/moment/locale/gd.js","webpack://sixt/./node_modules/moment/locale/gl.js","webpack://sixt/./node_modules/moment/locale/gom-deva.js","webpack://sixt/./node_modules/moment/locale/gom-latn.js","webpack://sixt/./node_modules/moment/locale/gu.js","webpack://sixt/./node_modules/moment/locale/he.js","webpack://sixt/./node_modules/moment/locale/hi.js","webpack://sixt/./node_modules/moment/locale/hr.js","webpack://sixt/./node_modules/moment/locale/hu.js","webpack://sixt/./node_modules/moment/locale/hy-am.js","webpack://sixt/./node_modules/moment/locale/id.js","webpack://sixt/./node_modules/moment/locale/is.js","webpack://sixt/./node_modules/moment/locale/it-ch.js","webpack://sixt/./node_modules/moment/locale/it.js","webpack://sixt/./node_modules/moment/locale/ja.js","webpack://sixt/./node_modules/moment/locale/jv.js","webpack://sixt/./node_modules/moment/locale/ka.js","webpack://sixt/./node_modules/moment/locale/kk.js","webpack://sixt/./node_modules/moment/locale/km.js","webpack://sixt/./node_modules/moment/locale/kn.js","webpack://sixt/./node_modules/moment/locale/ko.js","webpack://sixt/./node_modules/moment/locale/ku.js","webpack://sixt/./node_modules/moment/locale/ky.js","webpack://sixt/./node_modules/moment/locale/lb.js","webpack://sixt/./node_modules/moment/locale/lo.js","webpack://sixt/./node_modules/moment/locale/lt.js","webpack://sixt/./node_modules/moment/locale/lv.js","webpack://sixt/./node_modules/moment/locale/me.js","webpack://sixt/./node_modules/moment/locale/mi.js","webpack://sixt/./node_modules/moment/locale/mk.js","webpack://sixt/./node_modules/moment/locale/ml.js","webpack://sixt/./node_modules/moment/locale/mn.js","webpack://sixt/./node_modules/moment/locale/mr.js","webpack://sixt/./node_modules/moment/locale/ms-my.js","webpack://sixt/./node_modules/moment/locale/ms.js","webpack://sixt/./node_modules/moment/locale/mt.js","webpack://sixt/./node_modules/moment/locale/my.js","webpack://sixt/./node_modules/moment/locale/nb.js","webpack://sixt/./node_modules/moment/locale/ne.js","webpack://sixt/./node_modules/moment/locale/nl-be.js","webpack://sixt/./node_modules/moment/locale/nl.js","webpack://sixt/./node_modules/moment/locale/nn.js","webpack://sixt/./node_modules/moment/locale/oc-lnc.js","webpack://sixt/./node_modules/moment/locale/pa-in.js","webpack://sixt/./node_modules/moment/locale/pl.js","webpack://sixt/./node_modules/moment/locale/pt-br.js","webpack://sixt/./node_modules/moment/locale/pt.js","webpack://sixt/./node_modules/moment/locale/ro.js","webpack://sixt/./node_modules/moment/locale/ru.js","webpack://sixt/./node_modules/moment/locale/sd.js","webpack://sixt/./node_modules/moment/locale/se.js","webpack://sixt/./node_modules/moment/locale/si.js","webpack://sixt/./node_modules/moment/locale/sk.js","webpack://sixt/./node_modules/moment/locale/sl.js","webpack://sixt/./node_modules/moment/locale/sq.js","webpack://sixt/./node_modules/moment/locale/sr-cyrl.js","webpack://sixt/./node_modules/moment/locale/sr.js","webpack://sixt/./node_modules/moment/locale/ss.js","webpack://sixt/./node_modules/moment/locale/sv.js","webpack://sixt/./node_modules/moment/locale/sw.js","webpack://sixt/./node_modules/moment/locale/ta.js","webpack://sixt/./node_modules/moment/locale/te.js","webpack://sixt/./node_modules/moment/locale/tet.js","webpack://sixt/./node_modules/moment/locale/tg.js","webpack://sixt/./node_modules/moment/locale/th.js","webpack://sixt/./node_modules/moment/locale/tk.js","webpack://sixt/./node_modules/moment/locale/tl-ph.js","webpack://sixt/./node_modules/moment/locale/tlh.js","webpack://sixt/./node_modules/moment/locale/tr.js","webpack://sixt/./node_modules/moment/locale/tzl.js","webpack://sixt/./node_modules/moment/locale/tzm-latn.js","webpack://sixt/./node_modules/moment/locale/tzm.js","webpack://sixt/./node_modules/moment/locale/ug-cn.js","webpack://sixt/./node_modules/moment/locale/uk.js","webpack://sixt/./node_modules/moment/locale/ur.js","webpack://sixt/./node_modules/moment/locale/uz-latn.js","webpack://sixt/./node_modules/moment/locale/uz.js","webpack://sixt/./node_modules/moment/locale/vi.js","webpack://sixt/./node_modules/moment/locale/x-pseudo.js","webpack://sixt/./node_modules/moment/locale/yo.js","webpack://sixt/./node_modules/moment/locale/zh-cn.js","webpack://sixt/./node_modules/moment/locale/zh-hk.js","webpack://sixt/./node_modules/moment/locale/zh-mo.js","webpack://sixt/./node_modules/moment/locale/zh-tw.js","webpack://sixt//Users/david/DEV/about-sixt/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://sixt/./node_modules/moment/moment.js","webpack://sixt/./node_modules/ngraph.events/index.js","webpack://sixt/./node_modules/panzoom/index.js","webpack://sixt/./node_modules/panzoom/lib/createTextSelectionInterceptor.js","webpack://sixt/./node_modules/panzoom/lib/domController.js","webpack://sixt/./node_modules/panzoom/lib/kinetic.js","webpack://sixt/./node_modules/panzoom/lib/svgController.js","webpack://sixt/./node_modules/panzoom/lib/transform.js","webpack://sixt/./node_modules/plyr/dist/plyr.min.js","webpack://sixt/./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","webpack://sixt/./node_modules/tippy.js/dist/tippy.css?5112","webpack://sixt/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://sixt/./node_modules/tabbyjs/dist/js/tabby.min.js","webpack://sixt/./node_modules/tippy.js/dist/tippy.esm.js","webpack://sixt/./node_modules/wheel/index.js","webpack://sixt/./node_modules/chart.js/dist/chart.mjs","webpack://sixt/./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack://sixt/./node_modules/chart.js/dist/helpers.mjs","webpack://sixt/./node_modules/chart.js/helpers/helpers.mjs","webpack://sixt/./node_modules/dom7/dom7.esm.js","webpack://sixt/./node_modules/ssr-window/ssr-window.esm.js","webpack://sixt/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://sixt/./node_modules/swiper/core/breakpoints/index.js","webpack://sixt/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://sixt/./node_modules/swiper/core/check-overflow/index.js","webpack://sixt/./node_modules/swiper/core/classes/addClasses.js","webpack://sixt/./node_modules/swiper/core/classes/index.js","webpack://sixt/./node_modules/swiper/core/classes/removeClasses.js","webpack://sixt/./node_modules/swiper/core/core.js","webpack://sixt/./node_modules/swiper/core/defaults.js","webpack://sixt/./node_modules/swiper/core/events-emitter.js","webpack://sixt/./node_modules/swiper/core/events/index.js","webpack://sixt/./node_modules/swiper/core/events/onClick.js","webpack://sixt/./node_modules/swiper/core/events/onResize.js","webpack://sixt/./node_modules/swiper/core/events/onScroll.js","webpack://sixt/./node_modules/swiper/core/events/onTouchEnd.js","webpack://sixt/./node_modules/swiper/core/events/onTouchMove.js","webpack://sixt/./node_modules/swiper/core/events/onTouchStart.js","webpack://sixt/./node_modules/swiper/core/grab-cursor/index.js","webpack://sixt/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://sixt/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://sixt/./node_modules/swiper/core/images/index.js","webpack://sixt/./node_modules/swiper/core/images/loadImage.js","webpack://sixt/./node_modules/swiper/core/images/preloadImages.js","webpack://sixt/./node_modules/swiper/core/loop/index.js","webpack://sixt/./node_modules/swiper/core/loop/loopCreate.js","webpack://sixt/./node_modules/swiper/core/loop/loopDestroy.js","webpack://sixt/./node_modules/swiper/core/loop/loopFix.js","webpack://sixt/./node_modules/swiper/core/moduleExtendParams.js","webpack://sixt/./node_modules/swiper/core/modules/observer/observer.js","webpack://sixt/./node_modules/swiper/core/modules/resize/resize.js","webpack://sixt/./node_modules/swiper/core/slide/index.js","webpack://sixt/./node_modules/swiper/core/slide/slideNext.js","webpack://sixt/./node_modules/swiper/core/slide/slidePrev.js","webpack://sixt/./node_modules/swiper/core/slide/slideReset.js","webpack://sixt/./node_modules/swiper/core/slide/slideTo.js","webpack://sixt/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://sixt/./node_modules/swiper/core/slide/slideToClosest.js","webpack://sixt/./node_modules/swiper/core/slide/slideToLoop.js","webpack://sixt/./node_modules/swiper/core/transition/index.js","webpack://sixt/./node_modules/swiper/core/transition/setTransition.js","webpack://sixt/./node_modules/swiper/core/transition/transitionEmit.js","webpack://sixt/./node_modules/swiper/core/transition/transitionEnd.js","webpack://sixt/./node_modules/swiper/core/transition/transitionStart.js","webpack://sixt/./node_modules/swiper/core/translate/getTranslate.js","webpack://sixt/./node_modules/swiper/core/translate/index.js","webpack://sixt/./node_modules/swiper/core/translate/maxTranslate.js","webpack://sixt/./node_modules/swiper/core/translate/minTranslate.js","webpack://sixt/./node_modules/swiper/core/translate/setTranslate.js","webpack://sixt/./node_modules/swiper/core/translate/translateTo.js","webpack://sixt/./node_modules/swiper/core/update/index.js","webpack://sixt/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://sixt/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://sixt/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://sixt/./node_modules/swiper/core/update/updateProgress.js","webpack://sixt/./node_modules/swiper/core/update/updateSize.js","webpack://sixt/./node_modules/swiper/core/update/updateSlides.js","webpack://sixt/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://sixt/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://sixt/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://sixt/./node_modules/swiper/modules/a11y/a11y.js","webpack://sixt/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://sixt/./node_modules/swiper/modules/controller/controller.js","webpack://sixt/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://sixt/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://sixt/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://sixt/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://sixt/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://sixt/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://sixt/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://sixt/./node_modules/swiper/modules/grid/grid.js","webpack://sixt/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://sixt/./node_modules/swiper/modules/history/history.js","webpack://sixt/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://sixt/./node_modules/swiper/modules/lazy/lazy.js","webpack://sixt/./node_modules/swiper/modules/manipulation/manipulation.js","webpack://sixt/./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack://sixt/./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack://sixt/./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack://sixt/./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack://sixt/./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack://sixt/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://sixt/./node_modules/swiper/modules/navigation/navigation.js","webpack://sixt/./node_modules/swiper/modules/pagination/pagination.js","webpack://sixt/./node_modules/swiper/modules/parallax/parallax.js","webpack://sixt/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://sixt/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://sixt/./node_modules/swiper/modules/virtual/virtual.js","webpack://sixt/./node_modules/swiper/modules/zoom/zoom.js","webpack://sixt/./node_modules/swiper/shared/classes-to-selector.js","webpack://sixt/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://sixt/./node_modules/swiper/shared/create-shadow.js","webpack://sixt/./node_modules/swiper/shared/dom.js","webpack://sixt/./node_modules/swiper/shared/effect-init.js","webpack://sixt/./node_modules/swiper/shared/effect-target.js","webpack://sixt/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://sixt/./node_modules/swiper/shared/get-browser.js","webpack://sixt/./node_modules/swiper/shared/get-device.js","webpack://sixt/./node_modules/swiper/shared/get-support.js","webpack://sixt/./node_modules/swiper/shared/utils.js","webpack://sixt/./node_modules/swiper/swiper.esm.js","webpack://sixt/webpack/bootstrap","webpack://sixt/webpack/runtime/chunk loaded","webpack://sixt/webpack/runtime/compat get default export","webpack://sixt/webpack/runtime/define property getters","webpack://sixt/webpack/runtime/global","webpack://sixt/webpack/runtime/hasOwnProperty shorthand","webpack://sixt/webpack/runtime/make namespace object","webpack://sixt/webpack/runtime/node module decorator","webpack://sixt/webpack/runtime/jsonp chunk loading","webpack://sixt/webpack/before-startup","webpack://sixt/webpack/startup","webpack://sixt/webpack/after-startup"],"sourcesContent":["import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import { isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nexport default function getBoundingClientRect(element, includeScale) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  var rect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (isHTMLElement(element) && includeScale) {\n    var offsetHeight = element.offsetHeight;\n    var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n    // Fallback to 1 in case both values are `0`\n\n    if (offsetWidth > 0) {\n      scaleX = round(rect.width) / offsetWidth || 1;\n    }\n\n    if (offsetHeight > 0) {\n      scaleY = round(rect.height) / offsetHeight || 1;\n    }\n  }\n\n  return {\n    width: rect.width / scaleX,\n    height: rect.height / scaleY,\n    top: rect.top / scaleY,\n    right: rect.right / scaleX,\n    bottom: rect.bottom / scaleY,\n    left: rect.left / scaleX,\n    x: rect.left / scaleX,\n    y: rect.top / scaleY\n  };\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n  var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","export { default as applyStyles } from \"./applyStyles.js\";\nexport { default as arrow } from \"./arrow.js\";\nexport { default as computeStyles } from \"./computeStyles.js\";\nexport { default as eventListeners } from \"./eventListeners.js\";\nexport { default as flip } from \"./flip.js\";\nexport { default as hide } from \"./hide.js\";\nexport { default as offset } from \"./offset.js\";\nexport { default as popperOffsets } from \"./popperOffsets.js\";\nexport { default as preventOverflow } from \"./preventOverflow.js\";","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","export default function format(str) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  return [].concat(args).reduce(function (p, c) {\n    return p.replace(/%s/, c);\n  }, str);\n}","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","export default function uniqueBy(arr, fn) {\n  var identifiers = new Set();\n  return arr.filter(function (item) {\n    var identifier = fn(item);\n\n    if (!identifiers.has(identifier)) {\n      identifiers.add(identifier);\n      return true;\n    }\n  });\n}","import format from \"./format.js\";\nimport { modifierPhases } from \"../enums.js\";\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nexport default function validateModifiers(modifiers) {\n  modifiers.forEach(function (modifier) {\n    [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n    .filter(function (value, index, self) {\n      return self.indexOf(value) === index;\n    }).forEach(function (key) {\n      switch (key) {\n        case 'name':\n          if (typeof modifier.name !== 'string') {\n            console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'enabled':\n          if (typeof modifier.enabled !== 'boolean') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'phase':\n          if (modifierPhases.indexOf(modifier.phase) < 0) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'fn':\n          if (typeof modifier.fn !== 'function') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'effect':\n          if (modifier.effect != null && typeof modifier.effect !== 'function') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requires':\n          if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requiresIfExists':\n          if (!Array.isArray(modifier.requiresIfExists)) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'options':\n        case 'data':\n          break;\n\n        default:\n          console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n            return \"\\\"\" + s + \"\\\"\";\n          }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n      }\n\n      modifier.requires && modifier.requires.forEach(function (requirement) {\n        if (modifiers.find(function (mod) {\n          return mod.name === requirement;\n        }) == null) {\n          console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n        }\n      });\n    });\n  });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","var BezierEasing = require('bezier-easing')\n\n// Predefined set of animations. Similar to CSS easing functions\nvar animations = {\n  ease:  BezierEasing(0.25, 0.1, 0.25, 1),\n  easeIn: BezierEasing(0.42, 0, 1, 1),\n  easeOut: BezierEasing(0, 0, 0.58, 1),\n  easeInOut: BezierEasing(0.42, 0, 0.58, 1),\n  linear: BezierEasing(0, 0, 1, 1)\n}\n\n\nmodule.exports = animate;\nmodule.exports.makeAggregateRaf = makeAggregateRaf;\nmodule.exports.sharedScheduler = makeAggregateRaf();\n\n\nfunction animate(source, target, options) {\n  var start = Object.create(null)\n  var diff = Object.create(null)\n  options = options || {}\n  // We let clients specify their own easing function\n  var easing = (typeof options.easing === 'function') ? options.easing : animations[options.easing]\n\n  // if nothing is specified, default to ease (similar to CSS animations)\n  if (!easing) {\n    if (options.easing) {\n      console.warn('Unknown easing function in amator: ' + options.easing);\n    }\n    easing = animations.ease\n  }\n\n  var step = typeof options.step === 'function' ? options.step : noop\n  var done = typeof options.done === 'function' ? options.done : noop\n\n  var scheduler = getScheduler(options.scheduler)\n\n  var keys = Object.keys(target)\n  keys.forEach(function(key) {\n    start[key] = source[key]\n    diff[key] = target[key] - source[key]\n  })\n\n  var durationInMs = typeof options.duration === 'number' ? options.duration : 400\n  var durationInFrames = Math.max(1, durationInMs * 0.06) // 0.06 because 60 frames pers 1,000 ms\n  var previousAnimationId\n  var frame = 0\n\n  previousAnimationId = scheduler.next(loop)\n\n  return {\n    cancel: cancel\n  }\n\n  function cancel() {\n    scheduler.cancel(previousAnimationId)\n    previousAnimationId = 0\n  }\n\n  function loop() {\n    var t = easing(frame/durationInFrames)\n    frame += 1\n    setValues(t)\n    if (frame <= durationInFrames) {\n      previousAnimationId = scheduler.next(loop)\n      step(source)\n    } else {\n      previousAnimationId = 0\n      setTimeout(function() { done(source) }, 0)\n    }\n  }\n\n  function setValues(t) {\n    keys.forEach(function(key) {\n      source[key] = diff[key] * t + start[key]\n    })\n  }\n}\n\nfunction noop() { }\n\nfunction getScheduler(scheduler) {\n  if (!scheduler) {\n    var canRaf = typeof window !== 'undefined' && window.requestAnimationFrame\n    return canRaf ? rafScheduler() : timeoutScheduler()\n  }\n  if (typeof scheduler.next !== 'function') throw new Error('Scheduler is supposed to have next(cb) function')\n  if (typeof scheduler.cancel !== 'function') throw new Error('Scheduler is supposed to have cancel(handle) function')\n\n  return scheduler\n}\n\nfunction rafScheduler() {\n  return {\n    next: window.requestAnimationFrame.bind(window),\n    cancel: window.cancelAnimationFrame.bind(window)\n  }\n}\n\nfunction timeoutScheduler() {\n  return {\n    next: function(cb) {\n      return setTimeout(cb, 1000/60)\n    },\n    cancel: function (id) {\n      return clearTimeout(id)\n    }\n  }\n}\n\nfunction makeAggregateRaf() {\n  var frontBuffer = new Set();\n  var backBuffer = new Set();\n  var frameToken = 0;\n\n  return {\n    next: next,\n    cancel: next,\n    clearAll: clearAll\n  }\n\n  function clearAll() {\n    frontBuffer.clear();\n    backBuffer.clear();\n    cancelAnimationFrame(frameToken);\n    frameToken = 0;\n  }\n\n  function next(callback) {\n    backBuffer.add(callback);\n    renderNextFrame();\n  }\n\n  function renderNextFrame() {\n    if (!frameToken) frameToken = requestAnimationFrame(renderFrame);\n  }\n\n  function renderFrame() {\n    frameToken = 0;\n\n    var t = backBuffer;\n    backBuffer = frontBuffer;\n    frontBuffer = t;\r\n\n    frontBuffer.forEach(function(callback) {\n      callback();\n    });\n    frontBuffer.clear();\n  }\n\n  function cancel(callback) {\n    backBuffer.delete(callback);\n  }\n}\n","/*\n  Project: sixt\n  Author: schrittweiter GmbH\n */\n\n\nimport './modules/lazy'\nimport './modules/header'\nimport './modules/hero'\nimport './modules/slider'\nimport './modules/copy'\nimport './modules/list'\nimport './modules/lightbox'\nimport './modules/search'\nimport './modules/scroll'\nimport './modules/tabs'\nimport './modules/career'\nimport './modules/content-scroll'\nimport './modules/videobg'\nimport './modules/poster'\nimport './modules/svg-transition'\nimport './modules/navbar'\nimport './modules/hyphen'\nimport './modules/ninjaForm'\nimport './modules/flywheel'\nimport './modules/modal'\nimport './modules/map'\nimport './modules/timeline'\nimport './modules/count'\nimport './modules/filter'\nimport './modules/video'\nimport './modules/product_sidebar'\nimport selectAutoWidth from './modules/select';\nselectAutoWidth()\n","/* global sixt */\n\nimport selectAutoWidth from './select';\n\nconst getCareer = async (form) => {\n  const { sixt } = window;\n\n  if(form) {\n    const formData = new FormData();\n    formData.append('action', 'getCareer');\n    formData.append('nonce',  sixt.nonce);\n    formData.append('level',form.querySelector('[name=\"level\"]').value)\n    formData.append('field',form.querySelector('[name=\"field\"]').value)\n    formData.append('country',form.querySelector('[name=\"country\"]').value)\n    formData.append('location',form.querySelector('[name=\"location\"]').value)\n\n    let response = await fetch(sixt.ajaxurl, {\n      method: 'POST',\n      body: formData,\n    });\n\n    if (!response.ok) {\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n\n    return await response.json();\n  }\n};\n\nconst career = () => {\n  const forms = document.querySelectorAll('.c-career');\n  if(forms) {\n    forms.forEach(form => {\n\n      const link = form.querySelector('.c-btn');\n      const selects = form.querySelectorAll('select');\n      if(selects) {\n        selects.forEach(select => {\n\n          const resetBtn = select.closest('.c-select').querySelector('.c-select__reset');\n          resetBtn.addEventListener('click', () => {\n            select.value = \"\";\n            const event = new Event('change');\n            select.dispatchEvent(event);\n          });\n\n          select.addEventListener('change',() => {\n\n            selects.forEach(subSelect => {\n              subSelect.setAttribute('disabled', 'disabled');\n            });\n\n            link.classList.add('is-disabled');\n\n            const result = getCareer(form);\n            result.then(res => {\n\n              if(res.success && res.success == true) {\n\n                res.data.fields.forEach(field => {\n                  const doc = new DOMParser().parseFromString(field.content, \"text/html\");\n                  if(field.name != 'link') {\n                    const newSelect = doc.querySelector('.c-select');\n                    form.querySelector('[name=\"'+field.name+'\"]').innerHTML = newSelect.querySelector('select').innerHTML;\n\n                    selects.forEach(subSelect => {\n                      subSelect.removeAttribute('disabled');\n                    });\n                  } else {\n                    const newLink = doc.querySelector('a');\n\n                    link.href = newLink.href;\n                    link.innerHTML = newLink.innerHTML;\n                    link.classList.remove('is-disabled');\n                  }\n                });\n\n              }\n              //selectAutoWidth(form);\n            });\n          })\n        })\n      }\n\n    })\n  }\n}\n\nwindow.addEventListener('DOMContentLoaded', career);\n","import { gsap } from \"gsap/dist/gsap\";\nimport { ScrollTrigger } from \"gsap/dist/ScrollTrigger\";\nimport _throttle from \"lodash.throttle\";\ngsap.registerPlugin(ScrollTrigger);\n\n\nconst contentScrollAnimation = () => {\n\n  const contentScrolls = document.querySelectorAll('.c-widget--content-scroll');\n  if(contentScrolls) {\n    contentScrolls.forEach(contentScroll => {\n\n      const intro = contentScroll.querySelector('.c-content-scroll__wrapper--intro');\n      const introHeadline = intro.querySelector('.c-content-scroll__headline--default');\n\n      const content = contentScroll.querySelector('.c-content-scroll__wrapper--content');\n      const contentHeadline = content.querySelector('.c-content-scroll__headline--overlay');\n\n\n      function setContentHeight(elm) {\n        const mq = window.matchMedia('(min-width: 1024px)');\n        if(mq.matches === true) {\n          elm.closest('div').style.height = contentHeadline.clientHeight + 'px';\n        } else {\n          elm.closest('div').style.height = '';\n        }\n      }\n      setContentHeight(contentHeadline);\n      window.addEventListener('resize', _throttle(() => setContentHeight(contentHeadline), 500));\n\n      gsap.to(contentHeadline, {\n        ease: \"linear\",\n        top: '0',\n        scrollTrigger: {\n          trigger: intro,\n          start: \"top +=50%\",\n          end: \"bottom -=10%\",\n          pin: false,\n          scrub: true,\n          markers: false,\n          invalidateOnRefresh: true,\n        },\n      });\n\n    });\n  }\n};\n\nwindow.addEventListener('DOMContentLoaded', contentScrollAnimation, { once: true })\n","const copyText = (link,cb) => {\n\n  console.log(link);\n\n  const temporaryInputElement = document.createElement(\"input\");\n  temporaryInputElement.type = \"text\";\n  temporaryInputElement.value = link;\n\n  document.body.appendChild(temporaryInputElement);\n\n  temporaryInputElement.select();\n  document.execCommand(\"Copy\");\n\n  document.body.removeChild(temporaryInputElement);\n\n  alert(cb);\n\n}\n\nwindow.copyText = copyText;\n","import { CountUp } from 'countup.js'\nimport inView from 'in-view';\nimport _throttle from \"lodash.throttle\";\n\nconst itemsToCount = document.querySelectorAll(\n  '.u-countup',\n);\nconst siteLang = document.documentElement.attributes['lang'].value;\nconst isGer = siteLang === 'de'\n\nif (itemsToCount) {\n  itemsToCount.forEach(value => {\n    const valueNum = Number(value.innerText);\n    const valueNumLen = Math.ceil(Math.log10(valueNum + 1));\n\n    const countValue = new CountUp(value, valueNum, {\n      duration: 3,\n      decimal: isGer ? ',' : '.',\n      separator: isGer ? '.' : ',',\n      decimalPlaces: (valueNum % 1 !== 0 ? 2 : 0)\n    });\n\n    inView('.u-countup').on('enter', element => {\n      countValue.start()\n    });\n  });\n}\n\nconst labelAlign = () => {\n  const floatingBars = document.querySelectorAll('.c-counter__detail-bar--floating');\n  floatingBars.forEach(elm => {\n    let widthBase = elm.offsetWidth;\n    let width = elm.querySelector('.c-counter__detail-bar-inner').offsetWidth;\n    let label = elm.nextElementSibling;\n\n    label.style.left = (-1 * (widthBase - width)) + 'px';\n\n  });\n}\n\nwindow.addEventListener('DOMContentLoaded', labelAlign, { once: true });\nwindow.addEventListener('resize', _throttle(() => labelAlign(), 100))\n","window.WP_Grid_Builder && WP_Grid_Builder.on('init', function (wpgb) {\n\n    wpgb.facets.on( 'render', function( element, facet ) {\n      if(facet.slug === 'published') {\n        const options = element.querySelectorAll('.wpgb-select option');\n        if(options.length <= 2)\n          element.classList.add('is-hidden');\n      }\n    });\n});\n","import Houdini from \"houdinijs\";\nimport SmoothScroll from 'smooth-scroll';\n\nconst flywheelAccordion = () => {\n\n  const flywheelAccSets = document.querySelectorAll('[data-houdini-group-flywheel]'),\n    sets = [];\n\n  if (flywheelAccSets) {\n    flywheelAccSets.forEach(set => {\n      if (!sets.includes(set.dataset.houdiniGroupFlywheel)) {\n        sets.push(set.dataset.houdiniGroupFlywheel);\n      }\n    });\n  }\n\n  sets.forEach(set => {\n\n    const flywheelAcc = new Houdini(\n      `[data-houdini-group-flywheel=\"${set}\"]`,\n      {\n        isAccordion: true,\n        collapseOthers: true,\n        icon: false,\n        btnClass: 'c-flywheel__card-title-inner',\n      },\n    );\n\n  });\n\n}\n\nflywheelAccordion();\n\nconst mq = window.matchMedia('(min-width: 1024px)');\nconst scroller = new SmoothScroll(null,{\n  offset: function (anchor, toggle) {\n    const header = document.querySelector('.c-header .c-header__row--main');\n    if(header) {\n      return header.clientHeight;\n    } else {\n      0\n    }\n  },\n});\n\nconst flywheel = () => {\n\n  const wheels = document.querySelectorAll('.c-flywheel');\n\n  wheels.forEach(wheel => {\n\n    const svg = wheel.querySelector('.c-flywheel__svg');\n    const plug = wheel.querySelector('.c-flywheel__svg-center--plug');\n    const cards = wheel.querySelectorAll('.c-flywheel__card');\n\n    const svgInteractives = svg.querySelectorAll('[data-flywheel-interactive]');\n\n    svgInteractives.forEach(interactive => {\n\n      interactive.addEventListener('click', () => {\n        const target = interactive.dataset.flywheelInteractive;\n        const card = wheel.querySelector('[data-area=\"'+ target +'\"]');\n\n        if(card) {\n          card.querySelector('[data-houdini-toggle]').click();\n\n          if(mq.matches !== true) {\n            scroller.animateScroll(card);\n          }\n        }\n      });\n\n    });\n\n    cards.forEach((item,index) => {\n      const target = item.dataset.area;\n      const button = item.querySelector('[data-houdini-toggle]');\n\n      button.addEventListener('click', () => {\n\n        const interactives = svg.querySelectorAll('[data-flywheel-interactive]');\n\n        if(plug) {\n          if(target === 'electric') {\n            plug.setAttribute('transform','translate(-652.234 1891.762) rotate(-90)');\n          } else if(target === 'co2') {\n            plug.setAttribute('transform','translate(1239.527 2543.996) rotate(-180)');\n          } else if(target === 'mobility') {\n            plug.setAttribute('transform','translate(1891.762 652.234) rotate(90)');\n          } else {\n            plug.removeAttribute('transform');\n          }\n        }\n\n        interactives.forEach(interactive => {\n          interactive.classList.remove('is-active');\n\n          if(interactive.dataset.flywheelInteractive === target) {\n            interactive.classList.add('is-active');\n          }\n\n        });\n\n      });\n\n      if(index === 0) {\n        button.click();\n      }\n    });\n\n  });\n}\n\nwindow.addEventListener('DOMContentLoaded', flywheel, { once: true });\n","import tippy from 'tippy.js';\nimport 'tippy.js/dist/tippy.css';\nimport _throttle from 'lodash.throttle'\n\nconst headerHeight = () => {\n    const header = document.querySelector('.c-header .c-header__row--main');\n    document.documentElement.style.setProperty('--header-row--main-height', `${header.clientHeight}px`)\n    document.documentElement.style.setProperty('--header-row--sub-height', `0px`)\n}\n\nwindow.addEventListener('resize', _throttle(() => headerHeight(), 500))\nwindow.addEventListener('DOMContentLoaded', headerHeight, { once: true })\n\n\nconst languageDropdown = () => {\n\n  const langSelector = document.querySelector('[data-language-switch]');\n  const html = document.querySelector('.c-lang-switch__dropdown');\n  html.classList.remove('is-hidden');\n\n  tippy(langSelector, {\n    content: html,\n    allowHTML: true,\n    arrow: true,\n    nertia: true,\n    trigger: 'mouseenter click',\n    interactive: true,\n    offset: [0, 15],\n    placement: 'bottom-start',\n    theme: 'language-tooltip',\n  });\n\n}\nlanguageDropdown()\n\n\n\nconst navBtn = document.querySelector('.c-header__nav-toggle');\nconst nav = document.querySelector('.c-header__nav');\n\nconst navToggle = () => {\n\n  nav.classList.toggle('is-active');\n  navBtn.classList.toggle('is-active');\n\n}\n\nif(navBtn) {\n  navBtn.addEventListener('click',navToggle);\n}\n\n\n","import * as basicScroll from 'basicscroll';\n\nconst parallax = () => {\n  document\n    .querySelectorAll('.c-hero__image--parallax')\n    .forEach(elem => {\n      const modifier = elem.getAttribute('data-modifier');\n      const isSVG = elem.classList.contains('c-hero__image--svg');\n\n      basicScroll\n        .create({\n          elem,\n          from: 0,\n          to: 800,\n          direct: false,\n          props: {\n            '--translateY': {\n              from: '0',\n              to: `${(isSVG ? 1 : 2) * modifier}%`,\n            },\n          },\n        })\n        .start();\n    });\n};\n\nparallax();\n","import { hyphenateHTML } from 'hyphen/de';\n\nconst hyphen = () => {\n  Array.from(\n    document.querySelectorAll(\n      '.c-download-folder__content-title',\n    ),\n  ).forEach(el => {\n    hyphenateHTML(el.innerHTML, { debug: false, minWordLength: 10 }).then(\n      result => {\n        // eslint-disable-next-line no-param-reassign\n        el.innerHTML = result;\n      },\n    );\n  });\n};\n\nhyphen();\n","import lozad from 'lozad';\nimport bus from '../utils/eventBus';\n\nconst lazy = () => {\n  const lazyEl = document.querySelector('.u-lazy');\n\n  if (lazyEl) {\n    const observer = lozad('.u-lazy', {\n      rootMargin: '10px 0px',\n      threshold: 0.1,\n      loaded: function(el) {\n        const imgWrapper = el.closest('.c-img');\n          if(imgWrapper) {\n\n          const placeholder = imgWrapper.querySelector('.c-img__placeholder');\n          if(placeholder) {\n            let bgImage = placeholder.style.backgroundImage;\n            bgImage = bgImage.replace('url(\"','').replace('\")','');\n\n            if(bgImage.length > 0) {\n              imgWrapper.classList.add('c-img--loaded');\n            }\n          }\n        }\n      }\n    });\n    const observe = () => observer.observe();\n    observe();\n\n    bus.on('sixt-modal-loaded', () => observe());\n\n    window.WP_Grid_Builder && WP_Grid_Builder.on('init', function (wpgb) {\n      wpgb.facets.on('appended', () => observe());\n    });\n\n    document.addEventListener('DOMContentLoaded', () => observe, {\n      once: true,\n    });\n  }\n};\n\nlazy();\n","import GLightbox from 'glightbox';\nimport bus from '../utils/eventBus';\n\nconst lightbox = () => {\n\n  const nav = document.createElement('div');\n  nav.classList.add('gcounter');\n  nav.dataset.indicator = '/';\n\n  const popup = GLightbox({\n    selector: '[data-modal]',\n    touchNavigation: true,\n    loop: true,\n    height: '90vh',\n    width: '90vw',\n    skin: 'sixt',\n    moreLength: 0,\n    closeOnOutsideClick: false,\n    onOpen: function() {\n\n      bus.emit('sixt-modal-loaded', true);\n\n      nav.innerHTML = '';\n\n      for (let i = 0; i < popup.elements.length; i++) {\n        nav.innerHTML = nav.innerHTML + '<span class=\"gcounter-item\"></span>';\n      }\n      const items = nav.querySelectorAll('span');\n      items.forEach((item,index) => {\n        item.addEventListener('click',() => {\n          popup.goToSlide(index)\n        })\n      });\n\n      return popup.modal.querySelector('.gcontainer').appendChild(nav);\n    },\n    afterSlideChange: function(prev, next) {\n      bus.emit('sixt-modal-loaded', true);\n\n      const items = nav.querySelectorAll('span');\n      items.forEach((item,index) => {\n        if(index == next.index) {\n          item.classList.add('current');\n        } else {\n          item.classList.remove('current');\n        }\n      });\n      nav.classList.add('gcounter-added');\n    }\n  });\n\n}\n\nlightbox();\n","const listMarkup = () => {\n\n  const uls = document.querySelectorAll('.c-post__detail ul,.c-post__intro ul');\n  if(uls) {\n    uls.forEach(ul => {\n      ul.classList.add('c-list');\n      const lis = ul.querySelectorAll('li');\n      if(lis) {\n        lis.forEach(li => {\n          li.classList.add('c-list__item');\n          li.innerHTML = '<svg class=\"c-list__icon\"><use xlink:href=\"#icon-static-arrow-right\"></use></svg>' + li.innerHTML;\n        })\n      }\n    });\n  }\n\n}\n\nlistMarkup()\n\n","import Houdini from 'houdinijs';\nimport SmoothScroll from 'smooth-scroll';\n\nconst panzoom = require('panzoom')\n\nconst scroller = new SmoothScroll(null,{\n  offset: function (anchor, toggle) {\n    const header = document.querySelector('.c-header .c-header__row--main');\n    if(header) {\n      return header.clientHeight;\n    } else {\n      0\n    }\n  },\n});\n\n\n\nconst handleZoom = (e, panInstance, zoomIn = true,elm) => {\n\n  e.preventDefault();\n\n  let zoomBy = zoomIn ? 1.5 : 0.5;\n\n  const screenSize = {\n    \"w\": Math.max(document.documentElement.clientWidth, window.innerWidth || 0),\n    \"h\": Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\n  };\n\n\n  panInstance.smoothZoom((screenSize.w - elm.clientWidth * zoomBy) / 2, (screenSize.h - elm.clientHeight * zoomBy) / 2, zoomBy);\n}\n\nconst mapMarker = () => {\n\n  const mq = window.matchMedia('(min-width: 1024px)');\n  const maps = document.querySelectorAll('.c-map');\n\n  maps.forEach(map => {\n\n    const mapWrapper = map.querySelectorAll('.c-map__wrapper > .c-map__con');\n    mapWrapper.forEach(wrapper => {\n      let centerCenter = {x: 0.5, y: 0.5};\n\n      const panInstance = panzoom(wrapper, {\n        //initialZoom: mq.matches === true ? 5.37109375 : 8.10359779279679,\n        smoothScroll: mq.matches,\n        bounds: true,\n        boundsPadding: 0.1,\n        minZoom: 1,\n        maxZoom: 7,\n        auoCenter: true,\n        transformOrigin: centerCenter,\n        beforeWheel: function(e) {\n          // allow wheel-zoom only if altKey is down. Otherwise - ignore\n          return !e.altKey;\n        },\n        onDoubleClick: function(e) {\n          return false;\n        },\n        /*\n        onTouch: (e) => {\n\n          let isMarker = false;\n          let isBtn = false;\n\n          if(e.path) {\n            isMarker = Array.prototype.find.call(e.path, item => item.classList ? item.classList.contains('c-map__marker') : false);\n            isBtn = Array.prototype.find.call (e.path, item => item.classList ? item.classList.contains('c-map__control-btn') : false);\n          }\n\n          if (isMarker || isBtn) {\n            return false\n          } else {\n            e.preventDefault()\n          }\n        }, */\n      });\n\n      const linkAreas = map.querySelectorAll('.c-map__marker,.c-map__control-btn');\n      let touchStart = {x: 0, y: 0} | undefined;\n      for (let i = 0; i < linkAreas.length; i++) {\n        const linkArea = linkAreas[i];\n        linkArea.addEventListener('touchstart', (evt) => {\n          touchStart = { x: evt.touches[0].screenX, y: evt.touches[0].screenY };\n        });\n        linkArea.addEventListener('touchend', (evt) => {\n          if (touchStart !== undefined) {\n            const touchEnd = { x: evt.changedTouches[0].screenX, y: evt.changedTouches[0].screenY };\n            const distance = Math.sqrt(Math.pow(touchEnd.x - touchStart.x, 2) + Math.pow(touchEnd.y - touchStart.y, 2));\n            if (distance < 10) {\n              linkArea.click();\n            }\n          }\n        });\n      }\n\n      panInstance.on('transform', function(e) {\n        wrapper.style.setProperty('--map-zoom-factor', parseFloat(1 / parseFloat(e.getTransform().scale)))\n      });\n\n      const mapControls = wrapper.closest('.c-map__wrapper').querySelectorAll('.c-map__control-btn');\n      mapControls.forEach(control => {\n        const zoomIn = control.classList.contains('c-map__control-btn--zoom-in');\n\n        control.addEventListener('click', (e) => {\n          handleZoom(e,panInstance,zoomIn,wrapper);\n        })\n\n      })\n\n\n    });\n\n\n\n    const svg = map.querySelector('.c-map__svg');\n    const markers = map.querySelectorAll('.c-map__marker');\n\n    markers.forEach(marker => {\n\n      const country = marker.dataset.country;\n      const link = marker.dataset.link;\n\n      const tab = marker.closest('.c-map__tab');\n      const loadMore = tab.querySelector('[maps-load-more]');\n      const cards = tab.querySelector('.c-map__cards');\n      const card = cards.querySelector('[data-map-card=\"'+link+'\"]');\n\n      //marker.style.left = `calc(${(parseInt(svgbox.x) / mapWidth) * 100}% + ${(svgbox.width / mapWidth) * 100}% + var(--map-marker-height))`;\n      //marker.style.top = `calc(${(svgbox.y / mapHeight) * 100}% - ${(svgbox.height / mapHeight) * 100}% - var(--map-marker-height))`;\n\n      marker.addEventListener('click', (e) => {\n        e.preventDefault();\n\n        tab.querySelectorAll('.c-map__marker').forEach(item => {\n          if(item !== marker) {\n            item.classList.remove('is-active')\n          }\n        });\n\n        marker.classList.toggle('is-active')\n\n\n        loadMore.click();\n        card.querySelector('.c-map__card-title-inner').click();\n        if(mq.matches !== true) {\n          scroller.animateScroll(card);\n        }\n\n        setTimeout(() => {\n          cards.scrollTop = marker.classList.contains('is-active') ? card.offsetTop : 0;\n        },50)\n      })\n\n    })\n\n  });\n}\n\nmapMarker();\n\nconst mapCards = () => {\n\n  const tabs = document.querySelectorAll('.c-map__tab');\n  tabs.forEach(tab => {\n    const cards = tab.querySelectorAll('.c-map__card');\n\n    cards.forEach(item => {\n      const number = item.dataset.mapCard;\n      const button = item.querySelector('[data-houdini-toggle]');\n      button.addEventListener('click',() => {\n        const sButton = button.querySelector('button');\n        const marker = tab.querySelector('.c-map__marker[data-link=\"'+ number +'\"]');\n        const loadMore = tab.querySelector('[maps-load-more]');\n\n        if(loadMore) {\n          loadMore.click();\n        }\n        tab.querySelectorAll('.c-map__marker').forEach(item => {\n          if(item !== marker) {\n            item.classList.remove('is-active')\n          }\n        });\n\n        if(sButton.getAttribute('aria-expanded') !== 'true') {\n          marker.classList.add('is-active');\n        }else{\n          marker.classList.remove('is-active');\n        }\n      });\n\n    });\n  })\n\n};\n\nmapCards()\n\nconst mapLoadmore = () => {\n\n  const cardWrapper = document.querySelectorAll('.c-map__cards');\n\n  cardWrapper.forEach(elm => {\n\n    const btn = elm.querySelector('[maps-load-more]');\n    if(btn) {\n      btn.addEventListener('click', (e) => {\n        e.preventDefault();\n        elm.classList.remove('is--overflown');\n      });\n    }\n\n  });\n\n}\n\nmapLoadmore();\n\nconst mapAccordion = () => {\n\n  const mapAccSets = document.querySelectorAll('[data-houdini-group-map-set]'),\n        sets = [];\n\n  if (mapAccSets) {\n    mapAccSets.forEach(set => {\n      if (!sets.includes(set.dataset.houdiniGroupMapSet)) {\n        sets.push(set.dataset.houdiniGroupMapSet);\n      }\n    });\n  }\n\n  sets.forEach(set => {\n      const timelineAcc = new Houdini(\n        `[data-houdini-group-map-set=\"${set}\"]`,\n        {\n          isAccordion: true,\n          collapseOthers: true,\n          icon: false,\n          btnClass: 'c-map__card-title-inner',\n        },\n      );\n\n  });\n\n}\n\nmapAccordion();\n","const modals = document.querySelectorAll(\"[data-popup-modal]\");\n\nmodals.forEach(function (trigger) {\n  trigger.addEventListener('click', function (event) {\n\n    event.preventDefault();\n\n    const modal = document.getElementById(trigger.dataset.popupModal);\n    modal.classList.add('c-modal--open');\n\n    const scrollY = document.documentElement.style.getPropertyValue('--scroll-y');\n    const body = document.body;\n    body.style.position = 'fixed';\n    body.classList.add('modal--open');\n    body.style.top = `-${scrollY}`;\n\n    const exits = modal.querySelectorAll(\".modal-exit\");\n\n    exits.forEach(function (exit) {\n      exit.addEventListener('click', (event) => {\n        event.preventDefault();\n        modal.classList.remove('c-modal--open');\n\n        const body = document.body;\n        const scrollY = body.style.top;\n        body.style.position = '';\n        body.style.top = '';\n        body.classList.remove('modal--open');\n        window.scrollTo(0, parseInt(scrollY || '0') * -1);\n      });\n    });\n\n  });\n});\n\nwindow.addEventListener('scroll', () => {\n  if(!document.body.classList.contains('modal--open')) {\n    document.documentElement.style.setProperty('--scroll-y', `${window.scrollY}px`);\n  }\n});\n","import {isInViewport} from '../utils/inViewport';\nimport _throttle from \"lodash.throttle\";\n\nconst getWrapperWidth = (wrapper) => {\n  return wrapper.clientWidth;\n}\n\nconst getItemsWidth = (wrapper) => {\n  const items = wrapper.querySelectorAll('.c-navbar__item');\n  let width = 0;\n  items.forEach(item => {\n    width += item.clientWidth;\n  });\n\n  return width;\n}\n\nconst togglePaddles = (nav,wrapper,init=false) => {\n\n  const mq = window.matchMedia('(min-width: 1024px)');\n  const width = getWrapperWidth(nav);\n  const itemsWidth = getItemsWidth(nav);\n  const firstItem = nav.querySelector('.c-navbar__item:first-child');\n  const lastItem = nav.querySelector('.c-navbar__item:last-child');\n  const paddleLeft = wrapper.querySelector('.c-navbar__paddle--left');\n  const paddleRight = wrapper.querySelector('.c-navbar__paddle--right');\n\n  if (width < itemsWidth && mq.matches !== true) {\n\n    if (!isInViewport(firstItem)) {\n      paddleLeft.removeAttribute('disabled');\n      paddleLeft.setAttribute('aria-hidden',false);\n    } else {\n      paddleLeft.setAttribute('disabled',true)\n      paddleLeft.setAttribute('aria-hidden',true);\n    }\n\n    if (!isInViewport(lastItem)) {\n      paddleRight.removeAttribute('disabled');\n      paddleRight.setAttribute('aria-hidden',false);\n    } else {\n      paddleRight.setAttribute('disabled',true);\n      paddleRight.setAttribute('aria-hidden',true);\n    }\n\n  } else {\n    paddleLeft.setAttribute('disabled',true);\n    paddleRight.setAttribute('disabled',true);\n    paddleLeft.setAttribute('aria-hidden',true);\n    paddleRight.setAttribute('aria-hidden',true);\n  }\n\n  if(init) {\n    paddleLeft.setAttribute('disabled',true);\n    paddleLeft.setAttribute('aria-hidden',true);\n  }\n\n};\n\nconst initNavbars = () => {\n\n    const navbars = document.querySelectorAll('.c-navbar');\n\n    if (navbars) {\n\n      navbars.forEach(navBar => {\n\n        const nav = navBar.querySelector('.c-navbar__items');\n        const items = navBar.querySelectorAll('.c-navbar__item');\n        const paddles = navBar.querySelectorAll('.c-navbar__paddle');\n        const scrollSize = 240;\n\n        let wrapperWidth = getWrapperWidth(nav);\n        window.addEventListener('resize', _throttle(() => {\n          wrapperWidth = getWrapperWidth(nav);\n        }, 500));\n\n        let itemsWidth = getItemsWidth(nav);\n        window.addEventListener('resize', _throttle(() => {\n          itemsWidth = getItemsWidth(nav);\n        }, 500));\n\n\n        setTimeout(() => {\n          togglePaddles(nav,navBar,true);\n        },250)\n        window.addEventListener('resize', _throttle(() => {\n          togglePaddles(nav,navBar)\n        }, 500));\n\n        paddles.forEach(paddle => {\n          paddle.addEventListener('click',() => {\n            if(paddle.classList.contains('c-navbar__paddle--left')) {\n                nav.scroll(nav.scrollLeft - scrollSize,0);\n            } else {\n              nav.scroll(nav.scrollLeft + scrollSize,0);\n            }\n          });\n        });\n\n        items.forEach(item => {\n          const options = {\n            root: navBar,\n            rootMargin: '0px',\n            threshold: 1\n          };\n          const observer = new IntersectionObserver(observerCallback, options);\n          observer.observe(item);\n        });\n\n        function observerCallback(entries, observer) {\n          togglePaddles(nav,navBar);\n        }\n\n        // # fix observer on desktop first load\n\n        setTimeout(() => {\n          window.dispatchEvent(new Event('resize'));\n        },1500);\n\n      });\n    }\n}\n\nwindow.addEventListener('DOMContentLoaded', initNavbars, { once: true })\n","/* global sixt */\n\nimport Choices from 'choices.js';\n\nconst selectFields = () => {\n\n  const nFselects = document.querySelectorAll('.nf-field-selectbox');\n  if(nFselects) {\n    nFselects.forEach((elm) => {\n\n      let options = {\n        searchEnabled: true,\n        itemSelectText: '',\n      }\n\n      if(elm.classList.contains('image-select')) {\n        options.allowHTML = true;\n        options.callbackOnCreateTemplates = function(strToEl) {\n          const classNames = this.config.classNames;\n          const itemSelectText = this.config.itemSelectText;\n          return {\n            item: function({ classNames }, data) {\n              return strToEl(\n                '<div class=\"' + String(classNames.item) + ' ' + String(data.highlighted ? classNames.highlightedState: classNames.itemSelectable) + '\" data-item data-id=\"' + String(data.id) +'\" data-value=\"' + String(data.value) +'\"' + String(data.active ? 'aria-selected=\"true\"' : '') + '' + String(data.disabled ? 'aria-disabled=\"true\"' : '') + '> <span style=\"margin-right:10px;\"><img class=\"c-choice__flag\" src=\"'+ sixt.assets + 'images/flags/' + data.value + '.png\"/></span> ' + String(data.label) + '</div>'\n              );\n            },\n            choice: function({ classNames }, data) {\n              return strToEl(\n                '<div class=\"' + String(classNames.item) + ' ' + String(classNames.itemChoice) + ' ' + String( data.disabled ? classNames.itemDisabled : classNames.itemSelectable ) + '\" data-select-text=\"' + String(itemSelectText) + '\" data-choice ' + String(data.disabled ? 'data-choice-disabled aria-disabled=\"true\"' : 'data-choice-selectable') + ' data-id=\"' + String(data.id) +'\" data-value=\"' + String(data.value) + '\" ' + String(data.groupId > 0 ? 'role=\"treeitem\"' : 'role=\"option\"') + '> <span style=\"margin-right:10px;\"><img class=\"c-choice__flag\" src=\"'+ sixt.assets + 'images/flags/' + data.value + '.png\"/></span> ' + String(data.label) + ' </div>'\n              );\n            },\n          };\n        };\n      }\n\n      const choice =  new Choices(elm,options);\n\n      elm.addEventListener(\n        'change',\n        function(event) {\n          setTimeout(() => {\n            selectFields();\n          },500)\n        },\n        false,\n      );\n\n    })\n  }\n}\n\n\njQuery( document ).on( 'nfFormReady',selectFields);\njQuery( document ).on( 'nfFormSubmitResponse',selectFields);\nwindow.selectFields = selectFields;\n","import { gsap } from \"gsap/dist/gsap\";\nimport { ScrollTrigger } from \"gsap/dist/ScrollTrigger\";\ngsap.registerPlugin(ScrollTrigger);\n\nconst mq = window.matchMedia('(min-width: 1024px)');\n\nconst posterScrollAnimation = () => {\n  const posterScrolls = document.querySelectorAll('.c-widget--poster-section');\n  if(posterScrolls) {\n    posterScrolls.forEach(posterScroll => {\n\n      const images = posterScroll.querySelectorAll('.c-poster-section__image');\n      if(images) {\n        images.forEach((image,index) => {\n\n          let transformValues;\n          if(index === 0) {\n            if(mq.matches === true) {\n              transformValues = 'translate(0%, 0%)';\n            } else {\n              transformValues = 'translate(20%, 0%) scale(0.75)';\n            }\n          } else if(index === 1) {\n            if(mq.matches === true) {\n              transformValues = 'translate(-80%, -50%)';\n            } else {\n              transformValues = 'translate(-20%, -50%) scale(0.6)';\n            }\n          } else if(index === 2) {\n            if(mq.matches === true) {\n              transformValues = 'translate(-20%, 10%)';\n            } else {\n              transformValues = 'translate(10%, -15%) scale(0.7)';\n            }\n          }\n\n          gsap.to(image, {\n            ease: \"linear\",\n            transform: transformValues,\n            scrollTrigger: {\n              trigger: posterScroll,\n              pin: false,\n              scrub: true,\n              start: \"top +=70%\",\n              end: \"bottom +=100%\",\n              invalidateOnRefresh: true,\n              markers: false\n            }\n          });\n\n        });\n      }\n    });\n\n  }\n};\n\nwindow.addEventListener('DOMContentLoaded', posterScrollAnimation);\n","/**\n * Represents a post toggle functionality.\n * @class\n */\nclass PostToggle {\n    /**\n     * @classdesc Constructor for creating an instance of the Toggle class.\n     *\n     * @constructor\n     * @param {HTMLElement} toggle - The toggle element.\n     *\n     * @returns {void}\n     */\n    constructor(toggle) {\n        this.toggle = toggle;\n        this.toggleText = toggle.querySelector('span');\n        this.container = toggle.closest('.c-product-sidebar__post-content');\n        this.moreText = toggle.innerText;\n        this.lessText = toggle.getAttribute('data-product-sidebar-post-toggle');\n\n        this.toggle.classList.add('is-init');\n        this.toggle.addEventListener('click', this.handleToggle.bind(this));\n    }\n\n    /**\n     * Toggles the collapse state of an element and updates the toggle button text accordingly.\n     *\n     * @param {Event} e - The event triggered by the toggle action.\n     * @return {void}\n     */\n    handleToggle(e) {\n        e.preventDefault();\n        this.toggleText.innerText = this.container.classList.toggle('is-collapsed') ? this.moreText : this.lessText;\n    }\n}\n\nclass PostShare {\n  /**\n   * @classdesc Constructor for creating an instance of the Toggle class.\n   *\n   * @constructor\n   * @param {HTMLElement} share - The toggle element.\n   *\n   * @returns {void}\n   */\n  constructor(share) {\n    this.share = share;\n    this.container = share.closest('.c-product-sidebar__post');\n\n    this.share.classList.add('is-init');\n    this.share.addEventListener('click', this.handleToggle.bind(this));\n  }\n\n  /**\n   * Toggles the collapse state of an element and updates the toggle button text accordingly.\n   *\n   * @param {Event} e - The event triggered by the toggle action.\n   * @return {void}\n   */\n  handleToggle(e) {\n    e.preventDefault();\n    this.container.classList.toggle('is-share-open');\n  }\n}\n\n/**\n * Initializes post toggle functionality.\n *\n * @function initPostToggle\n * @returns {void}\n */\nconst initPostToggle = () => {\n    const toggles = document.querySelectorAll('[data-product-sidebar-post-toggle]:not(.is-init)');\n    toggles.forEach(toggle => new PostToggle(toggle));\n}\n\nconst initPostShare = () => {\n  const shares = document.querySelectorAll('[data-product-sidebar-post-share]:not(.is-init)');\n  shares.forEach(share => new PostShare(share));\n}\n\nwindow.WP_Grid_Builder && WP_Grid_Builder.on('init', function (wpgb) {\n    wpgb.facets.on('appended', initPostToggle);\n    wpgb.facets.on('appended', initPostShare);\n});\ndocument.addEventListener('DOMContentLoaded', initPostToggle, {once: true,});\ndocument.addEventListener('DOMContentLoaded', initPostShare, {once: true,});\n","import SmoothScroll from 'smooth-scroll';\n\nconst scroll = () => {\n  new SmoothScroll('a[href*=\"#\"][data-scroll]', {\n    speed: 500,\n    updateURL: true,\n    clip: true,\n    popstate: true,\n    offset: function (anchor, toggle) {\n      const header = document.querySelector('.c-header .c-header__row--main');\n      if(header) {\n        return header.clientHeight;\n      } else {\n        0\n      }\n    },\n  });\n};\n\nscroll();\n","const searchToggle = () => {\n  const searchBtnOpen = document.querySelector('.c-btn--search-open');\n  const searchBtnClose = document.querySelector('.c-btn--search-close');\n\n  searchBtnOpen.addEventListener('click',(e) => {\n    e.preventDefault();\n    document.documentElement.classList.add('is-search--active');\n  });\n\n  searchBtnClose.addEventListener('click',(e) => {\n    e.preventDefault();\n    document.documentElement.classList.remove('is-search--active');\n  });\n}\n\nsearchToggle();\n","import Choices from 'choices.js';\n\nconst selectAutoWidth = (wrapper = null) => {\n  let selects;\n\n  if(wrapper) {\n    selects = wrapper.querySelectorAll('select');\n  } else {\n    selects = document.querySelectorAll('select');\n  }\n\n  if(selects){\n    selects.forEach(select => {\n\n      select.addEventListener('change', (event) => {\n        let tempSelect = document.createElement('select'),\n          tempOption = document.createElement('option');\n\n        tempOption.textContent = event.target.options[event.target.selectedIndex].text;\n        tempSelect.style.cssText += `visibility: hidden; position: fixed;`;\n        tempSelect.appendChild(tempOption);\n        event.target.after(tempSelect);\n\n        let tempSelectWidth = tempSelect.getBoundingClientRect().width;\n\n        tempSelectWidth += parseFloat(window.getComputedStyle(select, null).getPropertyValue('padding-left'));\n        tempSelectWidth += parseFloat(window.getComputedStyle(select, null).getPropertyValue('padding-right'));\n\n\n        event.target.style.width = `${tempSelectWidth}px`;\n        tempSelect.remove();\n      });\n\n      select.dispatchEvent(new Event('change'));\n\n    })\n  }\n}\n\nconst selectChoices = () => {\n  const selects = document.querySelectorAll('.u-choices');\n  if(selects) {\n    selects.forEach((elm) => {\n      const choice =  new Choices(elm,{\n        searchEnabled: false,\n        itemSelectText: '',\n      });\n\n    })\n  }\n}\n\nselectChoices();\n\nexport default selectAutoWidth;\n","import Swiper, { Navigation, Scrollbar, Pagination, EffectFade, Autoplay, Mousewheel } from 'swiper'\nimport eventBus from \"../utils/eventBus\";\nimport _throttle from \"lodash.throttle\";\n\nconst sliderElements = document.querySelectorAll('.c-slider')\n\nif (sliderElements) {\n  sliderElements.forEach(sliderEl => {\n    let slider;\n    let baseOptions = {\n      init: false,\n      modules: [Navigation, Scrollbar, Pagination, EffectFade, Autoplay, Mousewheel],\n      scrollbar: {\n        el: sliderEl.querySelector('.c-slider__scrollbar'),\n        draggable: true\n      },\n      pagination: {\n        el: sliderEl.querySelector('.c-slider__pagination'),\n        type: 'bullets',\n        dynamicBullets: true,\n        dynamicMainBullets: 3,\n        clickable: true\n      },\n      navigation: {\n        nextEl: sliderEl.querySelector('.c-slider__button--next'),\n        prevEl: sliderEl.querySelector('.c-slider__button--prev'),\n      }\n    }\n    const { sliderSettings } = sliderEl.dataset\n    let additionalSettings = {}\n\n    if (sliderSettings) {\n      additionalSettings = JSON.parse(sliderSettings)\n    }\n\n    const enableSlider = () => {\n      slider = new Swiper(sliderEl.querySelector('.c-slider__container'), { ...baseOptions, ...additionalSettings})\n\n      if (sliderEl.classList.contains('c-slider--offgrid-nextonly')) {\n        slider.params.pagination.dynamicBullets = false;\n      }\n\n      slider.on('slideChange', (s) => {\n        setTimeout(function () {\n          slider.params.mousewheel.releaseOnEdges = false;\n        }, 500);\n      })\n\n      slider.on('reachBeginning reachEnd',(s) => {\n        setTimeout(function () {\n          slider.params.mousewheel.releaseOnEdges = true;\n        }, 750);\n\n      })\n\n      if (sliderEl.classList.contains('c-slider--offgrid')) {\n        // Get to know which slides are currently in view\n        slider.on('init slideChange', (s) => {\n          let slidesPerView = s.passedParams.slidesPerView\n\n          if (Object.keys(s.passedParams.breakpoints).includes(s.currentBreakpoint)) {\n            slidesPerView = s.passedParams.breakpoints[s.currentBreakpoint].slidesPerView\n          }\n\n          const currentSlideSelection = Array.from(s.slides).slice(s.realIndex, s.realIndex + slidesPerView)\n          const restSlides = Array.from(s.slides).filter(slide => !currentSlideSelection.includes(slide))\n          const viewdSlides = Array.from(s.slides).filter((slide,index) => index < s.activeIndex)\n\n\n          currentSlideSelection.forEach(slideEl => slideEl.classList.add(['c-slider__item--current']))\n          currentSlideSelection.forEach(slideEl => slideEl.classList.remove(['c-slider__item--viewed']))\n          restSlides.forEach(slideEl => slideEl.classList.remove('c-slider__item--current'))\n          viewdSlides.forEach(slideEl => slideEl.classList.add('c-slider__item--viewed'))\n        });\n      }\n    }\n\n    const externalSliderNav = () => {\n\n      const navID = sliderEl.dataset.slider;\n      if(navID) {\n        const navElm = document.querySelector('[data-slider-nav=\"'+navID+'\"]');\n        const links = navElm.querySelectorAll('a');\n\n        if(links) {\n\n          slider.on('init slideChange', (s) => {\n            const current = navElm.querySelector('[data-slider-nav-item].is-active');\n            if(current) {\n              current.classList.remove('is-active');\n            }\n\n            navElm.querySelector('[data-slider-nav-item]:nth-child('+(s.activeIndex + 1)+')').classList.add('is-active');\n\n\n          })\n\n          links.forEach((link,index) => {\n            link.addEventListener('click',(e) => {\n              e.preventDefault();\n              slider.slideTo(index)\n            })\n          })\n        }\n      }\n    }\n\n    const handleMobileSlider = () => {\n      const mq = window.matchMedia('(min-width: 1024px)')\n\n      if (mq.matches === true) {\n        if (slider !== undefined) {\n          slider.destroy(true, true);\n        }\n        sliderEl.classList.add('c-slider--is-grid');\n      } else if (mq.matches === false) {\n        enableSlider()\n        slider.init()\n        externalSliderNav()\n        sliderEl.classList.remove('c-slider--is-grid');\n      }\n    }\n\n    if (additionalSettings['mobileOnly'] === true) {\n      handleMobileSlider()\n\n      window.addEventListener('resize', _throttle(handleMobileSlider, 500))\n    } else {\n      enableSlider()\n      slider.init()\n      externalSliderNav();\n    }\n  })\n}\n","import { gsap } from \"gsap/dist/gsap\";\nimport { ScrollTrigger } from \"gsap/dist/ScrollTrigger\";\nimport _throttle from \"lodash.throttle\";\ngsap.registerPlugin(ScrollTrigger);\n\nconst mq = window.matchMedia('(min-width: 1024px)');\n\nconst svgABAnimation = () => {\n  const abs = document.querySelectorAll('.c-widget--poster-section,.c-widget--teaser-large');\n  if(abs) {\n    abs.forEach(ab => {\n\n      const svg = ab.querySelector('[data-svg-anim]');\n      if(svg) {\n\n        const symbolA = svg.querySelector('.data-symbol-a');\n        const symbolArrow = svg.querySelector('.data-symbol-arrow');\n        const symbolB = svg.querySelector('.data-symbol-b');\n\n        gsap.to(symbolA, {\n          x: ab.classList.contains('c-widget--teaser-large') ? (mq.matches === true) ? -150 : 0 : 0,\n          scrollTrigger: {\n            trigger: ab,\n            pin: false,\n            scrub: 1,\n            start: \"top +=100%\",\n            end: \"bottom +=70%\",\n            invalidateOnRefresh: true,\n            markers: false\n          }\n        });\n\n        gsap.to(symbolA, {\n          opacity: 0.99,\n          scrollTrigger: {\n            trigger: ab,\n            pin: false,\n            scrub: 1,\n            start: \"top +=30%\",\n            end: \"bottom +=80%\",\n            invalidateOnRefresh: true,\n            markers: false\n          }\n        });\n\n        gsap.to(symbolArrow, {\n          x: ab.classList.contains('c-widget--teaser-large') ? (mq.matches === true) ? -150 : 0 : 0,\n          scrollTrigger: {\n            trigger: ab,\n            pin: false,\n            scrub: 1,\n            start: \"top +=100%\",\n            end: \"bottom +=75%\",\n            invalidateOnRefresh: true,\n            markers: false\n          }\n        });\n        gsap.to(symbolArrow, {\n          opacity: 0.99,\n          scrollTrigger: {\n            trigger: ab,\n            pin: false,\n            scrub: 1,\n            start: \"top +=30%\",\n            end: \"bottom +=80%\",\n            invalidateOnRefresh: true,\n            markers: false\n          }\n        });\n\n        gsap.to(symbolB, {\n          x: ab.classList.contains('c-widget--teaser-large') ? (mq.matches === true) ? -50 : 0 : 0,\n          scrollTrigger: {\n            trigger: ab,\n            pin: false,\n            scrub: 1,\n            start: \"top +=100%\",\n            end: \"bottom +=80%\",\n            invalidateOnRefresh: true,\n            markers: false\n          }\n        });\n\n        gsap.to(symbolB, {\n          opacity: 0.99,\n          scrollTrigger: {\n            trigger: ab,\n            pin: false,\n            scrub: 1,\n            start: \"top +=30%\",\n            end: \"bottom +=80%\",\n            invalidateOnRefresh: true,\n            markers: false\n          }\n        });\n      }\n    });\n\n  }\n};\n\nwindow.addEventListener('DOMContentLoaded', svgABAnimation);\n\nconst svgPosition = () => {\n  const svgWrappers = document.querySelectorAll('.c-widget--teaser-large');\n  if(svgWrappers) {\n    svgWrappers.forEach(svgWrapper => {\n      const content = svgWrapper.querySelector('.c-teaser-large__content');\n      const svg = svgWrapper.querySelector('.c-teaser-large__background');\n\n      svgWrapper.style.setProperty('--svg-pos', `${content.clientHeight + svg.clientHeight / 2}px`);\n    });\n  }\n}\n\nwindow.addEventListener('DOMContentLoaded', svgPosition);\nwindow.addEventListener('resize', _throttle(svgPosition, 500))\n","import Tabby from 'tabbyjs';\n\nconst tabs =  document.querySelectorAll('[data-tabs],[data-horizontal-tabs]');\nif (tabs.length) {\n  tabs.forEach(tab => {\n    const sTab = new Tabby('#'+tab.id);\n  })\n  document.addEventListener('tabby', function (event) {\n    const tab = event.target;\n    const content = event.detail.content;\n    const dynamic = tab.closest('ul').dataset.horizontalTabsDynamic;\n\n    if(typeof dynamic !== 'undefined') {\n      const tabHeadline = content.querySelector('[data-tab-headline]');\n      const wrapper = tab.closest('.o-tabs_wrapper');\n      const headline = wrapper.querySelector('[data-dynamic-headline]');\n\n      if (wrapper && tabHeadline && headline) {\n        headline.innerText = tabHeadline.innerText;\n      }\n\n    }\n\n  }, false);\n}\n","import Houdini from 'houdinijs';\nimport SmoothScroll from 'smooth-scroll';\nimport {\n  Chart,\n  ArcElement,\n  LineElement,\n  BarElement,\n  PointElement,\n  BarController,\n  BubbleController,\n  DoughnutController,\n  LineController,\n  Interaction,\n  PieController,\n  PolarAreaController,\n  RadarController,\n  ScatterController,\n  CategoryScale,\n  LinearScale,\n  LogarithmicScale,\n  RadialLinearScale,\n  TimeScale,\n  TimeSeriesScale,\n  Decimation,\n  Filler,\n  Legend,\n  Title,\n  Tooltip,\n  SubTitle\n} from 'chart.js';\nimport 'chartjs-adapter-moment';\nimport {CrosshairPlugin,Interpolate} from 'chartjs-plugin-crosshair';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport moment from 'moment';\n\nChart.register(ArcElement,\n  LineElement,\n  BarElement,\n  PointElement,\n  BarController,\n  BubbleController,\n  DoughnutController,\n  LineController,\n  PieController,\n  PolarAreaController,\n  RadarController,\n  ScatterController,\n  CategoryScale,\n  LinearScale,\n  LogarithmicScale,\n  RadialLinearScale,\n  TimeScale,\n  TimeSeriesScale,\n  Decimation,\n  Filler,\n  Legend,\n  Title,\n  Tooltip,\n  SubTitle,\n  CrosshairPlugin,\n  annotationPlugin\n);\nInteraction.modes.interpolate = Interpolate\n\nconst mq = window.matchMedia('(min-width: 1024px)');\nconst scroller = new SmoothScroll(null,{\n  offset: function (anchor, toggle) {\n    const header = document.querySelector('.c-header .c-header__row--main');\n    if(header) {\n      return header.clientHeight;\n    } else {\n      0\n    }\n  },\n});\n\nconst timeline =  () => {\n\n  const timelines = document.querySelectorAll('.c-timeline__wrap');\n\n  timelines.forEach((elm,index) => {\n    const widget = elm.closest('.c-widget');\n    const oTimeLineData = JSON.parse(elm.dataset.chartJson);\n    const ctxs = elm.querySelectorAll('canvas');\n\n    let activePoint = 0;\n    const maxY = Math.max(...oTimeLineData.graph.map(x => x.y)) + 20;\n    ctxs.forEach(sCtx => {\n\n      const ctx = sCtx.getContext('2d');\n\n      const smallChart = sCtx.classList.contains('c-timeline__chart__canvas--lightweight');\n\n      let timeLineData = Object.assign({}, oTimeLineData);\n      timeLineData.milestones = timeLineData.milestones.filter(function(item) {\n        if(smallChart) {\n          return moment(item.x).isBefore('1985-12-31');\n        }\n        return true;\n      });\n\n      const colorScheme = elm.closest('.c-widget--timeline');\n\n      let gradientColor = ctx.createLinearGradient(0, 0, 0, 400);\n      let gradientColorHover = ctx.createLinearGradient(0, 0, 0, 500);\n      let borderColor = '#FF5000';\n      let labelColor = '#707070';\n      let gridColor = '#70707030';\n      let scatterColor = '#FFFFFF';\n      let scatterHoverColor = '#FF5000';\n\n      if(colorScheme.classList.contains('c-widget--theme-orange')) {\n        gradientColor.addColorStop(0, 'rgba(255,255,255,1)');\n        gradientColor.addColorStop(1, 'rgba(255,255,255,0)');\n        gradientColorHover.addColorStop(0, 'rgba(255,255,255,1)');\n        gradientColorHover.addColorStop(1, 'rgba(255,255,255,0)');\n        borderColor = '#ffffff';\n        labelColor = '#484848';\n        gridColor = '#ffffff20';\n      } else if(colorScheme.classList.contains('c-widget--theme-grey')) {\n        gradientColor.addColorStop(0, 'rgba(255,95,0,1)');\n        gradientColor.addColorStop(1, 'rgba(255,95,0,0)');\n        gradientColorHover.addColorStop(0, 'rgba(48,48,48,1)');\n        gradientColorHover.addColorStop(1, 'rgba(48,48,48,0)');\n      } else if(colorScheme.classList.contains('c-widget--theme-dark')) {\n        gradientColor.addColorStop(0, 'rgba(255,95,0,1)');\n        gradientColor.addColorStop(1, 'rgba(255,95,0,0)');\n        gradientColorHover.addColorStop(0, 'rgba(255,255,255,1)');\n        gradientColorHover.addColorStop(1, 'rgba(255,255,255,0)');\n      } else {\n        gradientColor.addColorStop(0, 'rgba(255,95,0,1)');\n        gradientColor.addColorStop(1, 'rgba(255,95,0,0)');\n        gradientColorHover.addColorStop(0, 'rgba(48,48,48,1)');\n        gradientColorHover.addColorStop(1, 'rgba(48,48,48,0)');\n      }\n\n      const marker = {\n        id: 'marker',\n        afterDatasetDraw(chart, args, options) {\n          const {ctx, chartArea: {top, bottom, left, right, width, height}, scales: {x, y}} = chart;\n\n          const icon = new Path2D('M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z');\n\n          ctx.fillStyle = 'rgba(48,48,48,1)';\n          ctx.stroke(icon);\n        }\n      }\n\n      const chart = new Chart(ctx, {\n        type: 'line',\n        data: {\n          'datasets': [{\n            type: 'scatter',\n            data: timeLineData.milestones,\n            borderColor: borderColor,\n            spanGaps: true,\n            elements: {\n              point: {\n                lineWidth: 5,\n                hoverLineWidth: 2,\n                radius : 10,\n                hoverRadius : 15,\n                backgroundColor: scatterColor,\n                hoverBackgroundColor: scatterHoverColor,\n                hitRadius: 10,\n                display: true,\n              },\n            },\n          },{\n            type: 'line',\n            data: timeLineData.graph,\n            fill: true,\n            hidden: smallChart,\n            borderColor: borderColor,\n            backgroundColor : gradientColor,\n            tension: 0.2,\n            elements: {\n              point: {\n                radius : 0,\n                display: false,\n              }\n            },\n          }]\n        },\n        yAxis_crosshair:{\n          enabled:true,\n          snapToData:false\n        },\n        options: {\n          layout: {\n            padding: {\n              right: 0,\n              left: 0,\n            }\n          },\n          responsive: true,\n          maintainAspectRatio: false,\n          events: ['click','mousemove'],\n          onHover(e, elements, chart) {\n\n            // show cursor pointer\n\n            const target = e.native ? e.native.target : e.target;\n            target.style.cursor = elements[0] ? 'pointer' : 'default';\n\n            if(elements[0] && elements[0].datasetIndex === 0) {\n\n              const card = widget.querySelector('[data-milestone=\"'+elements[0].index+'\"]');\n              if(card) {\n                setTimeout(() => {\n                  const btn = card.querySelector('button');\n                  if(btn.getAttribute('aria-expanded') !== 'true') {\n                    btn.click();\n                    const cards = widget.querySelector('.c-timeline__cards');\n                    cards.classList.remove('is--overflown');\n                    cards.scrollTop = card.offsetTop;\n                    if(mq.matches !== true) {\n                      scroller.animateScroll(card);\n                    }\n                    activePoint = elements[0].index;\n                  }\n                },50)\n              }\n\n            }\n\n            if(target.classList.contains('hovering')) {\n              chart.setActiveElements([{\n                datasetIndex: 0,\n                index: activePoint\n              }]);\n              chart.update('resize');\n            }\n\n          },\n          onClick(e, elements, chart) {\n            if(elements.length > 0 && elements[0].datasetIndex === 0) {\n              const card = widget.querySelector('[data-milestone=\"'+elements[0].index+'\"]');\n              if(card) {\n                setTimeout(() => {\n                  const btn = card.querySelector('button');\n                  if(btn.getAttribute('aria-expanded') !== 'true') {\n                    btn.click();\n                    const cards = widget.querySelector('.c-timeline__cards');\n                    cards.classList.remove('is--overflown');\n                    cards.scrollTop = card.offsetTop;\n                    if(mq.matches !== true) {\n                      scroller.animateScroll(card);\n                    }\n                    activePoint = elements[0].index;\n                  }\n                },50)\n              }\n            }\n          },\n          scales: {\n            x: {\n              type: 'time',\n              bounds: 'ticks',\n              time: {\n                unit: 'year',\n                displayFormats: {\n                  year: 'YYYY',\n                  min: smallChart ? moment('1900-12-31').format('YYYY-MM-DD') : moment('1985-12-31').format('YYYY-MM-DD'),\n                  max: smallChart ? moment('1985-12-31').format('YYYY-MM-DD') : moment().add(2,'years').format('YYYY-MM-DD')\n                },\n                min: smallChart ? moment('1900-12-31').format('YYYY-MM-DD') : moment('1985-12-31').format('YYYY-MM-DD'),\n                max: smallChart ? moment('1985-12-31').format('YYYY-MM-DD') : moment().add(2,'years').format('YYYY-MM-DD')\n              },\n              min: smallChart ? moment('1900-12-31').format('YYYY-MM-DD') : moment('1985-12-31').format('YYYY-MM-DD'),\n              max: smallChart ? moment('1985-12-31').format('YYYY-MM-DD') : moment().add(2,'years').format('YYYY-MM-DD'),\n              ticks: {\n                padding: 14,\n                maxTicksLimit: smallChart ? 4 : 8,\n                color: labelColor,\n              },\n              grid: {\n                display:false,\n                borderColor: gridColor,\n                color: gridColor,\n              }\n            },\n            y: {\n              max: Math.ceil(maxY / 10) * 10,\n              beginAtZero: true,\n              ticks: {\n                display: smallChart,\n                callback: function(value, index, ticks) {\n                  return getNumberUnit(value);\n                },\n                color: labelColor,\n                padding: 14,\n                //min: moment('1986-12-31').format('YYYY-MM-DD'),\n                max: moment().add(20, 'years').format('YYYY-MM-DD')\n              },\n              grid: {\n                tickMarkLength: 80,\n                drawTicks:false,\n                borderColor: gridColor,\n                color: gridColor,\n                lineWidth: 1,\n                drawBorder: false\n              }\n            },\n          },\n          plugins: {\n            marker,\n            legend: {\n              display: false,\n            },\n            tooltip: {\n              enabled: false,\n              external: (model) => {\n                const tooltip = model.chart.canvas.closest('.c-widget').querySelector('.c-timeline__tooltip');\n                tooltip.style.left = model.tooltip.caretX + \"px\";\n                tooltip.style.top = \"0px\";\n                tooltip.style.display = \"block\";\n                tooltip.style.opacity = 1;\n                tooltip.style.pointerEvents = 'none';\n\n                if (model.tooltip.opacity === 0) {\n                  tooltip.style.opacity = 0;\n                  return;\n                }\n\n                tooltip.querySelector(\".tooltip-label\").textContent = moment(model.tooltip.title[0]).format('YYYY');\n\n              },\n              intersect: false,\n              mode: \"index\",\n            },\n            crosshair: {\n              line: {\n                color: gradientColorHover,\n                width: 6\n              },\n              zoom: {\n                enabled: false\n              },\n              sync: {\n                enabled: false\n              }\n            },\n\n          }\n        },\n      });\n\n      const cards = widget.querySelectorAll('[data-milestone]');\n\n      cards.forEach(item => {\n        const number = item.dataset.milestone;\n        const button = item.querySelector('[data-houdini-toggle]');\n        button.addEventListener('click',() => {\n          if(button.getAttribute('aria-expanded') !== 'true') {\n            widget.querySelector('.c-timeline__cards').classList.remove('is--overflown');\n            chart.setActiveElements([{\n              datasetIndex: 0,\n              index: number\n            }])\n            activePoint = number;\n            chart.update();\n\n          }\n        });\n\n      });\n\n    })\n\n  });\n\n};\n\nwindow.addEventListener('DOMContentLoaded', timeline, { once: true });\n\nconst getNumberUnit = (num, round = 1) => {\n  const unit = Math.floor(Math.round(num / 1.0e+1).toLocaleString().replaceAll(',', '').length),\n    wunit = [\"Tsd.\",\"Mio.\",\"Bil.\",\"Tril.\"][Math.floor(unit / 3) - 1],\n    funit = Math.abs(Number(num))/Number('1.0e+'+(unit-unit%3));\n  return wunit ? funit.toFixed(round).toLocaleString() + ' ' + wunit : num.toFixed(round).toString() + ' €';\n}\n\nconst timelineAccordion = () => {\n\n  const timeLineAccSets = document.querySelectorAll('[data-houdini-group-set]'),\n        sets = [];\n\n  if (timeLineAccSets) {\n    timeLineAccSets.forEach(set => {\n      if (!sets.includes(set.dataset.houdiniGroupSet)) {\n        sets.push(set.dataset.houdiniGroupSet);\n      }\n    });\n  }\n\n  sets.forEach(set => {\n\n    const timelineAcc = new Houdini(\n      `[data-houdini-group-set=\"${set}\"]`,\n      {\n        isAccordion: true,\n        collapseOthers: true,\n        icon: false,\n        btnClass: 'c-timeline__card-title-inner',\n      },\n    );\n\n  });\n\n}\n\ntimelineAccordion();\n\nconst timelineLoadmore = () => {\n\n  const cardWrapper = document.querySelectorAll('.c-timeline__cards');\n\n  cardWrapper.forEach(elm => {\n\n    const btn = elm.querySelector('[timeline-load-more]');\n    if(btn) {\n      btn.addEventListener('click', (e) => {\n        e.preventDefault();\n        elm.classList.remove('is--overflown');\n      });\n    }\n\n  });\n\n}\n\ntimelineLoadmore();\n","import Plyr from 'plyr';\n\nconst video = () => {\n  const videos = document.querySelectorAll('.u-plyr');\n\n  videos.forEach(video => {\n    const download = video.dataset.plyrDownload;\n    let controls;\n    if(download) {\n      controls = [\n        'play-large',\n        'play',\n        'progress',\n        'current-time',\n        'mute',\n        'volume',\n        'download',\n        'fullscreen',\n      ];\n    } else {\n      controls = [\n        'play-large',\n        'play',\n        'progress',\n        'current-time',\n        'mute',\n        'volume',\n        'fullscreen',\n      ]\n    }\n\n    const player = new Plyr(video, {\n      controls,\n      hideControls: true,\n    });\n  });\n\n};\n\n\nwindow.addEventListener('DOMContentLoaded', video);\n","import { gsap } from \"gsap/dist/gsap\";\nimport { ScrollTrigger } from \"gsap/dist/ScrollTrigger\";\ngsap.registerPlugin(ScrollTrigger);\n\nconst videoScrollAnimation = () => {\n  const videoScrolls = document.querySelectorAll('.c-widget--video-bg');\n  if(videoScrolls) {\n    videoScrolls.forEach(videoScroll => {\n\n      const container = videoScroll.querySelector('.c-video-bg');\n\n      let sections = videoScroll.querySelectorAll('.c-video-bg__wrapper'),\n          tween;\n\n      tween = gsap.to(sections, {\n        xPercent: -100 * ( sections.length - 1 ),\n        ease: \"none\",\n        scrollTrigger: {\n          trigger: container,\n          pin: true,\n          start: \"top top\",\n          scrub: true,\n          snap: false,\n          end: () =>  \"+=\" + (container.offsetWidth - innerWidth)\n        }\n\n      });\n    });\n  }\n};\n\n\nwindow.addEventListener('DOMContentLoaded', videoScrollAnimation);\n\nconst autoplay = () => {\n  Object.defineProperty(HTMLMediaElement.prototype, 'playing', {\n    get() {\n      return !!(\n        this.currentTime > 0 &&\n        !this.paused &&\n        !this.ended &&\n        this.readyState > 2\n      );\n    },\n  });\n\n  const videoElements = document.querySelectorAll('.c-widget__video');\n  if(videoElements) {\n    videoElements.forEach(video => {\n\n      const videoElement = video.querySelector('video');\n      const imageElement = video.querySelector('.c-img');\n      if (videoElement && imageElement) {\n        if (!videoElement.playing) {\n          videoElement.classList.add('low-powermode');\n          imageElement.classList.remove('low-powermode');\n        }\n\n        document.querySelector('body').addEventListener('touchstart', () => {\n          if (!videoElement.playing) {\n            videoElement.play();\n          }\n        });\n\n        videoElement.addEventListener('play', () => {\n          videoElement.classList.remove('low-powermode');\n          imageElement.classList.add('low-powermode');\n        });\n      }\n\n    });\n  }\n};\n\nautoplay();\n","class EventBus {\n  constructor(description = '') { this.eventTarget = document.appendChild(document.createComment(description)); }\n  on(type, listener) { this.eventTarget.addEventListener(type, listener); }\n  once(type, listener) { this.eventTarget.addEventListener(type, listener, { once: true }); }\n  off(type, listener) { this.eventTarget.removeEventListener(type, listener); }\n  emit(type, detail) { return this.eventTarget.dispatchEvent(new CustomEvent(type, { detail })); }\n}\n\nconst eventBus = new EventBus('vowo-event-bus');\nexport default eventBus;\n","export const isInViewport = (el) => {\n  const rect = el.getBoundingClientRect();\n  return (\n    rect.top >= 0 &&\n    rect.left >= 0 &&\n    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n    rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n  );\n}\n\n\nexport default { isInViewport }\n","!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).basicScroll=t()}}((function(){return function t(n,o,e){function r(i,c){if(!o[i]){if(!n[i]){var f=\"function\"==typeof require&&require;if(!c&&f)return f(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var s=o[i]={exports:{}};n[i][0].call(s.exports,(function(t){return r(n[i][1][t]||t)}),s,s.exports,t,n,o,e)}return o[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<e.length;i++)r(e[i]);return r}({1:[function(t,n,o){n.exports=function(t){var n=2.5949095;return(t*=2)<1?t*t*((n+1)*t-n)*.5:.5*((t-=2)*t*((n+1)*t+n)+2)}},{}],2:[function(t,n,o){n.exports=function(t){var n=1.70158;return t*t*((n+1)*t-n)}},{}],3:[function(t,n,o){n.exports=function(t){var n=1.70158;return--t*t*((n+1)*t+n)+1}},{}],4:[function(t,n,o){var e=t(\"./bounce-out\");n.exports=function(t){return t<.5?.5*(1-e(1-2*t)):.5*e(2*t-1)+.5}},{\"./bounce-out\":6}],5:[function(t,n,o){var e=t(\"./bounce-out\");n.exports=function(t){return 1-e(1-t)}},{\"./bounce-out\":6}],6:[function(t,n,o){n.exports=function(t){var n=t*t;return t<4/11?7.5625*n:t<8/11?9.075*n-9.9*t+3.4:t<.9?4356/361*n-35442/1805*t+16061/1805:10.8*t*t-20.52*t+10.72}},{}],7:[function(t,n,o){n.exports=function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},{}],8:[function(t,n,o){n.exports=function(t){return 1-Math.sqrt(1-t*t)}},{}],9:[function(t,n,o){n.exports=function(t){return Math.sqrt(1- --t*t)}},{}],10:[function(t,n,o){n.exports=function(t){return t<.5?4*t*t*t:.5*Math.pow(2*t-2,3)+1}},{}],11:[function(t,n,o){n.exports=function(t){return t*t*t}},{}],12:[function(t,n,o){n.exports=function(t){var n=t-1;return n*n*n+1}},{}],13:[function(t,n,o){n.exports=function(t){return t<.5?.5*Math.sin(13*Math.PI/2*2*t)*Math.pow(2,10*(2*t-1)):.5*Math.sin(-13*Math.PI/2*(2*t-1+1))*Math.pow(2,-10*(2*t-1))+1}},{}],14:[function(t,n,o){n.exports=function(t){return Math.sin(13*t*Math.PI/2)*Math.pow(2,10*(t-1))}},{}],15:[function(t,n,o){n.exports=function(t){return Math.sin(-13*(t+1)*Math.PI/2)*Math.pow(2,-10*t)+1}},{}],16:[function(t,n,o){n.exports=function(t){return 0===t||1===t?t:t<.5?.5*Math.pow(2,20*t-10):-.5*Math.pow(2,10-20*t)+1}},{}],17:[function(t,n,o){n.exports=function(t){return 0===t?t:Math.pow(2,10*(t-1))}},{}],18:[function(t,n,o){n.exports=function(t){return 1===t?t:1-Math.pow(2,-10*t)}},{}],19:[function(t,n,o){n.exports={backInOut:t(\"./back-in-out\"),backIn:t(\"./back-in\"),backOut:t(\"./back-out\"),bounceInOut:t(\"./bounce-in-out\"),bounceIn:t(\"./bounce-in\"),bounceOut:t(\"./bounce-out\"),circInOut:t(\"./circ-in-out\"),circIn:t(\"./circ-in\"),circOut:t(\"./circ-out\"),cubicInOut:t(\"./cubic-in-out\"),cubicIn:t(\"./cubic-in\"),cubicOut:t(\"./cubic-out\"),elasticInOut:t(\"./elastic-in-out\"),elasticIn:t(\"./elastic-in\"),elasticOut:t(\"./elastic-out\"),expoInOut:t(\"./expo-in-out\"),expoIn:t(\"./expo-in\"),expoOut:t(\"./expo-out\"),linear:t(\"./linear\"),quadInOut:t(\"./quad-in-out\"),quadIn:t(\"./quad-in\"),quadOut:t(\"./quad-out\"),quartInOut:t(\"./quart-in-out\"),quartIn:t(\"./quart-in\"),quartOut:t(\"./quart-out\"),quintInOut:t(\"./quint-in-out\"),quintIn:t(\"./quint-in\"),quintOut:t(\"./quint-out\"),sineInOut:t(\"./sine-in-out\"),sineIn:t(\"./sine-in\"),sineOut:t(\"./sine-out\")}},{\"./back-in\":2,\"./back-in-out\":1,\"./back-out\":3,\"./bounce-in\":5,\"./bounce-in-out\":4,\"./bounce-out\":6,\"./circ-in\":8,\"./circ-in-out\":7,\"./circ-out\":9,\"./cubic-in\":11,\"./cubic-in-out\":10,\"./cubic-out\":12,\"./elastic-in\":14,\"./elastic-in-out\":13,\"./elastic-out\":15,\"./expo-in\":17,\"./expo-in-out\":16,\"./expo-out\":18,\"./linear\":20,\"./quad-in\":22,\"./quad-in-out\":21,\"./quad-out\":23,\"./quart-in\":25,\"./quart-in-out\":24,\"./quart-out\":26,\"./quint-in\":28,\"./quint-in-out\":27,\"./quint-out\":29,\"./sine-in\":31,\"./sine-in-out\":30,\"./sine-out\":32}],20:[function(t,n,o){n.exports=function(t){return t}},{}],21:[function(t,n,o){n.exports=function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)}},{}],22:[function(t,n,o){n.exports=function(t){return t*t}},{}],23:[function(t,n,o){n.exports=function(t){return-t*(t-2)}},{}],24:[function(t,n,o){n.exports=function(t){return t<.5?8*Math.pow(t,4):-8*Math.pow(t-1,4)+1}},{}],25:[function(t,n,o){n.exports=function(t){return Math.pow(t,4)}},{}],26:[function(t,n,o){n.exports=function(t){return Math.pow(t-1,3)*(1-t)+1}},{}],27:[function(t,n,o){n.exports=function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},{}],28:[function(t,n,o){n.exports=function(t){return t*t*t*t*t}},{}],29:[function(t,n,o){n.exports=function(t){return--t*t*t*t*t+1}},{}],30:[function(t,n,o){n.exports=function(t){return-.5*(Math.cos(Math.PI*t)-1)}},{}],31:[function(t,n,o){n.exports=function(t){var n=Math.cos(t*Math.PI*.5);return Math.abs(n)<1e-14?1:1-n}},{}],32:[function(t,n,o){n.exports=function(t){return Math.sin(t*Math.PI/2)}},{}],33:[function(t,n,o){n.exports=function(t,n){n||(n=[0,\"\"]),t=String(t);var o=parseFloat(t,10);return n[0]=o,n[1]=t.match(/[\\d.\\-\\+]*\\s*(.*)/)[1]||\"\",n}},{}],34:[function(t,n,o){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.create=void 0;var e=u(t(\"parse-unit\")),r=u(t(\"eases\"));function u(t){return t&&t.__esModule?t:{default:t}}function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var c,f,a,s=[],p=\"undefined\"!=typeof window,l=function(){return(document.scrollingElement||document.documentElement).scrollTop},d=function(){return window.innerHeight||window.outerHeight},m=function(t){return!1===isNaN((0,e.default)(t)[0])},b=function(t){var n=(0,e.default)(t);return{value:n[0],unit:n[1]}},h=function(t){return null!==String(t).match(/^[a-z]+-[a-z]+$/)},w=function(t,n){return!0===t?n.elem:t instanceof HTMLElement==!0?n.direct:n.global},y=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l(),e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:d(),r=n.getBoundingClientRect(),u=t.match(/^[a-z]+/)[0],i=t.match(/[a-z]+$/)[0],c=0;return\"top\"===i&&(c-=0),\"middle\"===i&&(c-=e/2),\"bottom\"===i&&(c-=e),\"top\"===u&&(c+=r.top+o),\"middle\"===u&&(c+=r.top+o+r.height/2),\"bottom\"===u&&(c+=r.top+o+r.height),\"\".concat(c,\"px\")},v=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l(),o=t.getData(),e=o.to.value-o.from.value,r=n-o.from.value,u=r/(e/100),i=Math.min(Math.max(u,0),100),c=w(o.direct,{global:document.documentElement,elem:o.elem,direct:o.direct}),f=Object.keys(o.props).reduce((function(t,n){var e=o.props[n],r=e.from.unit||e.to.unit,u=e.from.value-e.to.value,c=e.timing(i/100),f=e.from.value-u*c,a=Math.round(1e4*f)/1e4;return t[n]=a+r,t}),{}),a=u>=0&&u<=100,s=u<0||u>100;return!0===a&&o.inside(t,u,f),!0===s&&o.outside(t,u,f),{elem:c,props:f}},x=function(t,n){Object.keys(n).forEach((function(o){return function(t,n){t.style.setProperty(n.key,n.value)}(t,{key:o,value:n[o]})}))};o.create=function(t){var n=null,o=!1,e={isActive:function(){return o},getData:function(){return n},calculate:function(){n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null==(t=Object.assign({},t)).inside&&(t.inside=function(){}),null==t.outside&&(t.outside=function(){}),null==t.direct&&(t.direct=!1),null==t.track&&(t.track=!0),null==t.props&&(t.props={}),null==t.from)throw new Error(\"Missing property `from`\");if(null==t.to)throw new Error(\"Missing property `to`\");if(\"function\"!=typeof t.inside)throw new Error(\"Property `inside` must be undefined or a function\");if(\"function\"!=typeof t.outside)throw new Error(\"Property `outside` must be undefined or a function\");if(\"boolean\"!=typeof t.direct&&t.direct instanceof HTMLElement==0)throw new Error(\"Property `direct` must be undefined, a boolean or a DOM element/node\");if(!0===t.direct&&null==t.elem)throw new Error(\"Property `elem` is required when `direct` is true\");if(\"boolean\"!=typeof t.track)throw new Error(\"Property `track` must be undefined or a boolean\");if(\"object\"!==i(t.props))throw new Error(\"Property `props` must be undefined or an object\");if(null==t.elem){if(!1===m(t.from))throw new Error(\"Property `from` must be a absolute value when no `elem` has been provided\");if(!1===m(t.to))throw new Error(\"Property `to` must be a absolute value when no `elem` has been provided\")}else!0===h(t.from)&&(t.from=y(t.from,t.elem)),!0===h(t.to)&&(t.to=y(t.to,t.elem));return t.from=b(t.from),t.to=b(t.to),t.props=Object.keys(t.props).reduce((function(n,o){var e=Object.assign({},t.props[o]);if(!1===m(e.from))throw new Error(\"Property `from` of prop must be a absolute value\");if(!1===m(e.to))throw new Error(\"Property `from` of prop must be a absolute value\");if(e.from=b(e.from),e.to=b(e.to),null==e.timing&&(e.timing=r.default.linear),\"string\"!=typeof e.timing&&\"function\"!=typeof e.timing)throw new Error(\"Property `timing` of prop must be undefined, a string or a function\");if(\"string\"==typeof e.timing&&null==r.default[e.timing])throw new Error(\"Unknown timing for property `timing` of prop\");return\"string\"==typeof e.timing&&(e.timing=r.default[e.timing]),n[o]=e,n}),{}),t}(t)},update:function(){var t=v(e),n=t.elem,o=t.props;return x(n,o),o},start:function(){o=!0},stop:function(){o=!1},destroy:function(){s[u]=void 0}},u=s.push(e)-1;return e.calculate(),e},!0===p?(!function t(n,o){var e=function(){requestAnimationFrame((function(){return t(n,o)}))},r=function(t){return t.filter((function(t){return null!=t&&t.isActive()}))}(s);if(0===r.length)return e();var u=l();if(o===u)return e();o=u,r.map((function(t){return v(t,u)})).forEach((function(t){var n=t.elem,o=t.props;return x(n,o)})),e()}(),window.addEventListener(\"resize\",(c=function(){(function(t){return t.filter((function(t){return null!=t&&t.getData().track}))})(s).forEach((function(t){t.calculate(),t.update()}))},f=50,a=null,function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];clearTimeout(a),a=setTimeout((function(){return c.apply(void 0,n)}),f)}))):console.warn(\"basicScroll is not executing because you are using it in an environment without a `window` object\")},{eases:19,\"parse-unit\":33}]},{},[34])(34)}));","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1)      { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n  var currentX, currentT, i = 0;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n   var currentSlope = getSlope(aGuessT, mX1, mX2);\n   if (currentSlope === 0.0) {\n     return aGuessT;\n   }\n   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n   aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n  return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  if (mX1 === mY1 && mX2 === mY2) {\n    return LinearEasing;\n  }\n\n  // Precompute samples table\n  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n  for (var i = 0; i < kSplineTableSize; ++i) {\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n  }\n\n  function getTForX (aX) {\n    var intervalStart = 0.0;\n    var currentSample = 1;\n    var lastSample = kSplineTableSize - 1;\n\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    var guessForT = intervalStart + dist * kSampleStepSize;\n\n    var initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  return function BezierEasing (x) {\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n};\n","/*!\n  * chartjs-adapter-moment v1.0.1\n  * https://www.chartjs.org\n  * (c) 2022 chartjs-adapter-moment Contributors\n  * Released under the MIT license\n  */\nimport moment from 'moment';\nimport { _adapters } from 'chart.js';\n\nconst FORMATS = {\n  datetime: 'MMM D, YYYY, h:mm:ss a',\n  millisecond: 'h:mm:ss.SSS a',\n  second: 'h:mm:ss a',\n  minute: 'h:mm a',\n  hour: 'hA',\n  day: 'MMM D',\n  week: 'll',\n  month: 'MMM YYYY',\n  quarter: '[Q]Q - YYYY',\n  year: 'YYYY'\n};\n\n_adapters._date.override(typeof moment === 'function' ? {\n  _id: 'moment', // DEBUG ONLY\n\n  formats: function() {\n    return FORMATS;\n  },\n\n  parse: function(value, format) {\n    if (typeof value === 'string' && typeof format === 'string') {\n      value = moment(value, format);\n    } else if (!(value instanceof moment)) {\n      value = moment(value);\n    }\n    return value.isValid() ? value.valueOf() : null;\n  },\n\n  format: function(time, format) {\n    return moment(time).format(format);\n  },\n\n  add: function(time, amount, unit) {\n    return moment(time).add(amount, unit).valueOf();\n  },\n\n  diff: function(max, min, unit) {\n    return moment(max).diff(moment(min), unit);\n  },\n\n  startOf: function(time, unit, weekday) {\n    time = moment(time);\n    if (unit === 'isoWeek') {\n      weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));\n      return time.isoWeekday(weekday).startOf('day').valueOf();\n    }\n    return time.startOf(unit).valueOf();\n  },\n\n  endOf: function(time, unit) {\n    return moment(time).endOf(unit).valueOf();\n  }\n} : {});\n","/*!\n* chartjs-plugin-annotation v2.2.1\n* https://www.chartjs.org/chartjs-plugin-annotation/index\n * (c) 2023 chartjs-plugin-annotation Contributors\n * Released under the MIT License\n */\nimport { Element, defaults, Animations, Chart } from 'chart.js';\nimport { distanceBetweenPoints, isObject, valueOrDefault, defined, callback, isFunction, toRadians, isArray, toFont, addRoundedRectPath, toTRBLCorners, QUARTER_PI, PI, HALF_PI, TWO_THIRDS_PI, TAU, isNumber, RAD_PER_DEG, toPadding, isFinite, toDegrees, clipArea, unclipArea } from 'chart.js/helpers';\n\n/**\n * @typedef { import(\"chart.js\").ChartEvent } ChartEvent\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n */\n\nconst interaction = {\n  modes: {\n    /**\n     * Point mode returns all elements that hit test based on the event position\n     * @param {Object} state - the state of the plugin\n     * @param {ChartEvent} event - the event we are find things at\n     * @return {AnnotationElement[]} - elements that are found\n     */\n    point(state, event) {\n      return filterElements(state, event, {intersect: true});\n    },\n\n    /**\n     * Nearest mode returns the element closest to the event position\n     * @param {Object} state - the state of the plugin\n     * @param {ChartEvent} event - the event we are find things at\n     * @param {Object} options - interaction options to use\n     * @return {AnnotationElement[]} - elements that are found (only 1 element)\n     */\n    nearest(state, event, options) {\n      return getNearestItem(state, event, options);\n    },\n    /**\n     * x mode returns the elements that hit-test at the current x coordinate\n     * @param {Object} state - the state of the plugin\n     * @param {ChartEvent} event - the event we are find things at\n     * @param {Object} options - interaction options to use\n     * @return {AnnotationElement[]} - elements that are found\n     */\n    x(state, event, options) {\n      return filterElements(state, event, {intersect: options.intersect, axis: 'x'});\n    },\n\n    /**\n     * y mode returns the elements that hit-test at the current y coordinate\n     * @param {Object} state - the state of the plugin\n     * @param {ChartEvent} event - the event we are find things at\n     * @param {Object} options - interaction options to use\n     * @return {AnnotationElement[]} - elements that are found\n     */\n    y(state, event, options) {\n      return filterElements(state, event, {intersect: options.intersect, axis: 'y'});\n    }\n  }\n};\n\n/**\n * Returns all elements that hit test based on the event position\n * @param {Object} state - the state of the plugin\n * @param {ChartEvent} event - the event we are find things at\n * @param {Object} options - interaction options to use\n * @return {AnnotationElement[]} - elements that are found\n */\nfunction getElements(state, event, options) {\n  const mode = interaction.modes[options.mode] || interaction.modes.nearest;\n  return mode(state, event, options);\n}\n\nfunction inRangeByAxis(element, event, axis) {\n  if (axis !== 'x' && axis !== 'y') {\n    return element.inRange(event.x, event.y, 'x', true) || element.inRange(event.x, event.y, 'y', true);\n  }\n  return element.inRange(event.x, event.y, axis, true);\n}\n\nfunction getPointByAxis(event, center, axis) {\n  if (axis === 'x') {\n    return {x: event.x, y: center.y};\n  } else if (axis === 'y') {\n    return {x: center.x, y: event.y};\n  }\n  return center;\n}\n\nfunction filterElements(state, event, options) {\n  return state.visibleElements.filter((element) => options.intersect ? element.inRange(event.x, event.y) : inRangeByAxis(element, event, options.axis));\n}\n\nfunction getNearestItem(state, event, options) {\n  let minDistance = Number.POSITIVE_INFINITY;\n\n  return filterElements(state, event, options)\n    .reduce((nearestItems, element) => {\n      const center = element.getCenterPoint();\n      const evenPoint = getPointByAxis(event, center, options.axis);\n      const distance = distanceBetweenPoints(event, evenPoint);\n      if (distance < minDistance) {\n        nearestItems = [element];\n        minDistance = distance;\n      } else if (distance === minDistance) {\n        // Can have multiple items at the same distance in which case we sort by size\n        nearestItems.push(element);\n      }\n\n      return nearestItems;\n    }, [])\n    .sort((a, b) => a._index - b._index)\n    .slice(0, 1); // return only the top item;\n}\n\nconst isOlderPart = (act, req) => req > act || (act.length > req.length && act.slice(0, req.length) === req);\n\n/**\n * @typedef { import('chart.js').Point } Point\n * @typedef { import('chart.js').InteractionAxis } InteractionAxis\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n */\n\nconst EPSILON = 0.001;\nconst clamp = (x, from, to) => Math.min(to, Math.max(from, x));\n\n/**\n * @param {Object} obj\n * @param {number} from\n * @param {number} to\n * @returns {Object}\n */\nfunction clampAll(obj, from, to) {\n  for (const key of Object.keys(obj)) {\n    obj[key] = clamp(obj[key], from, to);\n  }\n  return obj;\n}\n\n/**\n * @param {Point} point\n * @param {Point} center\n * @param {number} radius\n * @param {number} borderWidth\n * @returns {boolean}\n */\nfunction inPointRange(point, center, radius, borderWidth) {\n  if (!point || !center || radius <= 0) {\n    return false;\n  }\n  const hBorderWidth = borderWidth / 2;\n  return (Math.pow(point.x - center.x, 2) + Math.pow(point.y - center.y, 2)) <= Math.pow(radius + hBorderWidth, 2);\n}\n\n/**\n * @param {Point} point\n * @param {{x: number, y: number, x2: number, y2: number}} rect\n * @param {InteractionAxis} axis\n * @param {number} borderWidth\n * @returns {boolean}\n */\nfunction inBoxRange(point, {x, y, x2, y2}, axis, borderWidth) {\n  const hBorderWidth = borderWidth / 2;\n  const inRangeX = point.x >= x - hBorderWidth - EPSILON && point.x <= x2 + hBorderWidth + EPSILON;\n  const inRangeY = point.y >= y - hBorderWidth - EPSILON && point.y <= y2 + hBorderWidth + EPSILON;\n  if (axis === 'x') {\n    return inRangeX;\n  } else if (axis === 'y') {\n    return inRangeY;\n  }\n  return inRangeX && inRangeY;\n}\n\n/**\n * @param {AnnotationElement} element\n * @param {boolean} useFinalPosition\n * @returns {Point}\n */\nfunction getElementCenterPoint(element, useFinalPosition) {\n  const {centerX, centerY} = element.getProps(['centerX', 'centerY'], useFinalPosition);\n  return {x: centerX, y: centerY};\n}\n\n/**\n * @param {string} pkg\n * @param {string} min\n * @param {string} ver\n * @param {boolean} [strict=true]\n * @returns {boolean}\n */\nfunction requireVersion(pkg, min, ver, strict = true) {\n  const parts = ver.split('.');\n  let i = 0;\n  for (const req of min.split('.')) {\n    const act = parts[i++];\n    if (parseInt(req, 10) < parseInt(act, 10)) {\n      break;\n    }\n    if (isOlderPart(act, req)) {\n      if (strict) {\n        throw new Error(`${pkg} v${ver} is not supported. v${min} or newer is required.`);\n      } else {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nconst isPercentString = (s) => typeof s === 'string' && s.endsWith('%');\nconst toPercent = (s) => parseFloat(s) / 100;\nconst toPositivePercent = (s) => clamp(toPercent(s), 0, 1);\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import('../../types/element').AnnotationBoxModel } AnnotationBoxModel\n * @typedef { import('../../types/options').AnnotationPointCoordinates } AnnotationPointCoordinates\n * @typedef { import('../../types/label').CoreLabelOptions } CoreLabelOptions\n * @typedef { import('../../types/label').LabelPositionObject } LabelPositionObject\n */\n\n/**\n * @param {number} size\n * @param {number|string} position\n * @returns {number}\n */\nfunction getRelativePosition(size, position) {\n  if (position === 'start') {\n    return 0;\n  }\n  if (position === 'end') {\n    return size;\n  }\n  if (isPercentString(position)) {\n    return toPositivePercent(position) * size;\n  }\n  return size / 2;\n}\n\n/**\n * @param {number} size\n * @param {number|string} value\n * @param {boolean} [positivePercent=true]\n * @returns {number}\n */\nfunction getSize(size, value, positivePercent = true) {\n  if (typeof value === 'number') {\n    return value;\n  } else if (isPercentString(value)) {\n    return (positivePercent ? toPositivePercent(value) : toPercent(value)) * size;\n  }\n  return size;\n}\n\n/**\n * @param {{x: number, width: number}} size\n * @param {CoreLabelOptions} options\n * @returns {number}\n */\nfunction calculateTextAlignment(size, options) {\n  const {x, width} = size;\n  const textAlign = options.textAlign;\n  if (textAlign === 'center') {\n    return x + width / 2;\n  } else if (textAlign === 'end' || textAlign === 'right') {\n    return x + width;\n  }\n  return x;\n}\n\n/**\n * @param {{x: number|string, y: number|string}|string|number} value\n * @param {string|number} defaultValue\n * @returns {{x: number|string, y: number|string}}\n */\nfunction toPosition(value, defaultValue = 'center') {\n  if (isObject(value)) {\n    return {\n      x: valueOrDefault(value.x, defaultValue),\n      y: valueOrDefault(value.y, defaultValue),\n    };\n  }\n  value = valueOrDefault(value, defaultValue);\n  return {\n    x: value,\n    y: value\n  };\n}\n\n/**\n * @param {AnnotationPointCoordinates} options\n * @returns {boolean}\n */\nfunction isBoundToPoint(options) {\n  return options && (defined(options.xValue) || defined(options.yValue));\n}\n\n/**\n * @param {Chart} chart\n * @param {AnnotationBoxModel} properties\n * @param {CoreAnnotationOptions} options\n * @param {boolean} [centerBased=false]\n * @returns {AnnotationBoxModel}\n */\nfunction initAnimationProperties(chart, properties, options, centerBased = false) {\n  const initAnim = options.init;\n  if (!initAnim) {\n    return;\n  } else if (initAnim === true) {\n    return applyDefault(properties, centerBased);\n  }\n  return checkCallbackResult(properties, centerBased, callback(initAnim, [{chart, properties, options}]));\n}\n\n/**\n * @param {Object} options\n * @param {Array} hooks\n * @param {Object} hooksContainer\n * @returns {boolean}\n */\nfunction loadHooks(options, hooks, hooksContainer) {\n  let activated = false;\n  hooks.forEach(hook => {\n    if (isFunction(options[hook])) {\n      activated = true;\n      hooksContainer[hook] = options[hook];\n    } else if (defined(hooksContainer[hook])) {\n      delete hooksContainer[hook];\n    }\n  });\n  return activated;\n}\n\nfunction applyDefault({centerX, centerY}, centerBased) {\n  if (centerBased) {\n    return {centerX, centerY, radius: 0, width: 0, height: 0};\n  }\n  return {x: centerX, y: centerY, x2: centerX, y2: centerY, width: 0, height: 0};\n}\n\nfunction checkCallbackResult(properties, centerBased, result) {\n  if (result === true) {\n    return applyDefault(properties, centerBased);\n  } else if (isObject(result)) {\n    return result;\n  }\n}\n\nconst widthCache = new Map();\nconst notRadius = (radius) => isNaN(radius) || radius <= 0;\nconst fontsKey = (fonts) => fonts.reduce(function(prev, item) {\n  prev += item.string;\n  return prev;\n}, '');\n\n/**\n * @typedef { import('chart.js').Point } Point\n * @typedef { import('../../types/label').CoreLabelOptions } CoreLabelOptions\n * @typedef { import('../../types/options').PointAnnotationOptions } PointAnnotationOptions\n */\n\n/**\n * Determine if content is an image or a canvas.\n * @param {*} content\n * @returns boolean|undefined\n * @todo move this function to chart.js helpers\n */\nfunction isImageOrCanvas(content) {\n  if (content && typeof content === 'object') {\n    const type = content.toString();\n    return (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]');\n  }\n}\n\n/**\n * Set the translation on the canvas if the rotation must be applied.\n * @param {CanvasRenderingContext2D} ctx - chart canvas context\n * @param {Point} point - the point of translation\n * @param {number} rotation - rotation (in degrees) to apply\n */\nfunction translate(ctx, {x, y}, rotation) {\n  if (rotation) {\n    ctx.translate(x, y);\n    ctx.rotate(toRadians(rotation));\n    ctx.translate(-x, -y);\n  }\n}\n\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {Object} options\n * @returns {boolean|undefined}\n */\nfunction setBorderStyle(ctx, options) {\n  if (options && options.borderWidth) {\n    ctx.lineCap = options.borderCapStyle;\n    ctx.setLineDash(options.borderDash);\n    ctx.lineDashOffset = options.borderDashOffset;\n    ctx.lineJoin = options.borderJoinStyle;\n    ctx.lineWidth = options.borderWidth;\n    ctx.strokeStyle = options.borderColor;\n    return true;\n  }\n}\n\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {Object} options\n */\nfunction setShadowStyle(ctx, options) {\n  ctx.shadowColor = options.backgroundShadowColor;\n  ctx.shadowBlur = options.shadowBlur;\n  ctx.shadowOffsetX = options.shadowOffsetX;\n  ctx.shadowOffsetY = options.shadowOffsetY;\n}\n\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {CoreLabelOptions} options\n * @returns {{width: number, height: number}}\n */\nfunction measureLabelSize(ctx, options) {\n  const content = options.content;\n  if (isImageOrCanvas(content)) {\n    return {\n      width: getSize(content.width, options.width),\n      height: getSize(content.height, options.height)\n    };\n  }\n  const optFont = options.font;\n  const fonts = isArray(optFont) ? optFont.map(f => toFont(f)) : [toFont(optFont)];\n  const strokeWidth = options.textStrokeWidth;\n  const lines = isArray(content) ? content : [content];\n  const mapKey = lines.join() + fontsKey(fonts) + strokeWidth + (ctx._measureText ? '-spriting' : '');\n  if (!widthCache.has(mapKey)) {\n    widthCache.set(mapKey, calculateLabelSize(ctx, lines, fonts, strokeWidth));\n  }\n  return widthCache.get(mapKey);\n}\n\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {{x: number, y: number, width: number, height: number}} rect\n * @param {Object} options\n */\nfunction drawBox(ctx, rect, options) {\n  const {x, y, width, height} = rect;\n  ctx.save();\n  setShadowStyle(ctx, options);\n  const stroke = setBorderStyle(ctx, options);\n  ctx.fillStyle = options.backgroundColor;\n  ctx.beginPath();\n  addRoundedRectPath(ctx, {\n    x, y, w: width, h: height,\n    radius: clampAll(toTRBLCorners(options.borderRadius), 0, Math.min(width, height) / 2)\n  });\n  ctx.closePath();\n  ctx.fill();\n  if (stroke) {\n    ctx.shadowColor = options.borderShadowColor;\n    ctx.stroke();\n  }\n  ctx.restore();\n}\n\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {{x: number, y: number, width: number, height: number}} rect\n * @param {CoreLabelOptions} options\n */\nfunction drawLabel(ctx, rect, options) {\n  const content = options.content;\n  if (isImageOrCanvas(content)) {\n    ctx.save();\n    ctx.globalAlpha = getOpacity(options.opacity, content.style.opacity);\n    ctx.drawImage(content, rect.x, rect.y, rect.width, rect.height);\n    ctx.restore();\n    return;\n  }\n  const labels = isArray(content) ? content : [content];\n  const optFont = options.font;\n  const fonts = isArray(optFont) ? optFont.map(f => toFont(f)) : [toFont(optFont)];\n  const optColor = options.color;\n  const colors = isArray(optColor) ? optColor : [optColor];\n  const x = calculateTextAlignment(rect, options);\n  const y = rect.y + options.textStrokeWidth / 2;\n  ctx.save();\n  ctx.textBaseline = 'middle';\n  ctx.textAlign = options.textAlign;\n  if (setTextStrokeStyle(ctx, options)) {\n    applyLabelDecoration(ctx, {x, y}, labels, fonts);\n  }\n  applyLabelContent(ctx, {x, y}, labels, {fonts, colors});\n  ctx.restore();\n}\n\nfunction setTextStrokeStyle(ctx, options) {\n  if (options.textStrokeWidth > 0) {\n    // https://stackoverflow.com/questions/13627111/drawing-text-with-an-outer-stroke-with-html5s-canvas\n    ctx.lineJoin = 'round';\n    ctx.miterLimit = 2;\n    ctx.lineWidth = options.textStrokeWidth;\n    ctx.strokeStyle = options.textStrokeColor;\n    return true;\n  }\n}\n\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {{radius: number, options: PointAnnotationOptions}} element\n * @param {number} x\n * @param {number} y\n */\nfunction drawPoint(ctx, element, x, y) {\n  const {radius, options} = element;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n\n  if (isImageOrCanvas(style)) {\n    ctx.save();\n    ctx.translate(x, y);\n    ctx.rotate(rad);\n    ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n    ctx.restore();\n    return;\n  }\n  if (notRadius(radius)) {\n    return;\n  }\n  drawPointStyle(ctx, {x, y, radius, rotation, style, rad});\n}\n\nfunction drawPointStyle(ctx, {x, y, radius, rotation, style, rad}) {\n  let xOffset, yOffset, size, cornerRadius;\n  ctx.beginPath();\n\n  switch (style) {\n  // Default includes circle\n  default:\n    ctx.arc(x, y, radius, 0, TAU);\n    ctx.closePath();\n    break;\n  case 'triangle':\n    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    // NOTE: the rounded rect implementation changed to use `arc` instead of\n    // `quadraticCurveTo` since it generates better results when rect is\n    // almost a circle. 0.516 (instead of 0.5) produces results with visually\n    // closer proportion to the previous impl and it is inscribed in the\n    // circle with `radius`. For more details, see the following PRs:\n    // https://github.com/chartjs/Chart.js/issues/5597\n    // https://github.com/chartjs/Chart.js/issues/5858\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n    ctx.closePath();\n    break;\n  case 'rect':\n    if (!rotation) {\n      size = Math.SQRT1_2 * radius;\n      ctx.rect(x - size, y - size, 2 * size, 2 * size);\n      break;\n    }\n    rad += QUARTER_PI;\n    /* falls through */\n  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n    /* falls through */\n  case 'cross':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'line':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    break;\n  case 'dash':\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n\n  ctx.fill();\n}\n\nfunction calculateLabelSize(ctx, lines, fonts, strokeWidth) {\n  ctx.save();\n  const count = lines.length;\n  let width = 0;\n  let height = strokeWidth;\n  for (let i = 0; i < count; i++) {\n    const font = fonts[Math.min(i, fonts.length - 1)];\n    ctx.font = font.string;\n    const text = lines[i];\n    width = Math.max(width, ctx.measureText(text).width + strokeWidth);\n    height += font.lineHeight;\n  }\n  ctx.restore();\n  return {width, height};\n}\n\nfunction applyLabelDecoration(ctx, {x, y}, labels, fonts) {\n  ctx.beginPath();\n  let lhs = 0;\n  labels.forEach(function(l, i) {\n    const f = fonts[Math.min(i, fonts.length - 1)];\n    const lh = f.lineHeight;\n    ctx.font = f.string;\n    ctx.strokeText(l, x, y + lh / 2 + lhs);\n    lhs += lh;\n  });\n  ctx.stroke();\n}\n\nfunction applyLabelContent(ctx, {x, y}, labels, {fonts, colors}) {\n  let lhs = 0;\n  labels.forEach(function(l, i) {\n    const c = colors[Math.min(i, colors.length - 1)];\n    const f = fonts[Math.min(i, fonts.length - 1)];\n    const lh = f.lineHeight;\n    ctx.beginPath();\n    ctx.font = f.string;\n    ctx.fillStyle = c;\n    ctx.fillText(l, x, y + lh / 2 + lhs);\n    lhs += lh;\n    ctx.fill();\n  });\n}\n\nfunction getOpacity(value, elementValue) {\n  const opacity = isNumber(value) ? value : elementValue;\n  return isNumber(opacity) ? clamp(opacity, 0, 1) : 1;\n}\n\nconst limitedLineScale = {\n  xScaleID: {min: 'xMin', max: 'xMax', start: 'left', end: 'right', startProp: 'x', endProp: 'x2'},\n  yScaleID: {min: 'yMin', max: 'yMax', start: 'bottom', end: 'top', startProp: 'y', endProp: 'y2'}\n};\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").Scale } Scale\n * @typedef { import(\"chart.js\").Point } Point\n * @typedef { import('../../types/element').AnnotationBoxModel } AnnotationBoxModel\n * @typedef { import('../../types/options').CoreAnnotationOptions } CoreAnnotationOptions\n * @typedef { import('../../types/options').LineAnnotationOptions } LineAnnotationOptions\n * @typedef { import('../../types/options').PointAnnotationOptions } PointAnnotationOptions\n * @typedef { import('../../types/options').PolygonAnnotationOptions } PolygonAnnotationOptions\n */\n\n/**\n * @param {Scale} scale\n * @param {number|string} value\n * @param {number} fallback\n * @returns {number}\n */\nfunction scaleValue(scale, value, fallback) {\n  value = typeof value === 'number' ? value : scale.parse(value);\n  return isFinite(value) ? scale.getPixelForValue(value) : fallback;\n}\n\n/**\n * Search the scale defined in chartjs by the axis related to the annotation options key.\n * @param {{ [key: string]: Scale }} scales\n * @param {CoreAnnotationOptions} options\n * @param {string} key\n * @returns {string}\n */\nfunction retrieveScaleID(scales, options, key) {\n  const scaleID = options[key];\n  if (scaleID || key === 'scaleID') {\n    return scaleID;\n  }\n  const axis = key.charAt(0);\n  const axes = Object.values(scales).filter((scale) => scale.axis && scale.axis === axis);\n  if (axes.length) {\n    return axes[0].id;\n  }\n  return axis;\n}\n\n/**\n * @param {Scale} scale\n * @param {{min: number, max: number, start: number, end: number}} options\n * @returns {{start: number, end: number}|undefined}\n */\nfunction getDimensionByScale(scale, options) {\n  if (scale) {\n    const reverse = scale.options.reverse;\n    const start = scaleValue(scale, options.min, reverse ? options.end : options.start);\n    const end = scaleValue(scale, options.max, reverse ? options.start : options.end);\n    return {\n      start,\n      end\n    };\n  }\n}\n\n/**\n * @param {Chart} chart\n * @param {CoreAnnotationOptions} options\n * @returns {Point}\n */\nfunction getChartPoint(chart, options) {\n  const {chartArea, scales} = chart;\n  const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')];\n  const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')];\n  let x = chartArea.width / 2;\n  let y = chartArea.height / 2;\n\n  if (xScale) {\n    x = scaleValue(xScale, options.xValue, xScale.left + xScale.width / 2);\n  }\n\n  if (yScale) {\n    y = scaleValue(yScale, options.yValue, yScale.top + yScale.height / 2);\n  }\n  return {x, y};\n}\n\n/**\n * @param {Chart} chart\n * @param {CoreAnnotationOptions} options\n * @returns {AnnotationBoxModel}\n */\nfunction resolveBoxProperties(chart, options) {\n  const scales = chart.scales;\n  const xScale = scales[retrieveScaleID(scales, options, 'xScaleID')];\n  const yScale = scales[retrieveScaleID(scales, options, 'yScaleID')];\n\n  if (!xScale && !yScale) {\n    return {};\n  }\n\n  let {left: x, right: x2} = xScale || chart.chartArea;\n  let {top: y, bottom: y2} = yScale || chart.chartArea;\n  const xDim = getChartDimensionByScale(xScale, {min: options.xMin, max: options.xMax, start: x, end: x2});\n  x = xDim.start;\n  x2 = xDim.end;\n  const yDim = getChartDimensionByScale(yScale, {min: options.yMin, max: options.yMax, start: y2, end: y});\n  y = yDim.start;\n  y2 = yDim.end;\n\n  return {\n    x,\n    y,\n    x2,\n    y2,\n    width: x2 - x,\n    height: y2 - y,\n    centerX: x + (x2 - x) / 2,\n    centerY: y + (y2 - y) / 2\n  };\n}\n\n/**\n * @param {Chart} chart\n * @param {PointAnnotationOptions|PolygonAnnotationOptions} options\n * @returns {AnnotationBoxModel}\n */\nfunction resolvePointProperties(chart, options) {\n  if (!isBoundToPoint(options)) {\n    const box = resolveBoxProperties(chart, options);\n    let radius = options.radius;\n    if (!radius || isNaN(radius)) {\n      radius = Math.min(box.width, box.height) / 2;\n      options.radius = radius;\n    }\n    const size = radius * 2;\n    const adjustCenterX = box.centerX + options.xAdjust;\n    const adjustCenterY = box.centerY + options.yAdjust;\n    return {\n      x: adjustCenterX - radius,\n      y: adjustCenterY - radius,\n      x2: adjustCenterX + radius,\n      y2: adjustCenterY + radius,\n      centerX: adjustCenterX,\n      centerY: adjustCenterY,\n      width: size,\n      height: size,\n      radius\n    };\n  }\n  return getChartCircle(chart, options);\n}\n/**\n * @param {Chart} chart\n * @param {LineAnnotationOptions} options\n * @returns {AnnotationBoxModel}\n */\nfunction resolveLineProperties(chart, options) {\n  const {scales, chartArea} = chart;\n  const scale = scales[options.scaleID];\n  const area = {x: chartArea.left, y: chartArea.top, x2: chartArea.right, y2: chartArea.bottom};\n\n  if (scale) {\n    resolveFullLineProperties(scale, area, options);\n  } else {\n    resolveLimitedLineProperties(scales, area, options);\n  }\n  return area;\n}\n\n/**\n * @param {Chart} chart\n * @param {CoreAnnotationOptions} options\n * @param {boolean} [centerBased=false]\n * @returns {AnnotationBoxModel}\n */\nfunction resolveBoxAndLabelProperties(chart, options, centerBased) {\n  const properties = resolveBoxProperties(chart, options);\n  properties.initProperties = initAnimationProperties(chart, properties, options, centerBased);\n  properties.elements = [{\n    type: 'label',\n    optionScope: 'label',\n    properties: resolveLabelElementProperties$1(chart, properties, options),\n    initProperties: properties.initProperties\n  }];\n  return properties;\n}\n\nfunction getChartCircle(chart, options) {\n  const point = getChartPoint(chart, options);\n  const size = options.radius * 2;\n  return {\n    x: point.x - options.radius + options.xAdjust,\n    y: point.y - options.radius + options.yAdjust,\n    x2: point.x + options.radius + options.xAdjust,\n    y2: point.y + options.radius + options.yAdjust,\n    centerX: point.x + options.xAdjust,\n    centerY: point.y + options.yAdjust,\n    radius: options.radius,\n    width: size,\n    height: size\n  };\n}\n\nfunction getChartDimensionByScale(scale, options) {\n  const result = getDimensionByScale(scale, options) || options;\n  return {\n    start: Math.min(result.start, result.end),\n    end: Math.max(result.start, result.end)\n  };\n}\n\nfunction resolveFullLineProperties(scale, area, options) {\n  const min = scaleValue(scale, options.value, NaN);\n  const max = scaleValue(scale, options.endValue, min);\n  if (scale.isHorizontal()) {\n    area.x = min;\n    area.x2 = max;\n  } else {\n    area.y = min;\n    area.y2 = max;\n  }\n}\n\nfunction resolveLimitedLineProperties(scales, area, options) {\n  for (const scaleId of Object.keys(limitedLineScale)) {\n    const scale = scales[retrieveScaleID(scales, options, scaleId)];\n    if (scale) {\n      const {min, max, start, end, startProp, endProp} = limitedLineScale[scaleId];\n      const dim = getDimensionByScale(scale, {min: options[min], max: options[max], start: scale[start], end: scale[end]});\n      area[startProp] = dim.start;\n      area[endProp] = dim.end;\n    }\n  }\n}\n\nfunction calculateX({properties, options}, labelSize, position, padding) {\n  const {x: start, x2: end, width: size} = properties;\n  return calculatePosition$1({start, end, size, borderWidth: options.borderWidth}, {\n    position: position.x,\n    padding: {start: padding.left, end: padding.right},\n    adjust: options.label.xAdjust,\n    size: labelSize.width\n  });\n}\n\nfunction calculateY({properties, options}, labelSize, position, padding) {\n  const {y: start, y2: end, height: size} = properties;\n  return calculatePosition$1({start, end, size, borderWidth: options.borderWidth}, {\n    position: position.y,\n    padding: {start: padding.top, end: padding.bottom},\n    adjust: options.label.yAdjust,\n    size: labelSize.height\n  });\n}\n\nfunction calculatePosition$1(boxOpts, labelOpts) {\n  const {start, end, borderWidth} = boxOpts;\n  const {position, padding: {start: padStart, end: padEnd}, adjust} = labelOpts;\n  const availableSize = end - borderWidth - start - padStart - padEnd - labelOpts.size;\n  return start + borderWidth / 2 + adjust + getRelativePosition(availableSize, position);\n}\n\nfunction resolveLabelElementProperties$1(chart, properties, options) {\n  const label = options.label;\n  label.backgroundColor = 'transparent';\n  label.callout.display = false;\n  const position = toPosition(label.position);\n  const padding = toPadding(label.padding);\n  const labelSize = measureLabelSize(chart.ctx, label);\n  const x = calculateX({properties, options}, labelSize, position, padding);\n  const y = calculateY({properties, options}, labelSize, position, padding);\n  const width = labelSize.width + padding.width;\n  const height = labelSize.height + padding.height;\n  return {\n    x,\n    y,\n    x2: x + width,\n    y2: y + height,\n    width,\n    height,\n    centerX: x + width / 2,\n    centerY: y + height / 2,\n    rotation: label.rotation\n  };\n\n}\n\n/**\n * @typedef {import('chart.js').Point} Point\n */\n\n/**\n * Rotate a `point` relative to `center` point by `angle`\n * @param {Point} point - the point to rotate\n * @param {Point} center - center point for rotation\n * @param {number} angle - angle for rotation, in radians\n * @returns {Point} rotated point\n */\nfunction rotated(point, center, angle) {\n  const cos = Math.cos(angle);\n  const sin = Math.sin(angle);\n  const cx = center.x;\n  const cy = center.y;\n\n  return {\n    x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n    y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n  };\n}\n\nconst moveHooks = ['enter', 'leave'];\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import('../../types/options').AnnotationPluginOptions } AnnotationPluginOptions\n */\n\nconst eventHooks = moveHooks.concat('click');\n\n/**\n * @param {Chart} chart\n * @param {Object} state\n * @param {AnnotationPluginOptions} options\n */\nfunction updateListeners(chart, state, options) {\n  state.listened = loadHooks(options, eventHooks, state.listeners);\n  state.moveListened = false;\n  state._getElements = getElements; // for testing\n\n  moveHooks.forEach(hook => {\n    if (isFunction(options[hook])) {\n      state.moveListened = true;\n    }\n  });\n\n  if (!state.listened || !state.moveListened) {\n    state.annotations.forEach(scope => {\n      if (!state.listened && isFunction(scope.click)) {\n        state.listened = true;\n      }\n      if (!state.moveListened) {\n        moveHooks.forEach(hook => {\n          if (isFunction(scope[hook])) {\n            state.listened = true;\n            state.moveListened = true;\n          }\n        });\n      }\n    });\n  }\n}\n\n/**\n * @param {Object} state\n * @param {ChartEvent} event\n * @param {AnnotationPluginOptions} options\n * @return {boolean|undefined}\n */\nfunction handleEvent(state, event, options) {\n  if (state.listened) {\n    switch (event.type) {\n    case 'mousemove':\n    case 'mouseout':\n      return handleMoveEvents(state, event, options);\n    case 'click':\n      return handleClickEvents(state, event, options);\n    }\n  }\n}\n\nfunction handleMoveEvents(state, event, options) {\n  if (!state.moveListened) {\n    return;\n  }\n\n  let elements;\n\n  if (event.type === 'mousemove') {\n    elements = getElements(state, event, options.interaction);\n  } else {\n    elements = [];\n  }\n\n  const previous = state.hovered;\n  state.hovered = elements;\n\n  const context = {state, event};\n  let changed = dispatchMoveEvents(context, 'leave', previous, elements);\n  return dispatchMoveEvents(context, 'enter', elements, previous) || changed;\n}\n\nfunction dispatchMoveEvents({state, event}, hook, elements, checkElements) {\n  let changed;\n  for (const element of elements) {\n    if (checkElements.indexOf(element) < 0) {\n      changed = dispatchEvent(element.options[hook] || state.listeners[hook], element, event) || changed;\n    }\n  }\n  return changed;\n}\n\nfunction handleClickEvents(state, event, options) {\n  const listeners = state.listeners;\n  const elements = getElements(state, event, options.interaction);\n  let changed;\n  for (const element of elements) {\n    changed = dispatchEvent(element.options.click || listeners.click, element, event) || changed;\n  }\n  return changed;\n}\n\nfunction dispatchEvent(handler, element, event) {\n  return callback(handler, [element.$context, event]) === true;\n}\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import('../../types/options').AnnotationPluginOptions } AnnotationPluginOptions\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n */\n\nconst elementHooks = ['afterDraw', 'beforeDraw'];\n\n/**\n * @param {Chart} chart\n * @param {Object} state\n * @param {AnnotationPluginOptions} options\n */\nfunction updateHooks(chart, state, options) {\n  const visibleElements = state.visibleElements;\n  state.hooked = loadHooks(options, elementHooks, state.hooks);\n\n  if (!state.hooked) {\n    visibleElements.forEach(scope => {\n      if (!state.hooked) {\n        elementHooks.forEach(hook => {\n          if (isFunction(scope.options[hook])) {\n            state.hooked = true;\n          }\n        });\n      }\n    });\n  }\n}\n\n/**\n * @param {Object} state\n * @param {AnnotationElement} element\n * @param {string} hook\n */\nfunction invokeHook(state, element, hook) {\n  if (state.hooked) {\n    const callbackHook = element.options[hook] || state.hooks[hook];\n    return callback(callbackHook, [element.$context]);\n  }\n}\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").Scale } Scale\n * @typedef { import('../../types/options').CoreAnnotationOptions } CoreAnnotationOptions\n */\n\n/**\n * @param {Chart} chart\n * @param {Scale} scale\n * @param {CoreAnnotationOptions[]} annotations\n */\nfunction adjustScaleRange(chart, scale, annotations) {\n  const range = getScaleLimits(chart.scales, scale, annotations);\n  let changed = changeScaleLimit(scale, range, 'min', 'suggestedMin');\n  changed = changeScaleLimit(scale, range, 'max', 'suggestedMax') || changed;\n  if (changed && isFunction(scale.handleTickRangeOptions)) {\n    scale.handleTickRangeOptions();\n  }\n}\n\n/**\n * @param {CoreAnnotationOptions[]} annotations\n * @param {{ [key: string]: Scale }} scales\n */\nfunction verifyScaleOptions(annotations, scales) {\n  for (const annotation of annotations) {\n    verifyScaleIDs(annotation, scales);\n  }\n}\n\nfunction changeScaleLimit(scale, range, limit, suggestedLimit) {\n  if (isFinite(range[limit]) && !scaleLimitDefined(scale.options, limit, suggestedLimit)) {\n    const changed = scale[limit] !== range[limit];\n    scale[limit] = range[limit];\n    return changed;\n  }\n}\n\nfunction scaleLimitDefined(scaleOptions, limit, suggestedLimit) {\n  return defined(scaleOptions[limit]) || defined(scaleOptions[suggestedLimit]);\n}\n\nfunction verifyScaleIDs(annotation, scales) {\n  for (const key of ['scaleID', 'xScaleID', 'yScaleID']) {\n    const scaleID = retrieveScaleID(scales, annotation, key);\n    if (scaleID && !scales[scaleID] && verifyProperties(annotation, key)) {\n      console.warn(`No scale found with id '${scaleID}' for annotation '${annotation.id}'`);\n    }\n  }\n}\n\nfunction verifyProperties(annotation, key) {\n  if (key === 'scaleID') {\n    return true;\n  }\n  const axis = key.charAt(0);\n  for (const prop of ['Min', 'Max', 'Value']) {\n    if (defined(annotation[axis + prop])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction getScaleLimits(scales, scale, annotations) {\n  const axis = scale.axis;\n  const scaleID = scale.id;\n  const scaleIDOption = axis + 'ScaleID';\n  const limits = {\n    min: valueOrDefault(scale.min, Number.NEGATIVE_INFINITY),\n    max: valueOrDefault(scale.max, Number.POSITIVE_INFINITY)\n  };\n  for (const annotation of annotations) {\n    if (annotation.scaleID === scaleID) {\n      updateLimits(annotation, scale, ['value', 'endValue'], limits);\n    } else if (retrieveScaleID(scales, annotation, scaleIDOption) === scaleID) {\n      updateLimits(annotation, scale, [axis + 'Min', axis + 'Max', axis + 'Value'], limits);\n    }\n  }\n  return limits;\n}\n\nfunction updateLimits(annotation, scale, props, limits) {\n  for (const prop of props) {\n    const raw = annotation[prop];\n    if (defined(raw)) {\n      const value = scale.parse(raw);\n      limits.min = Math.min(limits.min, value);\n      limits.max = Math.max(limits.max, value);\n    }\n  }\n}\n\nclass BoxAnnotation extends Element {\n\n  inRange(mouseX, mouseY, axis, useFinalPosition) {\n    const {x, y} = rotated({x: mouseX, y: mouseY}, this.getCenterPoint(useFinalPosition), toRadians(-this.options.rotation));\n    return inBoxRange({x, y}, this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis, this.options.borderWidth);\n  }\n\n  getCenterPoint(useFinalPosition) {\n    return getElementCenterPoint(this, useFinalPosition);\n  }\n\n  draw(ctx) {\n    ctx.save();\n    translate(ctx, this.getCenterPoint(), this.options.rotation);\n    drawBox(ctx, this, this.options);\n    ctx.restore();\n  }\n\n  get label() {\n    return this.elements && this.elements[0];\n  }\n\n  resolveElementProperties(chart, options) {\n    return resolveBoxAndLabelProperties(chart, options);\n  }\n}\n\nBoxAnnotation.id = 'boxAnnotation';\n\nBoxAnnotation.defaults = {\n  adjustScaleRange: true,\n  backgroundShadowColor: 'transparent',\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderRadius: 0,\n  borderShadowColor: 'transparent',\n  borderWidth: 1,\n  display: true,\n  init: undefined,\n  label: {\n    backgroundColor: 'transparent',\n    borderWidth: 0,\n    callout: {\n      display: false\n    },\n    color: 'black',\n    content: null,\n    display: false,\n    drawTime: undefined,\n    font: {\n      family: undefined,\n      lineHeight: undefined,\n      size: undefined,\n      style: undefined,\n      weight: 'bold'\n    },\n    height: undefined,\n    opacity: undefined,\n    padding: 6,\n    position: 'center',\n    rotation: undefined,\n    textAlign: 'start',\n    textStrokeColor: undefined,\n    textStrokeWidth: 0,\n    width: undefined,\n    xAdjust: 0,\n    yAdjust: 0,\n    z: undefined\n  },\n  rotation: 0,\n  shadowBlur: 0,\n  shadowOffsetX: 0,\n  shadowOffsetY: 0,\n  xMax: undefined,\n  xMin: undefined,\n  xScaleID: undefined,\n  yMax: undefined,\n  yMin: undefined,\n  yScaleID: undefined,\n  z: 0\n};\n\nBoxAnnotation.defaultRoutes = {\n  borderColor: 'color',\n  backgroundColor: 'color'\n};\n\nBoxAnnotation.descriptors = {\n  label: {\n    _fallback: true\n  }\n};\n\nconst positions = ['left', 'bottom', 'top', 'right'];\n\nclass LabelAnnotation extends Element {\n\n  inRange(mouseX, mouseY, axis, useFinalPosition) {\n    const {x, y} = rotated({x: mouseX, y: mouseY}, this.getCenterPoint(useFinalPosition), toRadians(-this.rotation));\n    return inBoxRange({x, y}, this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis, this.options.borderWidth);\n  }\n\n  getCenterPoint(useFinalPosition) {\n    return getElementCenterPoint(this, useFinalPosition);\n  }\n\n  draw(ctx) {\n    const options = this.options;\n    const visible = !defined(this._visible) || this._visible;\n    if (!options.display || !options.content || !visible) {\n      return;\n    }\n    ctx.save();\n    translate(ctx, this.getCenterPoint(), this.rotation);\n    drawCallout(ctx, this);\n    drawBox(ctx, this, options);\n    drawLabel(ctx, getLabelSize(this), options);\n    ctx.restore();\n  }\n\n  resolveElementProperties(chart, options) {\n    let point;\n    if (!isBoundToPoint(options)) {\n      const {centerX, centerY} = resolveBoxProperties(chart, options);\n      point = {x: centerX, y: centerY};\n    } else {\n      point = getChartPoint(chart, options);\n    }\n    const padding = toPadding(options.padding);\n    const labelSize = measureLabelSize(chart.ctx, options);\n    const boxSize = measureRect(point, labelSize, options, padding);\n    return {\n      initProperties: initAnimationProperties(chart, boxSize, options),\n      pointX: point.x,\n      pointY: point.y,\n      ...boxSize,\n      rotation: options.rotation\n    };\n  }\n}\n\nLabelAnnotation.id = 'labelAnnotation';\n\nLabelAnnotation.defaults = {\n  adjustScaleRange: true,\n  backgroundColor: 'transparent',\n  backgroundShadowColor: 'transparent',\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderRadius: 0,\n  borderShadowColor: 'transparent',\n  borderWidth: 0,\n  callout: {\n    borderCapStyle: 'butt',\n    borderColor: undefined,\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: 'miter',\n    borderWidth: 1,\n    display: false,\n    margin: 5,\n    position: 'auto',\n    side: 5,\n    start: '50%',\n  },\n  color: 'black',\n  content: null,\n  display: true,\n  font: {\n    family: undefined,\n    lineHeight: undefined,\n    size: undefined,\n    style: undefined,\n    weight: undefined\n  },\n  height: undefined,\n  init: undefined,\n  opacity: undefined,\n  padding: 6,\n  position: 'center',\n  rotation: 0,\n  shadowBlur: 0,\n  shadowOffsetX: 0,\n  shadowOffsetY: 0,\n  textAlign: 'center',\n  textStrokeColor: undefined,\n  textStrokeWidth: 0,\n  width: undefined,\n  xAdjust: 0,\n  xMax: undefined,\n  xMin: undefined,\n  xScaleID: undefined,\n  xValue: undefined,\n  yAdjust: 0,\n  yMax: undefined,\n  yMin: undefined,\n  yScaleID: undefined,\n  yValue: undefined,\n  z: 0\n};\n\nLabelAnnotation.defaultRoutes = {\n  borderColor: 'color'\n};\n\nfunction measureRect(point, size, options, padding) {\n  const width = size.width + padding.width + options.borderWidth;\n  const height = size.height + padding.height + options.borderWidth;\n  const position = toPosition(options.position, 'center');\n  const x = calculatePosition(point.x, width, options.xAdjust, position.x);\n  const y = calculatePosition(point.y, height, options.yAdjust, position.y);\n\n  return {\n    x,\n    y,\n    x2: x + width,\n    y2: y + height,\n    width,\n    height,\n    centerX: x + width / 2,\n    centerY: y + height / 2\n  };\n}\n\nfunction calculatePosition(start, size, adjust = 0, position) {\n  return start - getRelativePosition(size, position) + adjust;\n}\n\nfunction drawCallout(ctx, element) {\n  const {pointX, pointY, options} = element;\n  const callout = options.callout;\n  const calloutPosition = callout && callout.display && resolveCalloutPosition(element, callout);\n  if (!calloutPosition || isPointInRange(element, callout, calloutPosition)) {\n    return;\n  }\n\n  ctx.save();\n  ctx.beginPath();\n  const stroke = setBorderStyle(ctx, callout);\n  if (!stroke) {\n    return ctx.restore();\n  }\n  const {separatorStart, separatorEnd} = getCalloutSeparatorCoord(element, calloutPosition);\n  const {sideStart, sideEnd} = getCalloutSideCoord(element, calloutPosition, separatorStart);\n  if (callout.margin > 0 || options.borderWidth === 0) {\n    ctx.moveTo(separatorStart.x, separatorStart.y);\n    ctx.lineTo(separatorEnd.x, separatorEnd.y);\n  }\n  ctx.moveTo(sideStart.x, sideStart.y);\n  ctx.lineTo(sideEnd.x, sideEnd.y);\n  const rotatedPoint = rotated({x: pointX, y: pointY}, element.getCenterPoint(), toRadians(-element.rotation));\n  ctx.lineTo(rotatedPoint.x, rotatedPoint.y);\n  ctx.stroke();\n  ctx.restore();\n}\n\nfunction getCalloutSeparatorCoord(element, position) {\n  const {x, y, x2, y2} = element;\n  const adjust = getCalloutSeparatorAdjust(element, position);\n  let separatorStart, separatorEnd;\n  if (position === 'left' || position === 'right') {\n    separatorStart = {x: x + adjust, y};\n    separatorEnd = {x: separatorStart.x, y: y2};\n  } else {\n    //  position 'top' or 'bottom'\n    separatorStart = {x, y: y + adjust};\n    separatorEnd = {x: x2, y: separatorStart.y};\n  }\n  return {separatorStart, separatorEnd};\n}\n\nfunction getCalloutSeparatorAdjust(element, position) {\n  const {width, height, options} = element;\n  const adjust = options.callout.margin + options.borderWidth / 2;\n  if (position === 'right') {\n    return width + adjust;\n  } else if (position === 'bottom') {\n    return height + adjust;\n  }\n  return -adjust;\n}\n\nfunction getCalloutSideCoord(element, position, separatorStart) {\n  const {y, width, height, options} = element;\n  const start = options.callout.start;\n  const side = getCalloutSideAdjust(position, options.callout);\n  let sideStart, sideEnd;\n  if (position === 'left' || position === 'right') {\n    sideStart = {x: separatorStart.x, y: y + getSize(height, start)};\n    sideEnd = {x: sideStart.x + side, y: sideStart.y};\n  } else {\n    //  position 'top' or 'bottom'\n    sideStart = {x: separatorStart.x + getSize(width, start), y: separatorStart.y};\n    sideEnd = {x: sideStart.x, y: sideStart.y + side};\n  }\n  return {sideStart, sideEnd};\n}\n\nfunction getCalloutSideAdjust(position, options) {\n  const side = options.side;\n  if (position === 'left' || position === 'top') {\n    return -side;\n  }\n  return side;\n}\n\nfunction resolveCalloutPosition(element, options) {\n  const position = options.position;\n  if (positions.includes(position)) {\n    return position;\n  }\n  return resolveCalloutAutoPosition(element, options);\n}\n\nfunction resolveCalloutAutoPosition(element, options) {\n  const {x, y, x2, y2, width, height, pointX, pointY, centerX, centerY, rotation} = element;\n  const center = {x: centerX, y: centerY};\n  const start = options.start;\n  const xAdjust = getSize(width, start);\n  const yAdjust = getSize(height, start);\n  const xPoints = [x, x + xAdjust, x + xAdjust, x2];\n  const yPoints = [y + yAdjust, y2, y, y2];\n  const result = [];\n  for (let index = 0; index < 4; index++) {\n    const rotatedPoint = rotated({x: xPoints[index], y: yPoints[index]}, center, toRadians(rotation));\n    result.push({\n      position: positions[index],\n      distance: distanceBetweenPoints(rotatedPoint, {x: pointX, y: pointY})\n    });\n  }\n  return result.sort((a, b) => a.distance - b.distance)[0].position;\n}\n\nfunction getLabelSize({x, y, width, height, options}) {\n  const hBorderWidth = options.borderWidth / 2;\n  const padding = toPadding(options.padding);\n  return {\n    x: x + padding.left + hBorderWidth,\n    y: y + padding.top + hBorderWidth,\n    width: width - padding.left - padding.right - options.borderWidth,\n    height: height - padding.top - padding.bottom - options.borderWidth\n  };\n}\n\nfunction isPointInRange(element, callout, position) {\n  const {pointX, pointY} = element;\n  const margin = callout.margin;\n  let x = pointX;\n  let y = pointY;\n  if (position === 'left') {\n    x += margin;\n  } else if (position === 'right') {\n    x -= margin;\n  } else if (position === 'top') {\n    y += margin;\n  } else if (position === 'bottom') {\n    y -= margin;\n  }\n  return element.inRange(x, y);\n}\n\nconst pointInLine = (p1, p2, t) => ({x: p1.x + t * (p2.x - p1.x), y: p1.y + t * (p2.y - p1.y)});\nconst interpolateX = (y, p1, p2) => pointInLine(p1, p2, Math.abs((y - p1.y) / (p2.y - p1.y))).x;\nconst interpolateY = (x, p1, p2) => pointInLine(p1, p2, Math.abs((x - p1.x) / (p2.x - p1.x))).y;\nconst sqr = v => v * v;\nconst rangeLimit = (mouseX, mouseY, {x, y, x2, y2}, axis) => axis === 'y' ? {start: Math.min(y, y2), end: Math.max(y, y2), value: mouseY} : {start: Math.min(x, x2), end: Math.max(x, x2), value: mouseX};\n// http://www.independent-software.com/determining-coordinates-on-a-html-canvas-bezier-curve.html\nconst coordInCurve = (start, cp, end, t) => (1 - t) * (1 - t) * start + 2 * (1 - t) * t * cp + t * t * end;\nconst pointInCurve = (start, cp, end, t) => ({x: coordInCurve(start.x, cp.x, end.x, t), y: coordInCurve(start.y, cp.y, end.y, t)});\nconst coordAngleInCurve = (start, cp, end, t) => 2 * (1 - t) * (cp - start) + 2 * t * (end - cp);\nconst angleInCurve = (start, cp, end, t) => -Math.atan2(coordAngleInCurve(start.x, cp.x, end.x, t), coordAngleInCurve(start.y, cp.y, end.y, t)) + 0.5 * PI;\n\nclass LineAnnotation extends Element {\n\n  inRange(mouseX, mouseY, axis, useFinalPosition) {\n    const hBorderWidth = this.options.borderWidth / 2;\n    if (axis !== 'x' && axis !== 'y') {\n      const point = {mouseX, mouseY};\n      const {path, ctx} = this;\n      if (path) {\n        setBorderStyle(ctx, this.options);\n        const {chart} = this.$context;\n        const mx = mouseX * chart.currentDevicePixelRatio;\n        const my = mouseY * chart.currentDevicePixelRatio;\n        const result = ctx.isPointInStroke(path, mx, my) || isOnLabel(this, point, useFinalPosition);\n        ctx.restore();\n        return result;\n      }\n      const epsilon = sqr(hBorderWidth);\n      return intersects(this, point, epsilon, useFinalPosition) || isOnLabel(this, point, useFinalPosition);\n    }\n    return inAxisRange(this, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition});\n  }\n\n  getCenterPoint(useFinalPosition) {\n    return getElementCenterPoint(this, useFinalPosition);\n  }\n\n  draw(ctx) {\n    const {x, y, x2, y2, cp, options} = this;\n\n    ctx.save();\n    if (!setBorderStyle(ctx, options)) {\n      // no border width, then line is not drawn\n      return ctx.restore();\n    }\n    setShadowStyle(ctx, options);\n\n    const length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2));\n    if (options.curve && cp) {\n      drawCurve(ctx, this, cp, length);\n      return ctx.restore();\n    }\n    const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(this);\n    const angle = Math.atan2(y2 - y, x2 - x);\n    ctx.translate(x, y);\n    ctx.rotate(angle);\n    ctx.beginPath();\n    ctx.moveTo(0 + startAdjust, 0);\n    ctx.lineTo(length - endAdjust, 0);\n    ctx.shadowColor = options.borderShadowColor;\n    ctx.stroke();\n    drawArrowHead(ctx, 0, startAdjust, startOpts);\n    drawArrowHead(ctx, length, -endAdjust, endOpts);\n    ctx.restore();\n  }\n\n  get label() {\n    return this.elements && this.elements[0];\n  }\n\n  resolveElementProperties(chart, options) {\n    const area = resolveLineProperties(chart, options);\n    const {x, y, x2, y2} = area;\n    const inside = isLineInArea(area, chart.chartArea);\n    const properties = inside\n      ? limitLineToArea({x, y}, {x: x2, y: y2}, chart.chartArea)\n      : {x, y, x2, y2, width: Math.abs(x2 - x), height: Math.abs(y2 - y)};\n    properties.centerX = (x2 + x) / 2;\n    properties.centerY = (y2 + y) / 2;\n    properties.initProperties = initAnimationProperties(chart, properties, options);\n    if (options.curve) {\n      const p1 = {x: properties.x, y: properties.y};\n      const p2 = {x: properties.x2, y: properties.y2};\n      properties.cp = getControlPoint(properties, options, distanceBetweenPoints(p1, p2));\n    }\n    const labelProperties = resolveLabelElementProperties(chart, properties, options.label);\n    // additonal prop to manage zoom/pan\n    labelProperties._visible = inside;\n\n    properties.elements = [{\n      type: 'label',\n      optionScope: 'label',\n      properties: labelProperties,\n      initProperties: properties.initProperties\n    }];\n    return properties;\n  }\n}\n\nLineAnnotation.id = 'lineAnnotation';\n\nconst arrowHeadsDefaults = {\n  backgroundColor: undefined,\n  backgroundShadowColor: undefined,\n  borderColor: undefined,\n  borderDash: undefined,\n  borderDashOffset: undefined,\n  borderShadowColor: undefined,\n  borderWidth: undefined,\n  display: undefined,\n  fill: undefined,\n  length: undefined,\n  shadowBlur: undefined,\n  shadowOffsetX: undefined,\n  shadowOffsetY: undefined,\n  width: undefined\n};\n\nLineAnnotation.defaults = {\n  adjustScaleRange: true,\n  arrowHeads: {\n    display: false,\n    end: Object.assign({}, arrowHeadsDefaults),\n    fill: false,\n    length: 12,\n    start: Object.assign({}, arrowHeadsDefaults),\n    width: 6\n  },\n  borderDash: [],\n  borderDashOffset: 0,\n  borderShadowColor: 'transparent',\n  borderWidth: 2,\n  curve: false,\n  controlPoint: {\n    y: '-50%'\n  },\n  display: true,\n  endValue: undefined,\n  init: undefined,\n  label: {\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    backgroundShadowColor: 'transparent',\n    borderCapStyle: 'butt',\n    borderColor: 'black',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: 'miter',\n    borderRadius: 6,\n    borderShadowColor: 'transparent',\n    borderWidth: 0,\n    callout: Object.assign({}, LabelAnnotation.defaults.callout),\n    color: '#fff',\n    content: null,\n    display: false,\n    drawTime: undefined,\n    font: {\n      family: undefined,\n      lineHeight: undefined,\n      size: undefined,\n      style: undefined,\n      weight: 'bold'\n    },\n    height: undefined,\n    opacity: undefined,\n    padding: 6,\n    position: 'center',\n    rotation: 0,\n    shadowBlur: 0,\n    shadowOffsetX: 0,\n    shadowOffsetY: 0,\n    textAlign: 'center',\n    textStrokeColor: undefined,\n    textStrokeWidth: 0,\n    width: undefined,\n    xAdjust: 0,\n    yAdjust: 0,\n    z: undefined\n  },\n  scaleID: undefined,\n  shadowBlur: 0,\n  shadowOffsetX: 0,\n  shadowOffsetY: 0,\n  value: undefined,\n  xMax: undefined,\n  xMin: undefined,\n  xScaleID: undefined,\n  yMax: undefined,\n  yMin: undefined,\n  yScaleID: undefined,\n  z: 0\n};\n\nLineAnnotation.descriptors = {\n  arrowHeads: {\n    start: {\n      _fallback: true\n    },\n    end: {\n      _fallback: true\n    },\n    _fallback: true\n  }\n};\n\nLineAnnotation.defaultRoutes = {\n  borderColor: 'color'\n};\n\nfunction inAxisRange(element, {mouseX, mouseY}, axis, {hBorderWidth, useFinalPosition}) {\n  const limit = rangeLimit(mouseX, mouseY, element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis);\n  return (limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth) || isOnLabel(element, {mouseX, mouseY}, useFinalPosition, axis);\n}\n\nfunction isLineInArea({x, y, x2, y2}, {top, right, bottom, left}) {\n  return !(\n    (x < left && x2 < left) ||\n    (x > right && x2 > right) ||\n    (y < top && y2 < top) ||\n    (y > bottom && y2 > bottom)\n  );\n}\n\nfunction limitPointToArea({x, y}, p2, {top, right, bottom, left}) {\n  if (x < left) {\n    y = interpolateY(left, {x, y}, p2);\n    x = left;\n  }\n  if (x > right) {\n    y = interpolateY(right, {x, y}, p2);\n    x = right;\n  }\n  if (y < top) {\n    x = interpolateX(top, {x, y}, p2);\n    y = top;\n  }\n  if (y > bottom) {\n    x = interpolateX(bottom, {x, y}, p2);\n    y = bottom;\n  }\n  return {x, y};\n}\n\nfunction limitLineToArea(p1, p2, area) {\n  const {x, y} = limitPointToArea(p1, p2, area);\n  const {x: x2, y: y2} = limitPointToArea(p2, p1, area);\n  return {x, y, x2, y2, width: Math.abs(x2 - x), height: Math.abs(y2 - y)};\n}\n\nfunction intersects(element, {mouseX, mouseY}, epsilon = EPSILON, useFinalPosition) {\n  // Adapted from https://stackoverflow.com/a/6853926/25507\n  const {x: x1, y: y1, x2, y2} = element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition);\n  const dx = x2 - x1;\n  const dy = y2 - y1;\n  const lenSq = sqr(dx) + sqr(dy);\n  const t = lenSq === 0 ? -1 : ((mouseX - x1) * dx + (mouseY - y1) * dy) / lenSq;\n  let xx, yy;\n  if (t < 0) {\n    xx = x1;\n    yy = y1;\n  } else if (t > 1) {\n    xx = x2;\n    yy = y2;\n  } else {\n    xx = x1 + t * dx;\n    yy = y1 + t * dy;\n  }\n  return (sqr(mouseX - xx) + sqr(mouseY - yy)) <= epsilon;\n}\n\nfunction isOnLabel(element, {mouseX, mouseY}, useFinalPosition, axis) {\n  const label = element.label;\n  return label.options.display && label.inRange(mouseX, mouseY, axis, useFinalPosition);\n}\n\nfunction resolveLabelElementProperties(chart, properties, options) {\n  const borderWidth = options.borderWidth;\n  const padding = toPadding(options.padding);\n  const textSize = measureLabelSize(chart.ctx, options);\n  const width = textSize.width + padding.width + borderWidth;\n  const height = textSize.height + padding.height + borderWidth;\n  return calculateLabelPosition(properties, options, {width, height, padding}, chart.chartArea);\n}\n\nfunction calculateAutoRotation(properties) {\n  const {x, y, x2, y2} = properties;\n  const rotation = Math.atan2(y2 - y, x2 - x);\n  // Flip the rotation if it goes > PI/2 or < -PI/2, so label stays upright\n  return rotation > PI / 2 ? rotation - PI : rotation < PI / -2 ? rotation + PI : rotation;\n}\n\nfunction calculateLabelPosition(properties, label, sizes, chartArea) {\n  const {width, height, padding} = sizes;\n  const {xAdjust, yAdjust} = label;\n  const p1 = {x: properties.x, y: properties.y};\n  const p2 = {x: properties.x2, y: properties.y2};\n  const rotation = label.rotation === 'auto' ? calculateAutoRotation(properties) : toRadians(label.rotation);\n  const size = rotatedSize(width, height, rotation);\n  const t = calculateT(properties, label, {labelSize: size, padding}, chartArea);\n  const pt = properties.cp ? pointInCurve(p1, properties.cp, p2, t) : pointInLine(p1, p2, t);\n  const xCoordinateSizes = {size: size.w, min: chartArea.left, max: chartArea.right, padding: padding.left};\n  const yCoordinateSizes = {size: size.h, min: chartArea.top, max: chartArea.bottom, padding: padding.top};\n  const centerX = adjustLabelCoordinate(pt.x, xCoordinateSizes) + xAdjust;\n  const centerY = adjustLabelCoordinate(pt.y, yCoordinateSizes) + yAdjust;\n  return {\n    x: centerX - (width / 2),\n    y: centerY - (height / 2),\n    x2: centerX + (width / 2),\n    y2: centerY + (height / 2),\n    centerX,\n    centerY,\n    pointX: pt.x,\n    pointY: pt.y,\n    width,\n    height,\n    rotation: toDegrees(rotation)\n  };\n}\n\nfunction rotatedSize(width, height, rotation) {\n  const cos = Math.cos(rotation);\n  const sin = Math.sin(rotation);\n  return {\n    w: Math.abs(width * cos) + Math.abs(height * sin),\n    h: Math.abs(width * sin) + Math.abs(height * cos)\n  };\n}\n\nfunction calculateT(properties, label, sizes, chartArea) {\n  let t;\n  const space = spaceAround(properties, chartArea);\n  if (label.position === 'start') {\n    t = calculateTAdjust({w: properties.x2 - properties.x, h: properties.y2 - properties.y}, sizes, label, space);\n  } else if (label.position === 'end') {\n    t = 1 - calculateTAdjust({w: properties.x - properties.x2, h: properties.y - properties.y2}, sizes, label, space);\n  } else {\n    t = getRelativePosition(1, label.position);\n  }\n  return t;\n}\n\nfunction calculateTAdjust(lineSize, sizes, label, space) {\n  const {labelSize, padding} = sizes;\n  const lineW = lineSize.w * space.dx;\n  const lineH = lineSize.h * space.dy;\n  const x = (lineW > 0) && ((labelSize.w / 2 + padding.left - space.x) / lineW);\n  const y = (lineH > 0) && ((labelSize.h / 2 + padding.top - space.y) / lineH);\n  return clamp(Math.max(x, y), 0, 0.25);\n}\n\nfunction spaceAround(properties, chartArea) {\n  const {x, x2, y, y2} = properties;\n  const t = Math.min(y, y2) - chartArea.top;\n  const l = Math.min(x, x2) - chartArea.left;\n  const b = chartArea.bottom - Math.max(y, y2);\n  const r = chartArea.right - Math.max(x, x2);\n  return {\n    x: Math.min(l, r),\n    y: Math.min(t, b),\n    dx: l <= r ? 1 : -1,\n    dy: t <= b ? 1 : -1\n  };\n}\n\nfunction adjustLabelCoordinate(coordinate, labelSizes) {\n  const {size, min, max, padding} = labelSizes;\n  const halfSize = size / 2;\n  if (size > max - min) {\n    // if it does not fit, display as much as possible\n    return (max + min) / 2;\n  }\n  if (min >= (coordinate - padding - halfSize)) {\n    coordinate = min + padding + halfSize;\n  }\n  if (max <= (coordinate + padding + halfSize)) {\n    coordinate = max - padding - halfSize;\n  }\n  return coordinate;\n}\n\nfunction getArrowHeads(line) {\n  const options = line.options;\n  const arrowStartOpts = options.arrowHeads && options.arrowHeads.start;\n  const arrowEndOpts = options.arrowHeads && options.arrowHeads.end;\n  return {\n    startOpts: arrowStartOpts,\n    endOpts: arrowEndOpts,\n    startAdjust: getLineAdjust(line, arrowStartOpts),\n    endAdjust: getLineAdjust(line, arrowEndOpts)\n  };\n}\n\nfunction getLineAdjust(line, arrowOpts) {\n  if (!arrowOpts || !arrowOpts.display) {\n    return 0;\n  }\n  const {length, width} = arrowOpts;\n  const adjust = line.options.borderWidth / 2;\n  const p1 = {x: length, y: width + adjust};\n  const p2 = {x: 0, y: adjust};\n  return Math.abs(interpolateX(0, p1, p2));\n}\n\nfunction drawArrowHead(ctx, offset, adjust, arrowOpts) {\n  if (!arrowOpts || !arrowOpts.display) {\n    return;\n  }\n  const {length, width, fill, backgroundColor, borderColor} = arrowOpts;\n  const arrowOffsetX = Math.abs(offset - length) + adjust;\n  ctx.beginPath();\n  setShadowStyle(ctx, arrowOpts);\n  setBorderStyle(ctx, arrowOpts);\n  ctx.moveTo(arrowOffsetX, -width);\n  ctx.lineTo(offset + adjust, 0);\n  ctx.lineTo(arrowOffsetX, width);\n  if (fill === true) {\n    ctx.fillStyle = backgroundColor || borderColor;\n    ctx.closePath();\n    ctx.fill();\n    ctx.shadowColor = 'transparent';\n  } else {\n    ctx.shadowColor = arrowOpts.borderShadowColor;\n  }\n  ctx.stroke();\n}\n\nfunction getControlPoint(properties, options, distance) {\n  const {x, y, x2, y2, centerX, centerY} = properties;\n  const angle = Math.atan2(y2 - y, x2 - x);\n  const cp = toPosition(options.controlPoint, 0);\n  const point = {\n    x: centerX + getSize(distance, cp.x, false),\n    y: centerY + getSize(distance, cp.y, false)\n  };\n  return rotated(point, {x: centerX, y: centerY}, angle);\n}\n\nfunction drawArrowHeadOnCurve(ctx, {x, y}, {angle, adjust}, arrowOpts) {\n  if (!arrowOpts || !arrowOpts.display) {\n    return;\n  }\n  ctx.save();\n  ctx.translate(x, y);\n  ctx.rotate(angle);\n  drawArrowHead(ctx, 0, -adjust, arrowOpts);\n  ctx.restore();\n}\n\nfunction drawCurve(ctx, element, cp, length) {\n  const {x, y, x2, y2, options} = element;\n  const {startOpts, endOpts, startAdjust, endAdjust} = getArrowHeads(element);\n  const p1 = {x, y};\n  const p2 = {x: x2, y: y2};\n  const startAngle = angleInCurve(p1, cp, p2, 0);\n  const endAngle = angleInCurve(p1, cp, p2, 1) - PI;\n  const ps = pointInCurve(p1, cp, p2, startAdjust / length);\n  const pe = pointInCurve(p1, cp, p2, 1 - endAdjust / length);\n\n  const path = new Path2D();\n  ctx.beginPath();\n  path.moveTo(ps.x, ps.y);\n  path.quadraticCurveTo(cp.x, cp.y, pe.x, pe.y);\n  ctx.shadowColor = options.borderShadowColor;\n  ctx.stroke(path);\n  element.path = path;\n  element.ctx = ctx;\n  drawArrowHeadOnCurve(ctx, ps, {angle: startAngle, adjust: startAdjust}, startOpts);\n  drawArrowHeadOnCurve(ctx, pe, {angle: endAngle, adjust: endAdjust}, endOpts);\n}\n\nclass EllipseAnnotation extends Element {\n\n  inRange(mouseX, mouseY, axis, useFinalPosition) {\n    const rotation = this.options.rotation;\n    const borderWidth = this.options.borderWidth;\n    if (axis !== 'x' && axis !== 'y') {\n      return pointInEllipse({x: mouseX, y: mouseY}, this.getProps(['width', 'height', 'centerX', 'centerY'], useFinalPosition), rotation, borderWidth);\n    }\n    const {x, y, x2, y2} = this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition);\n    const hBorderWidth = borderWidth / 2;\n    const limit = axis === 'y' ? {start: y, end: y2} : {start: x, end: x2};\n    const rotatedPoint = rotated({x: mouseX, y: mouseY}, this.getCenterPoint(useFinalPosition), toRadians(-rotation));\n    return rotatedPoint[axis] >= limit.start - hBorderWidth - EPSILON && rotatedPoint[axis] <= limit.end + hBorderWidth + EPSILON;\n  }\n\n  getCenterPoint(useFinalPosition) {\n    return getElementCenterPoint(this, useFinalPosition);\n  }\n\n  draw(ctx) {\n    const {width, height, centerX, centerY, options} = this;\n    ctx.save();\n    translate(ctx, this.getCenterPoint(), options.rotation);\n    setShadowStyle(ctx, this.options);\n    ctx.beginPath();\n    ctx.fillStyle = options.backgroundColor;\n    const stroke = setBorderStyle(ctx, options);\n    ctx.ellipse(centerX, centerY, height / 2, width / 2, PI / 2, 0, 2 * PI);\n    ctx.fill();\n    if (stroke) {\n      ctx.shadowColor = options.borderShadowColor;\n      ctx.stroke();\n    }\n    ctx.restore();\n  }\n\n  get label() {\n    return this.elements && this.elements[0];\n  }\n\n  resolveElementProperties(chart, options) {\n    return resolveBoxAndLabelProperties(chart, options, true);\n  }\n\n}\n\nEllipseAnnotation.id = 'ellipseAnnotation';\n\nEllipseAnnotation.defaults = {\n  adjustScaleRange: true,\n  backgroundShadowColor: 'transparent',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderShadowColor: 'transparent',\n  borderWidth: 1,\n  display: true,\n  init: undefined,\n  label: Object.assign({}, BoxAnnotation.defaults.label),\n  rotation: 0,\n  shadowBlur: 0,\n  shadowOffsetX: 0,\n  shadowOffsetY: 0,\n  xMax: undefined,\n  xMin: undefined,\n  xScaleID: undefined,\n  yMax: undefined,\n  yMin: undefined,\n  yScaleID: undefined,\n  z: 0\n};\n\nEllipseAnnotation.defaultRoutes = {\n  borderColor: 'color',\n  backgroundColor: 'color'\n};\n\nEllipseAnnotation.descriptors = {\n  label: {\n    _fallback: true\n  }\n};\n\nfunction pointInEllipse(p, ellipse, rotation, borderWidth) {\n  const {width, height, centerX, centerY} = ellipse;\n  const xRadius = width / 2;\n  const yRadius = height / 2;\n\n  if (xRadius <= 0 || yRadius <= 0) {\n    return false;\n  }\n  // https://stackoverflow.com/questions/7946187/point-and-ellipse-rotated-position-test-algorithm\n  const angle = toRadians(rotation || 0);\n  const hBorderWidth = borderWidth / 2 || 0;\n  const cosAngle = Math.cos(angle);\n  const sinAngle = Math.sin(angle);\n  const a = Math.pow(cosAngle * (p.x - centerX) + sinAngle * (p.y - centerY), 2);\n  const b = Math.pow(sinAngle * (p.x - centerX) - cosAngle * (p.y - centerY), 2);\n  return (a / Math.pow(xRadius + hBorderWidth, 2)) + (b / Math.pow(yRadius + hBorderWidth, 2)) <= 1.0001;\n}\n\nclass PointAnnotation extends Element {\n\n  inRange(mouseX, mouseY, axis, useFinalPosition) {\n    const {x, y, x2, y2, width} = this.getProps(['x', 'y', 'x2', 'y2', 'width'], useFinalPosition);\n    const borderWidth = this.options.borderWidth;\n    if (axis !== 'x' && axis !== 'y') {\n      return inPointRange({x: mouseX, y: mouseY}, this.getCenterPoint(useFinalPosition), width / 2, borderWidth);\n    }\n    const hBorderWidth = borderWidth / 2;\n    const limit = axis === 'y' ? {start: y, end: y2, value: mouseY} : {start: x, end: x2, value: mouseX};\n    return limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth;\n  }\n\n  getCenterPoint(useFinalPosition) {\n    return getElementCenterPoint(this, useFinalPosition);\n  }\n\n  draw(ctx) {\n    const options = this.options;\n    const borderWidth = options.borderWidth;\n    if (options.radius < 0.1) {\n      return;\n    }\n    ctx.save();\n    ctx.fillStyle = options.backgroundColor;\n    setShadowStyle(ctx, options);\n    const stroke = setBorderStyle(ctx, options);\n    drawPoint(ctx, this, this.centerX, this.centerY);\n    if (stroke && !isImageOrCanvas(options.pointStyle)) {\n      ctx.shadowColor = options.borderShadowColor;\n      ctx.stroke();\n    }\n    ctx.restore();\n    options.borderWidth = borderWidth;\n  }\n\n  resolveElementProperties(chart, options) {\n    const properties = resolvePointProperties(chart, options);\n    properties.initProperties = initAnimationProperties(chart, properties, options, true);\n    return properties;\n  }\n}\n\nPointAnnotation.id = 'pointAnnotation';\n\nPointAnnotation.defaults = {\n  adjustScaleRange: true,\n  backgroundShadowColor: 'transparent',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderShadowColor: 'transparent',\n  borderWidth: 1,\n  display: true,\n  init: undefined,\n  pointStyle: 'circle',\n  radius: 10,\n  rotation: 0,\n  shadowBlur: 0,\n  shadowOffsetX: 0,\n  shadowOffsetY: 0,\n  xAdjust: 0,\n  xMax: undefined,\n  xMin: undefined,\n  xScaleID: undefined,\n  xValue: undefined,\n  yAdjust: 0,\n  yMax: undefined,\n  yMin: undefined,\n  yScaleID: undefined,\n  yValue: undefined,\n  z: 0\n};\n\nPointAnnotation.defaultRoutes = {\n  borderColor: 'color',\n  backgroundColor: 'color'\n};\n\nclass PolygonAnnotation extends Element {\n\n  inRange(mouseX, mouseY, axis, useFinalPosition) {\n    if (axis !== 'x' && axis !== 'y') {\n      return this.options.radius >= 0.1 && this.elements.length > 1 && pointIsInPolygon(this.elements, mouseX, mouseY, useFinalPosition);\n    }\n    const rotatedPoint = rotated({x: mouseX, y: mouseY}, this.getCenterPoint(useFinalPosition), toRadians(-this.options.rotation));\n    const axisPoints = this.elements.map((point) => axis === 'y' ? point.bY : point.bX);\n    const start = Math.min(...axisPoints);\n    const end = Math.max(...axisPoints);\n    return rotatedPoint[axis] >= start && rotatedPoint[axis] <= end;\n  }\n\n  getCenterPoint(useFinalPosition) {\n    return getElementCenterPoint(this, useFinalPosition);\n  }\n\n  draw(ctx) {\n    const {elements, options} = this;\n    ctx.save();\n    ctx.beginPath();\n    ctx.fillStyle = options.backgroundColor;\n    setShadowStyle(ctx, options);\n    const stroke = setBorderStyle(ctx, options);\n    let first = true;\n    for (const el of elements) {\n      if (first) {\n        ctx.moveTo(el.x, el.y);\n        first = false;\n      } else {\n        ctx.lineTo(el.x, el.y);\n      }\n    }\n    ctx.closePath();\n    ctx.fill();\n    // If no border, don't draw it\n    if (stroke) {\n      ctx.shadowColor = options.borderShadowColor;\n      ctx.stroke();\n    }\n    ctx.restore();\n  }\n\n  resolveElementProperties(chart, options) {\n    const properties = resolvePointProperties(chart, options);\n    const {sides, rotation} = options;\n    const elements = [];\n    const angle = (2 * PI) / sides;\n    let rad = rotation * RAD_PER_DEG;\n    for (let i = 0; i < sides; i++, rad += angle) {\n      const elProps = buildPointElement(properties, options, rad);\n      elProps.initProperties = initAnimationProperties(chart, properties, options);\n      elements.push(elProps);\n    }\n    properties.elements = elements;\n    return properties;\n  }\n}\n\nPolygonAnnotation.id = 'polygonAnnotation';\n\nPolygonAnnotation.defaults = {\n  adjustScaleRange: true,\n  backgroundShadowColor: 'transparent',\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderShadowColor: 'transparent',\n  borderWidth: 1,\n  display: true,\n  init: undefined,\n  point: {\n    radius: 0\n  },\n  radius: 10,\n  rotation: 0,\n  shadowBlur: 0,\n  shadowOffsetX: 0,\n  shadowOffsetY: 0,\n  sides: 3,\n  xAdjust: 0,\n  xMax: undefined,\n  xMin: undefined,\n  xScaleID: undefined,\n  xValue: undefined,\n  yAdjust: 0,\n  yMax: undefined,\n  yMin: undefined,\n  yScaleID: undefined,\n  yValue: undefined,\n  z: 0\n};\n\nPolygonAnnotation.defaultRoutes = {\n  borderColor: 'color',\n  backgroundColor: 'color'\n};\n\nfunction buildPointElement({centerX, centerY}, {radius, borderWidth}, rad) {\n  const halfBorder = borderWidth / 2;\n  const sin = Math.sin(rad);\n  const cos = Math.cos(rad);\n  const point = {x: centerX + sin * radius, y: centerY - cos * radius};\n  return {\n    type: 'point',\n    optionScope: 'point',\n    properties: {\n      x: point.x,\n      y: point.y,\n      centerX: point.x,\n      centerY: point.y,\n      bX: centerX + sin * (radius + halfBorder),\n      bY: centerY - cos * (radius + halfBorder)\n    }\n  };\n}\n\nfunction pointIsInPolygon(points, x, y, useFinalPosition) {\n  let isInside = false;\n  let A = points[points.length - 1].getProps(['bX', 'bY'], useFinalPosition);\n  for (const point of points) {\n    const B = point.getProps(['bX', 'bY'], useFinalPosition);\n    if ((B.bY > y) !== (A.bY > y) && x < (A.bX - B.bX) * (y - B.bY) / (A.bY - B.bY) + B.bX) {\n      isInside = !isInside;\n    }\n    A = B;\n  }\n  return isInside;\n}\n\nconst annotationTypes = {\n  box: BoxAnnotation,\n  ellipse: EllipseAnnotation,\n  label: LabelAnnotation,\n  line: LineAnnotation,\n  point: PointAnnotation,\n  polygon: PolygonAnnotation\n};\n\n/**\n * Register fallback for annotation elements\n * For example lineAnnotation options would be looked through:\n * - the annotation object (options.plugins.annotation.annotations[id])\n * - element options (options.elements.lineAnnotation)\n * - element defaults (defaults.elements.lineAnnotation)\n * - annotation plugin defaults (defaults.plugins.annotation, this is what we are registering here)\n */\nObject.keys(annotationTypes).forEach(key => {\n  defaults.describe(`elements.${annotationTypes[key].id}`, {\n    _fallback: 'plugins.annotation.common'\n  });\n});\n\nconst directUpdater = {\n  update: Object.assign\n};\n\nconst hooks$1 = eventHooks.concat(elementHooks);\nconst resolve = (value, optDefs) => isObject(optDefs) ? resolveObj(value, optDefs) : value;\n\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").UpdateMode } UpdateMode\n * @typedef { import('../../types/options').AnnotationPluginOptions } AnnotationPluginOptions\n */\n\n/**\n * @param {string} prop\n * @returns {boolean}\n */\nconst isIndexable = (prop) => prop === 'color' || prop === 'font';\n\n/**\n * Resolve the annotation type, checking if is supported.\n * @param {string} [type=line] - annotation type\n * @returns {string} resolved annotation type\n */\nfunction resolveType(type = 'line') {\n  if (annotationTypes[type]) {\n    return type;\n  }\n  console.warn(`Unknown annotation type: '${type}', defaulting to 'line'`);\n  return 'line';\n}\n\n/**\n * @param {Chart} chart\n * @param {Object} state\n * @param {AnnotationPluginOptions} options\n * @param {UpdateMode} mode\n */\nfunction updateElements(chart, state, options, mode) {\n  const animations = resolveAnimations(chart, options.animations, mode);\n\n  const annotations = state.annotations;\n  const elements = resyncElements(state.elements, annotations);\n\n  for (let i = 0; i < annotations.length; i++) {\n    const annotationOptions = annotations[i];\n    const element = getOrCreateElement(elements, i, annotationOptions.type);\n    const resolver = annotationOptions.setContext(getContext(chart, element, annotationOptions));\n    const properties = element.resolveElementProperties(chart, resolver);\n\n    properties.skip = toSkip(properties);\n\n    if ('elements' in properties) {\n      updateSubElements(element, properties.elements, resolver, animations);\n      // Remove the sub-element definitions from properties, so the actual elements\n      // are not overwritten by their definitions\n      delete properties.elements;\n    }\n\n    if (!defined(element.x)) {\n      // If the element is newly created, assing the properties directly - to\n      // make them readily awailable to any scriptable options. If we do not do this,\n      // the properties retruned by `resolveElementProperties` are available only\n      // after options resolution.\n      Object.assign(element, properties);\n    }\n\n    Object.assign(element, properties.initProperties);\n    properties.options = resolveAnnotationOptions(resolver);\n\n    animations.update(element, properties);\n  }\n}\n\nfunction toSkip(properties) {\n  return isNaN(properties.x) || isNaN(properties.y);\n}\n\nfunction resolveAnimations(chart, animOpts, mode) {\n  if (mode === 'reset' || mode === 'none' || mode === 'resize') {\n    return directUpdater;\n  }\n  return new Animations(chart, animOpts);\n}\n\nfunction updateSubElements(mainElement, elements, resolver, animations) {\n  const subElements = mainElement.elements || (mainElement.elements = []);\n  subElements.length = elements.length;\n  for (let i = 0; i < elements.length; i++) {\n    const definition = elements[i];\n    const properties = definition.properties;\n    const subElement = getOrCreateElement(subElements, i, definition.type, definition.initProperties);\n    const subResolver = resolver[definition.optionScope].override(definition);\n    properties.options = resolveAnnotationOptions(subResolver);\n    animations.update(subElement, properties);\n  }\n}\n\nfunction getOrCreateElement(elements, index, type, initProperties) {\n  const elementClass = annotationTypes[resolveType(type)];\n  let element = elements[index];\n  if (!element || !(element instanceof elementClass)) {\n    element = elements[index] = new elementClass();\n    Object.assign(element, initProperties);\n  }\n  return element;\n}\n\nfunction resolveAnnotationOptions(resolver) {\n  const elementClass = annotationTypes[resolveType(resolver.type)];\n  const result = {};\n  result.id = resolver.id;\n  result.type = resolver.type;\n  result.drawTime = resolver.drawTime;\n  Object.assign(result,\n    resolveObj(resolver, elementClass.defaults),\n    resolveObj(resolver, elementClass.defaultRoutes));\n  for (const hook of hooks$1) {\n    result[hook] = resolver[hook];\n  }\n  return result;\n}\n\nfunction resolveObj(resolver, defs) {\n  const result = {};\n  for (const prop of Object.keys(defs)) {\n    const optDefs = defs[prop];\n    const value = resolver[prop];\n    if (isIndexable(prop) && isArray(value)) {\n      result[prop] = value.map((item) => resolve(item, optDefs));\n    } else {\n      result[prop] = resolve(value, optDefs);\n    }\n  }\n  return result;\n}\n\nfunction getContext(chart, element, annotation) {\n  return element.$context || (element.$context = Object.assign(Object.create(chart.getContext()), {\n    element,\n    id: annotation.id,\n    type: 'annotation'\n  }));\n}\n\nfunction resyncElements(elements, annotations) {\n  const count = annotations.length;\n  const start = elements.length;\n\n  if (start < count) {\n    const add = count - start;\n    elements.splice(start, 0, ...new Array(add));\n  } else if (start > count) {\n    elements.splice(count, start - count);\n  }\n  return elements;\n}\n\nvar version = \"2.2.1\";\n\nconst chartStates = new Map();\nconst hooks = eventHooks.concat(elementHooks);\n\nvar annotation = {\n  id: 'annotation',\n\n  version,\n\n  beforeRegister() {\n    requireVersion('chart.js', '3.7', Chart.version);\n  },\n\n  afterRegister() {\n    Chart.register(annotationTypes);\n  },\n\n  afterUnregister() {\n    Chart.unregister(annotationTypes);\n  },\n\n  beforeInit(chart) {\n    chartStates.set(chart, {\n      annotations: [],\n      elements: [],\n      visibleElements: [],\n      listeners: {},\n      listened: false,\n      moveListened: false,\n      hooks: {},\n      hooked: false,\n      hovered: []\n    });\n  },\n\n  beforeUpdate(chart, args, options) {\n    const state = chartStates.get(chart);\n    const annotations = state.annotations = [];\n\n    let annotationOptions = options.annotations;\n    if (isObject(annotationOptions)) {\n      Object.keys(annotationOptions).forEach(key => {\n        const value = annotationOptions[key];\n        if (isObject(value)) {\n          value.id = key;\n          annotations.push(value);\n        }\n      });\n    } else if (isArray(annotationOptions)) {\n      annotations.push(...annotationOptions);\n    }\n    verifyScaleOptions(annotations, chart.scales);\n  },\n\n  afterDataLimits(chart, args) {\n    const state = chartStates.get(chart);\n    adjustScaleRange(chart, args.scale, state.annotations.filter(a => a.display && a.adjustScaleRange));\n  },\n\n  afterUpdate(chart, args, options) {\n    const state = chartStates.get(chart);\n    updateListeners(chart, state, options);\n    updateElements(chart, state, options, args.mode);\n    state.visibleElements = state.elements.filter(el => !el.skip && el.options.display);\n    updateHooks(chart, state, options);\n  },\n\n  beforeDatasetsDraw(chart, _args, options) {\n    draw(chart, 'beforeDatasetsDraw', options.clip);\n  },\n\n  afterDatasetsDraw(chart, _args, options) {\n    draw(chart, 'afterDatasetsDraw', options.clip);\n  },\n\n  beforeDraw(chart, _args, options) {\n    draw(chart, 'beforeDraw', options.clip);\n  },\n\n  afterDraw(chart, _args, options) {\n    draw(chart, 'afterDraw', options.clip);\n  },\n\n  beforeEvent(chart, args, options) {\n    const state = chartStates.get(chart);\n    if (handleEvent(state, args.event, options)) {\n      args.changed = true;\n    }\n  },\n\n  afterDestroy(chart) {\n    chartStates.delete(chart);\n  },\n\n  _getState(chart) {\n    return chartStates.get(chart);\n  },\n\n  defaults: {\n    animations: {\n      numbers: {\n        properties: ['x', 'y', 'x2', 'y2', 'width', 'height', 'centerX', 'centerY', 'pointX', 'pointY', 'radius'],\n        type: 'number'\n      },\n    },\n    clip: true,\n    interaction: {\n      mode: undefined,\n      axis: undefined,\n      intersect: undefined\n    },\n    common: {\n      drawTime: 'afterDatasetsDraw',\n      init: false,\n      label: {\n      }\n    }\n  },\n\n  descriptors: {\n    _indexable: false,\n    _scriptable: (prop) => !hooks.includes(prop) && prop !== 'init',\n    annotations: {\n      _allKeys: false,\n      _fallback: (prop, opts) => `elements.${annotationTypes[resolveType(opts.type)].id}`\n    },\n    interaction: {\n      _fallback: true\n    },\n    common: {\n      label: {\n        _indexable: isIndexable,\n        _fallback: true\n      },\n      _indexable: isIndexable\n    }\n  },\n\n  additionalOptionScopes: ['']\n};\n\nfunction draw(chart, caller, clip) {\n  const {ctx, chartArea} = chart;\n  const state = chartStates.get(chart);\n\n  if (clip) {\n    clipArea(ctx, chartArea);\n  }\n\n  const drawableElements = getDrawableElements(state.visibleElements, caller).sort((a, b) => a.element.options.z - b.element.options.z);\n  for (const item of drawableElements) {\n    drawElement(ctx, chartArea, state, item);\n  }\n\n  if (clip) {\n    unclipArea(ctx);\n  }\n}\n\nfunction getDrawableElements(elements, caller) {\n  const drawableElements = [];\n  for (const el of elements) {\n    if (el.options.drawTime === caller) {\n      drawableElements.push({element: el, main: true});\n    }\n    if (el.elements && el.elements.length) {\n      for (const sub of el.elements) {\n        if (sub.options.display && sub.options.drawTime === caller) {\n          drawableElements.push({element: sub});\n        }\n      }\n    }\n  }\n  return drawableElements;\n}\n\nfunction drawElement(ctx, chartArea, state, item) {\n  const el = item.element;\n  if (item.main) {\n    invokeHook(state, el, 'beforeDraw');\n    el.draw(ctx, chartArea);\n    invokeHook(state, el, 'afterDraw');\n  } else {\n    el.draw(ctx, chartArea);\n  }\n}\n\nexport { annotation as default };\n","import { Interaction } from 'chart.js';\nimport { valueOrDefault } from 'chart.js/helpers';\n\nfunction interpolate(chart, e, options) {\n\n\tvar items = [];\n\n\tfor (var datasetIndex = 0; datasetIndex < chart.data.datasets.length; datasetIndex++) {\n\n\n\t\t// check for interpolate setting\n\t\tif (!chart.data.datasets[datasetIndex].interpolate) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t// do not interpolate hidden charts\n\t\tif (meta.hidden) {\n\t\t\tcontinue;\n\t\t}\n\n\n\t\tvar xScale = chart.scales[meta.xAxisID];\n\t\tvar yScale = chart.scales[meta.yAxisID];\n\n\t\tvar xValue = xScale.getValueForPixel(e.x);\n\n\t\tif (xValue > xScale.max || xValue < xScale.min) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar data = chart.data.datasets[datasetIndex].data;\n\n\t\tvar index = data.findIndex(function(o) {\n\t\t\treturn o.x >= xValue;\n\t\t});\n\n\t\tif (index === -1) {\n\t\t\tcontinue;\n\t\t}\n\n\n\t\t// linear interpolate value\n\t\tvar prev = data[index - 1];\n\t\tvar next = data[index];\n\n\t\tif (prev && next) {\n\t\t\tvar slope = (next.y - prev.y) / (next.x - prev.x);\n\t\t\tvar interpolatedValue = prev.y + (xValue - prev.x) * slope;\n\t\t}\n\n\t\tif (chart.data.datasets[datasetIndex].steppedLine && prev) {\n\t\t\tinterpolatedValue = prev.y;\n\t\t}\n\n\t\tif (isNaN(interpolatedValue)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar yPosition = yScale.getPixelForValue(interpolatedValue);\n\n\t\t// do not interpolate values outside of the axis limits\n\t\tif (isNaN(yPosition)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// create a 'fake' event point\n\n\t\tvar fakePoint = {\n\t\t\thasValue: function() {\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\ttooltipPosition: function() {\n\t\t\t\treturn this._model\n\t\t\t},\n\t\t\t_model: {x: e.x, y: yPosition},\n\t\t\tskip: false,\n\t\t\tstop: false,\n\t\t\tx: xValue,\n\t\t\ty: interpolatedValue\n\t\t};\n\n\t\titems.push({datasetIndex: datasetIndex, element: fakePoint, index: 0});\n\t}\n\n\n\t// add other, not interpolated, items\n\tvar xItems = Interaction.modes.x(chart, e, options);\n\tfor (index = 0; index < xItems.length; index++) {\n\t\tvar item = xItems[index];\n\t\tif (!chart.data.datasets[item.datasetIndex].interpolate) {\n\t\t\titems.push(item);\n\t\t}\n\t}\n\n\treturn items;\n}\n\nvar defaultOptions = {\n  line: {\n    color: '#F66',\n    width: 1,\n    dashPattern: []\n  },\n  sync: {\n    enabled: true,\n    group: 1,\n    suppressTooltips: false\n  },\n  zoom: {\n    enabled: true,\n    zoomboxBackgroundColor: 'rgba(66,133,244,0.2)',\n    zoomboxBorderColor: '#48F',\n    zoomButtonText: 'Reset Zoom',\n    zoomButtonClass: 'reset-zoom',\n  },\n  snap: {\n    enabled: false,\n  },\n  callbacks: {\n    beforeZoom: function(start, end) {\n      return true;\n    },\n    afterZoom: function(start, end) {\n    }\n  }\n};\n\nvar CrosshairPlugin = {\n\n  id: 'crosshair',\n\n  afterInit: function(chart) {\n    \n    if (!chart.config.options.scales.x) {\n      return\n    }\n\n    var xScaleType = chart.config.options.scales.x.type;\n\n    if (xScaleType !== 'linear' && xScaleType !== 'time' && xScaleType !== 'category' && xScaleType !== 'logarithmic') {\n      return;\n    }\n\n    if (chart.options.plugins.crosshair === undefined) {\n      chart.options.plugins.crosshair = defaultOptions;\n    }\n\n    chart.crosshair = {\n      enabled: false,\n      suppressUpdate: false,\n      x: null,\n      originalData: [],\n      originalXRange: {},\n      dragStarted: false,\n      dragStartX: null,\n      dragEndX: null,\n      suppressTooltips: false,\n      ignoreNextEvents: 0,\n      reset: function() {\n        this.resetZoom(chart, false, false);\n      }.bind(this)\n    };\n\n    var syncEnabled = this.getOption(chart, 'sync', 'enabled');\n    if (syncEnabled) {\n      chart.crosshair.syncEventHandler = function(e) {\n        this.handleSyncEvent(chart, e);\n      }.bind(this);\n\n      chart.crosshair.resetZoomEventHandler = function(e) {\n\n        var syncGroup = this.getOption(chart, 'sync', 'group');\n\n        if (e.chartId !== chart.id && e.syncGroup === syncGroup) {\n          this.resetZoom(chart, true);\n        }\n      }.bind(this);\n\n      window.addEventListener('sync-event', chart.crosshair.syncEventHandler);\n      window.addEventListener('reset-zoom-event', chart.crosshair.resetZoomEventHandler);\n    }\n\n    chart.panZoom = this.panZoom.bind(this, chart);\n  },\n\n  destroy: function(chart) {\n    var syncEnabled = this.getOption(chart, 'sync', 'enabled');\n    if (syncEnabled) {\n      window.removeEventListener('sync-event', chart.crosshair.syncEventHandler);\n      window.removeEventListener('reset-zoom-event', chart.crosshair.resetZoomEventHandler);\n    }\n  },\n\n  panZoom: function(chart, increment) {\n    if (chart.crosshair.originalData.length === 0) {\n      return;\n    }\n    var diff = chart.crosshair.end - chart.crosshair.start;\n    var min = chart.crosshair.min;\n    var max = chart.crosshair.max;\n    if (increment < 0) { // left\n      chart.crosshair.start = Math.max(chart.crosshair.start + increment, min);\n      chart.crosshair.end = chart.crosshair.start === min ? min + diff : chart.crosshair.end + increment;\n    } else { // right\n      chart.crosshair.end = Math.min(chart.crosshair.end + increment, chart.crosshair.max);\n      chart.crosshair.start = chart.crosshair.end === max ? max - diff : chart.crosshair.start + increment;\n    }\n\n    this.doZoom(chart, chart.crosshair.start, chart.crosshair.end);\n  },\n\n  getOption: function(chart, category, name) {\n    return valueOrDefault(chart.options.plugins.crosshair[category] ? chart.options.plugins.crosshair[category][name] : undefined, defaultOptions[category][name]);\n  },\n\n  getXScale: function(chart) {\n    return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;\n  },\n  getYScale: function(chart) {\n    return chart.scales[chart.getDatasetMeta(0).yAxisID];\n  },\n\n  handleSyncEvent: function(chart, e) {\n\n    var syncGroup = this.getOption(chart, 'sync', 'group');\n\n    // stop if the sync event was fired from this chart\n    if (e.chartId === chart.id) {\n      return;\n    }\n\n    // stop if the sync event was fired from a different group\n    if (e.syncGroup !== syncGroup) {\n      return;\n    }\n\n    var xScale = this.getXScale(chart);\n\n    if (!xScale) {\n      return;\n    }\n\n    // Safari fix\n    var buttons = (e.original.native.buttons === undefined ? e.original.native.which : e.original.native.buttons);\n    if (e.original.type === 'mouseup') {\n      buttons = 0;\n    }\n\n\n    var newEvent = {\n      type: e.original.type == \"click\" ? \"mousemove\" : e.original.type,  // do not transmit click events to prevent unwanted changing of synced charts. We do need to transmit a event to stop zooming on synced charts however.\n      chart: chart,\n      x: xScale.getPixelForValue(e.xValue),\n      y: e.original.y,\n      native: {\n        buttons: buttons\n      },\n      stop: true\n    };\n    chart._eventHandler(newEvent);\n  },\n\n  afterEvent: function(chart, event) {\n\n    if (chart.config.options.scales.x.length == 0) {\n      return\n    }\n\n    let e = event.event;\n\n    var xScaleType = chart.config.options.scales.x.type;\n\n    if (xScaleType !== 'linear' && xScaleType !== 'time' && xScaleType !== 'category' && xscaleType !== 'logarithmic') {\n      return;\n    }\n\n    var xScale = this.getXScale(chart);\n\n    if (!xScale) {\n      return;\n    }\n\n    if(chart.crosshair.ignoreNextEvents > 0) {\n      chart.crosshair.ignoreNextEvents -= 1;\n      return;\n    }\n\n    // fix for Safari\n    var buttons = (e.native.buttons === undefined ? e.native.which : e.native.buttons);\n    if (e.native.type === 'mouseup') {\n      buttons = 0;\n    }\n\n    var syncEnabled = this.getOption(chart, 'sync', 'enabled');\n    var syncGroup = this.getOption(chart, 'sync', 'group');\n\n    // fire event for all other linked charts\n    if (!e.stop && syncEnabled) {\n      var event = new CustomEvent('sync-event');\n      event.chartId = chart.id;\n      event.syncGroup = syncGroup;\n      event.original = e;\n      event.xValue = xScale.getValueForPixel(e.x);\n      window.dispatchEvent(event);\n    }\n\n    // suppress tooltips for linked charts\n    var suppressTooltips = this.getOption(chart, 'sync', 'suppressTooltips');\n\n    chart.crosshair.suppressTooltips = e.stop && suppressTooltips;\n\n    chart.crosshair.enabled = (e.type !== 'mouseout' && (e.x > xScale.getPixelForValue(xScale.min) && e.x < xScale.getPixelForValue(xScale.max)));\n\n    if (!chart.crosshair.enabled && !chart.crosshair.suppressUpdate) {\n      if (e.x > xScale.getPixelForValue(xScale.max)) {\n        // suppress future updates to prevent endless redrawing of chart\n        chart.crosshair.suppressUpdate = true;\n        chart.update('none');\n      }\n      chart.crosshair.dragStarted = false; // cancel zoom in progress\n      return false;\n    }\n    chart.crosshair.suppressUpdate = false;\n\n    // handle drag to zoom\n    var zoomEnabled = this.getOption(chart, 'zoom', 'enabled');\n\n    if (buttons === 1 && !chart.crosshair.dragStarted && zoomEnabled) {\n      chart.crosshair.dragStartX = e.x;\n      chart.crosshair.dragStarted = true;\n    }\n\n    // handle drag to zoom\n    if (chart.crosshair.dragStarted && buttons === 0) {\n      chart.crosshair.dragStarted = false;\n\n      var start = xScale.getValueForPixel(chart.crosshair.dragStartX);\n      var end = xScale.getValueForPixel(chart.crosshair.x);\n\n      if (Math.abs(chart.crosshair.dragStartX - chart.crosshair.x) > 1) {\n        this.doZoom(chart, start, end);\n      }\n      chart.update('none');\n    }\n\n    chart.crosshair.x = e.x;\n\n\n    chart.draw();\n\n  },\n\n  afterDraw: function(chart) {\n\n    if (!chart.crosshair.enabled) {\n      return;\n    }\n\n    if (chart.crosshair.dragStarted) {\n      this.drawZoombox(chart);\n    } else {\n      this.drawTraceLine(chart);\n      this.interpolateValues(chart);\n      this.drawTracePoints(chart);\n    }\n\n    return true;\n  },\n\n  beforeTooltipDraw: function(chart) {\n    // suppress tooltips on dragging\n    return !chart.crosshair.dragStarted && !chart.crosshair.suppressTooltips;\n  },\n\n  resetZoom: function(chart) {\n\n    var stop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var update = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    if (update) {\n      if (chart.crosshair.originalData.length > 0) {\n        // reset original data\n        for (var datasetIndex = 0; datasetIndex < chart.data.datasets.length; datasetIndex++) {\n          var dataset = chart.data.datasets[datasetIndex];\n          dataset.data = chart.crosshair.originalData.shift(0);\n        }\n      }\n\n      // reset original xRange\n      if (chart.crosshair.originalXRange.min) {\n        chart.options.scales.x.min = chart.crosshair.originalXRange.min;\n        chart.crosshair.originalXRange.min = null;\n      } else {\n        delete chart.options.scales.x.min;\n      }\n      if (chart.crosshair.originalXRange.max) {\n        chart.options.scales.x.max = chart.crosshair.originalXRange.max;\n        chart.crosshair.originalXRange.max = null;\n      } else {\n        delete chart.options.scales.x.max;\n      }\n    }\n\n    if (chart.crosshair.button && chart.crosshair.button.parentNode) {\n      chart.crosshair.button.parentNode.removeChild(chart.crosshair.button);\n      chart.crosshair.button = false;\n    }\n\n    var syncEnabled = this.getOption(chart, 'sync', 'enabled');\n\n    if (!stop && update && syncEnabled) {\n\n      var syncGroup = this.getOption(chart, 'sync', 'group');\n\n      var event = new CustomEvent('reset-zoom-event');\n      event.chartId = chart.id;\n      event.syncGroup = syncGroup;\n      window.dispatchEvent(event);\n    }\n    if (update) {\n      chart.update('none');\n    }\n  },\n\n  doZoom: function(chart, start, end) {\n\n    // swap start/end if user dragged from right to left\n    if (start > end) {\n      var tmp = start;\n      start = end;\n      end = tmp;\n    }\n\n    // notify delegate\n    var beforeZoomCallback = valueOrDefault(chart.options.plugins.crosshair.callbacks ? chart.options.plugins.crosshair.callbacks.beforeZoom : undefined, defaultOptions.callbacks.beforeZoom);\n\n    if (!beforeZoomCallback(start, end)) {\n      return false;\n    }\n\n    chart.crosshair.dragStarted = false;\n\n    if (chart.options.scales.x.min && chart.crosshair.originalData.length === 0) {\n      chart.crosshair.originalXRange.min = chart.options.scales.x.min;\n    }\n    if (chart.options.scales.x.max && chart.crosshair.originalData.length === 0) {\n      chart.crosshair.originalXRange.max = chart.options.scales.x.max;\n    }\n\n    if (!chart.crosshair.button) {\n      // add restore zoom button\n      var button = document.createElement('button');\n\n      var buttonText = this.getOption(chart, 'zoom', 'zoomButtonText');\n      var buttonClass = this.getOption(chart, 'zoom', 'zoomButtonClass');\n\n      var buttonLabel = document.createTextNode(buttonText);\n      button.appendChild(buttonLabel);\n      button.className = buttonClass;\n      button.addEventListener('click', function() {\n        this.resetZoom(chart);\n      }.bind(this));\n      chart.canvas.parentNode.appendChild(button);\n      chart.crosshair.button = button;\n    }\n\n    // set axis scale\n    chart.options.scales.x.min = start;\n    chart.options.scales.x.max = end;\n\n    // make a copy of the original data for later restoration\n\n    var storeOriginals = (chart.crosshair.originalData.length === 0) ? true : false;\n\n\n    var filterDataset = (chart.config.options.scales.x.type !== 'category');\n\n    if(filterDataset) {\n\n\n      for (var datasetIndex = 0; datasetIndex < chart.data.datasets.length; datasetIndex++) {\n\n        var newData = [];\n\n        var index = 0;\n        var started = false;\n        var stop = false;\n        if (storeOriginals) {\n          chart.crosshair.originalData[datasetIndex] = chart.data.datasets[datasetIndex].data;\n        }\n\n        var sourceDataset = chart.crosshair.originalData[datasetIndex];\n\n        for (var oldDataIndex = 0; oldDataIndex < sourceDataset.length; oldDataIndex++) {\n\n          var oldData = sourceDataset[oldDataIndex];\n          // var oldDataX = this.getXScale(chart).getRightValue(oldData)\n          var oldDataX = oldData.x !== undefined ? oldData.x : NaN;\n\n          // append one value outside of bounds\n          if (oldDataX >= start && !started && index > 0) {\n            newData.push(sourceDataset[index - 1]);\n            started = true;\n          }\n          if (oldDataX >= start && oldDataX <= end) {\n            newData.push(oldData);\n          }\n          if (oldDataX > end && !stop && index < sourceDataset.length) {\n            newData.push(oldData);\n            stop = true;\n          }\n          index += 1;\n        }\n\n        chart.data.datasets[datasetIndex].data = newData;\n      }\n    }\n\n    chart.crosshair.start = start;\n    chart.crosshair.end = end;\n\n\n    if (storeOriginals) {\n      var xAxes = this.getXScale(chart);\n      chart.crosshair.min = xAxes.min;\n      chart.crosshair.max = xAxes.max;\n    }\n\n    chart.crosshair.ignoreNextEvents = 2; // ignore next 2 events to prevent starting a new zoom action after updating the chart\n\n    chart.update('none');\n\n\n    var afterZoomCallback = this.getOption(chart, 'callbacks', 'afterZoom');\n\n    afterZoomCallback(start, end);\n  },\n\n  drawZoombox: function(chart) {\n\n    var yScale = this.getYScale(chart);\n\n    var borderColor = this.getOption(chart, 'zoom', 'zoomboxBorderColor');\n    var fillColor = this.getOption(chart, 'zoom', 'zoomboxBackgroundColor');\n\n    chart.ctx.beginPath();\n    chart.ctx.rect(chart.crosshair.dragStartX, yScale.getPixelForValue(yScale.max), chart.crosshair.x - chart.crosshair.dragStartX, yScale.getPixelForValue(yScale.min) - yScale.getPixelForValue(yScale.max));\n    chart.ctx.lineWidth = 1;\n    chart.ctx.strokeStyle = borderColor;\n    chart.ctx.fillStyle = fillColor;\n    chart.ctx.fill();\n    chart.ctx.fillStyle = '';\n    chart.ctx.stroke();\n    chart.ctx.closePath();\n  },\n\n  drawTraceLine: function(chart) {\n\n    var yScale = this.getYScale(chart);\n\n    var lineWidth = this.getOption(chart, 'line', 'width');\n    var color = this.getOption(chart, 'line', 'color');\n    var dashPattern = this.getOption(chart, 'line', 'dashPattern');\n    var snapEnabled = this.getOption(chart, 'snap', 'enabled');\n\n    var lineX = chart.crosshair.x;\n\n    if (snapEnabled && chart._active.length) {\n      lineX = chart._active[0].element.x;\n    }\n\n    chart.ctx.beginPath();\n    chart.ctx.setLineDash(dashPattern);\n    chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));\n    chart.ctx.lineWidth = lineWidth;\n    chart.ctx.strokeStyle = color;\n    chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));\n    chart.ctx.stroke();\n    chart.ctx.setLineDash([]);\n\n  },\n\n  drawTracePoints: function(chart) {\n\n    for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n\n      var dataset = chart.data.datasets[chartIndex];\n      var meta = chart.getDatasetMeta(chartIndex);\n\n      var yScale = chart.scales[meta.yAxisID];\n\n      if (meta.hidden || !dataset.interpolate) {\n        continue;\n      }\n\n      chart.ctx.beginPath();\n      chart.ctx.arc(chart.crosshair.x, yScale.getPixelForValue(dataset.interpolatedValue), 3, 0, 2 * Math.PI, false);\n      chart.ctx.fillStyle = 'white';\n      chart.ctx.lineWidth = 2;\n      chart.ctx.strokeStyle = dataset.borderColor;\n      chart.ctx.fill();\n      chart.ctx.stroke();\n\n    }\n\n  },\n\n  interpolateValues: function(chart) {\n\n    for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n\n      var dataset = chart.data.datasets[chartIndex];\n\n      var meta = chart.getDatasetMeta(chartIndex);\n\n      var xScale = chart.scales[meta.xAxisID];\n      var xValue = xScale.getValueForPixel(chart.crosshair.x);\n\n      if (meta.hidden || !dataset.interpolate) {\n        continue;\n      }\n\n      var data = dataset.data;\n      var index = data.findIndex(function(o) {\n        return o.x >= xValue;\n      });\n      var prev = data[index - 1];\n      var next = data[index];\n\n      if (chart.data.datasets[chartIndex].steppedLine && prev) {\n        dataset.interpolatedValue = prev.y;\n      } else if (prev && next) {\n        var slope = (next.y - prev.y) / (next.x - prev.x);\n        dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;\n      } else {\n        dataset.interpolatedValue = NaN;\n      }\n    }\n\n  }\n\n};\n\nexport default CrosshairPlugin;\nexport { CrosshairPlugin, interpolate as Interpolate };\n","/*! choices.js v10.1.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 282:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar addChoice = function (_a) {\n  var value = _a.value,\n      label = _a.label,\n      id = _a.id,\n      groupId = _a.groupId,\n      disabled = _a.disabled,\n      elementId = _a.elementId,\n      customProperties = _a.customProperties,\n      placeholder = _a.placeholder,\n      keyCode = _a.keyCode;\n  return {\n    type: constants_1.ACTION_TYPES.ADD_CHOICE,\n    value: value,\n    label: label,\n    id: id,\n    groupId: groupId,\n    disabled: disabled,\n    elementId: elementId,\n    customProperties: customProperties,\n    placeholder: placeholder,\n    keyCode: keyCode\n  };\n};\n\nexports.addChoice = addChoice;\n\nvar filterChoices = function (results) {\n  return {\n    type: constants_1.ACTION_TYPES.FILTER_CHOICES,\n    results: results\n  };\n};\n\nexports.filterChoices = filterChoices;\n\nvar activateChoices = function (active) {\n  if (active === void 0) {\n    active = true;\n  }\n\n  return {\n    type: constants_1.ACTION_TYPES.ACTIVATE_CHOICES,\n    active: active\n  };\n};\n\nexports.activateChoices = activateChoices;\n\nvar clearChoices = function () {\n  return {\n    type: constants_1.ACTION_TYPES.CLEAR_CHOICES\n  };\n};\n\nexports.clearChoices = clearChoices;\n\n/***/ }),\n\n/***/ 783:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.addGroup = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar addGroup = function (_a) {\n  var value = _a.value,\n      id = _a.id,\n      active = _a.active,\n      disabled = _a.disabled;\n  return {\n    type: constants_1.ACTION_TYPES.ADD_GROUP,\n    value: value,\n    id: id,\n    active: active,\n    disabled: disabled\n  };\n};\n\nexports.addGroup = addGroup;\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.highlightItem = exports.removeItem = exports.addItem = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar addItem = function (_a) {\n  var value = _a.value,\n      label = _a.label,\n      id = _a.id,\n      choiceId = _a.choiceId,\n      groupId = _a.groupId,\n      customProperties = _a.customProperties,\n      placeholder = _a.placeholder,\n      keyCode = _a.keyCode;\n  return {\n    type: constants_1.ACTION_TYPES.ADD_ITEM,\n    value: value,\n    label: label,\n    id: id,\n    choiceId: choiceId,\n    groupId: groupId,\n    customProperties: customProperties,\n    placeholder: placeholder,\n    keyCode: keyCode\n  };\n};\n\nexports.addItem = addItem;\n\nvar removeItem = function (id, choiceId) {\n  return {\n    type: constants_1.ACTION_TYPES.REMOVE_ITEM,\n    id: id,\n    choiceId: choiceId\n  };\n};\n\nexports.removeItem = removeItem;\n\nvar highlightItem = function (id, highlighted) {\n  return {\n    type: constants_1.ACTION_TYPES.HIGHLIGHT_ITEM,\n    id: id,\n    highlighted: highlighted\n  };\n};\n\nexports.highlightItem = highlightItem;\n\n/***/ }),\n\n/***/ 137:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.setIsLoading = exports.resetTo = exports.clearAll = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar clearAll = function () {\n  return {\n    type: constants_1.ACTION_TYPES.CLEAR_ALL\n  };\n};\n\nexports.clearAll = clearAll;\n\nvar resetTo = function (state) {\n  return {\n    type: constants_1.ACTION_TYPES.RESET_TO,\n    state: state\n  };\n};\n\nexports.resetTo = resetTo;\n\nvar setIsLoading = function (isLoading) {\n  return {\n    type: constants_1.ACTION_TYPES.SET_IS_LOADING,\n    isLoading: isLoading\n  };\n};\n\nexports.setIsLoading = setIsLoading;\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar deepmerge_1 = __importDefault(__webpack_require__(996));\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nvar fuse_js_1 = __importDefault(__webpack_require__(221));\n\nvar choices_1 = __webpack_require__(282);\n\nvar groups_1 = __webpack_require__(783);\n\nvar items_1 = __webpack_require__(464);\n\nvar misc_1 = __webpack_require__(137);\n\nvar components_1 = __webpack_require__(520);\n\nvar constants_1 = __webpack_require__(883);\n\nvar defaults_1 = __webpack_require__(789);\n\nvar utils_1 = __webpack_require__(799);\n\nvar reducers_1 = __webpack_require__(655);\n\nvar store_1 = __importDefault(__webpack_require__(744));\n\nvar templates_1 = __importDefault(__webpack_require__(686));\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\n\n\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson<josh@joshuajohnson.co.uk>\n */\n\nvar Choices =\n/** @class */\nfunction () {\n  function Choices(element, userConfig) {\n    var _this = this;\n\n    if (element === void 0) {\n      element = '[data-choice]';\n    }\n\n    if (userConfig === void 0) {\n      userConfig = {};\n    }\n\n    if (userConfig.allowHTML === undefined) {\n      console.warn('Deprecation warning: allowHTML will default to false in a future release. To render HTML in Choices, you will need to set it to true. Setting allowHTML will suppress this message.');\n    }\n\n    this.config = deepmerge_1.default.all([defaults_1.DEFAULT_CONFIG, Choices.defaults.options, userConfig], // When merging array configs, replace with a copy of the userConfig array,\n    // instead of concatenating with the default array\n    {\n      arrayMerge: function (_, sourceArray) {\n        return __spreadArray([], sourceArray, true);\n      }\n    });\n    var invalidConfigOptions = (0, utils_1.diff)(this.config, defaults_1.DEFAULT_CONFIG);\n\n    if (invalidConfigOptions.length) {\n      console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n    }\n\n    var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n\n    if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n      throw TypeError('Expected one of the following types text|select-one|select-multiple');\n    }\n\n    this._isTextElement = passedElement.type === constants_1.TEXT_TYPE;\n    this._isSelectOneElement = passedElement.type === constants_1.SELECT_ONE_TYPE;\n    this._isSelectMultipleElement = passedElement.type === constants_1.SELECT_MULTIPLE_TYPE;\n    this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n    this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n\n    if (!['auto', 'always'].includes(\"\".concat(this.config.renderSelectedChoices))) {\n      this.config.renderSelectedChoices = 'auto';\n    }\n\n    if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n      var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n      this.config.addItemFilter = re.test.bind(re);\n    }\n\n    if (this._isTextElement) {\n      this.passedElement = new components_1.WrappedInput({\n        element: passedElement,\n        classNames: this.config.classNames,\n        delimiter: this.config.delimiter\n      });\n    } else {\n      this.passedElement = new components_1.WrappedSelect({\n        element: passedElement,\n        classNames: this.config.classNames,\n        template: function (data) {\n          return _this._templates.option(data);\n        }\n      });\n    }\n\n    this.initialised = false;\n    this._store = new store_1.default();\n    this._initialState = reducers_1.defaultState;\n    this._currentState = reducers_1.defaultState;\n    this._prevState = reducers_1.defaultState;\n    this._currentValue = '';\n    this._canSearch = !!this.config.searchEnabled;\n    this._isScrollingOnIe = false;\n    this._highlightPosition = 0;\n    this._wasTap = true;\n    this._placeholderValue = this._generatePlaceholderValue();\n    this._baseId = (0, utils_1.generateId)(this.passedElement.element, 'choices-');\n    /**\n     * setting direction in cases where it's explicitly set on passedElement\n     * or when calculated direction is different from the document\n     */\n\n    this._direction = this.passedElement.dir;\n\n    if (!this._direction) {\n      var elementDirection = window.getComputedStyle(this.passedElement.element).direction;\n      var documentDirection = window.getComputedStyle(document.documentElement).direction;\n\n      if (elementDirection !== documentDirection) {\n        this._direction = elementDirection;\n      }\n    }\n\n    this._idNames = {\n      itemChoice: 'item-choice'\n    };\n\n    if (this._isSelectElement) {\n      // Assign preset groups from passed element\n      this._presetGroups = this.passedElement.optionGroups; // Assign preset options from passed element\n\n      this._presetOptions = this.passedElement.options;\n    } // Assign preset choices from passed object\n\n\n    this._presetChoices = this.config.choices; // Assign preset items from passed object first\n\n    this._presetItems = this.config.items; // Add any values passed from attribute\n\n    if (this.passedElement.value && this._isTextElement) {\n      var splitValues = this.passedElement.value.split(this.config.delimiter);\n      this._presetItems = this._presetItems.concat(splitValues);\n    } // Create array of choices from option elements\n\n\n    if (this.passedElement.options) {\n      this.passedElement.options.forEach(function (option) {\n        _this._presetChoices.push({\n          value: option.value,\n          label: option.innerHTML,\n          selected: !!option.selected,\n          disabled: option.disabled || option.parentNode.disabled,\n          placeholder: option.value === '' || option.hasAttribute('placeholder'),\n          customProperties: option.dataset['custom-properties']\n        });\n      });\n    }\n\n    this._render = this._render.bind(this);\n    this._onFocus = this._onFocus.bind(this);\n    this._onBlur = this._onBlur.bind(this);\n    this._onKeyUp = this._onKeyUp.bind(this);\n    this._onKeyDown = this._onKeyDown.bind(this);\n    this._onClick = this._onClick.bind(this);\n    this._onTouchMove = this._onTouchMove.bind(this);\n    this._onTouchEnd = this._onTouchEnd.bind(this);\n    this._onMouseDown = this._onMouseDown.bind(this);\n    this._onMouseOver = this._onMouseOver.bind(this);\n    this._onFormReset = this._onFormReset.bind(this);\n    this._onSelectKey = this._onSelectKey.bind(this);\n    this._onEnterKey = this._onEnterKey.bind(this);\n    this._onEscapeKey = this._onEscapeKey.bind(this);\n    this._onDirectionKey = this._onDirectionKey.bind(this);\n    this._onDeleteKey = this._onDeleteKey.bind(this); // If element has already been initialised with Choices, fail silently\n\n    if (this.passedElement.isActive) {\n      if (!this.config.silent) {\n        console.warn('Trying to initialise Choices on element already initialised', {\n          element: element\n        });\n      }\n\n      this.initialised = true;\n      return;\n    } // Let's go\n\n\n    this.init();\n  }\n\n  Object.defineProperty(Choices, \"defaults\", {\n    get: function () {\n      return Object.preventExtensions({\n        get options() {\n          return USER_DEFAULTS;\n        },\n\n        get templates() {\n          return templates_1.default;\n        }\n\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Choices.prototype.init = function () {\n    if (this.initialised) {\n      return;\n    }\n\n    this._createTemplates();\n\n    this._createElements();\n\n    this._createStructure();\n\n    this._store.subscribe(this._render);\n\n    this._render();\n\n    this._addEventListeners();\n\n    var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n\n    if (shouldDisable) {\n      this.disable();\n    }\n\n    this.initialised = true;\n    var callbackOnInit = this.config.callbackOnInit; // Run callback if it is a function\n\n    if (callbackOnInit && typeof callbackOnInit === 'function') {\n      callbackOnInit.call(this);\n    }\n  };\n\n  Choices.prototype.destroy = function () {\n    if (!this.initialised) {\n      return;\n    }\n\n    this._removeEventListeners();\n\n    this.passedElement.reveal();\n    this.containerOuter.unwrap(this.passedElement.element);\n    this.clearStore();\n\n    if (this._isSelectElement) {\n      this.passedElement.options = this._presetOptions;\n    }\n\n    this._templates = templates_1.default;\n    this.initialised = false;\n  };\n\n  Choices.prototype.enable = function () {\n    if (this.passedElement.isDisabled) {\n      this.passedElement.enable();\n    }\n\n    if (this.containerOuter.isDisabled) {\n      this._addEventListeners();\n\n      this.input.enable();\n      this.containerOuter.enable();\n    }\n\n    return this;\n  };\n\n  Choices.prototype.disable = function () {\n    if (!this.passedElement.isDisabled) {\n      this.passedElement.disable();\n    }\n\n    if (!this.containerOuter.isDisabled) {\n      this._removeEventListeners();\n\n      this.input.disable();\n      this.containerOuter.disable();\n    }\n\n    return this;\n  };\n\n  Choices.prototype.highlightItem = function (item, runEvent) {\n    if (runEvent === void 0) {\n      runEvent = true;\n    }\n\n    if (!item || !item.id) {\n      return this;\n    }\n\n    var id = item.id,\n        _a = item.groupId,\n        groupId = _a === void 0 ? -1 : _a,\n        _b = item.value,\n        value = _b === void 0 ? '' : _b,\n        _c = item.label,\n        label = _c === void 0 ? '' : _c;\n    var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n    this._store.dispatch((0, items_1.highlightItem)(id, true));\n\n    if (runEvent) {\n      this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n        id: id,\n        value: value,\n        label: label,\n        groupValue: group && group.value ? group.value : null\n      });\n    }\n\n    return this;\n  };\n\n  Choices.prototype.unhighlightItem = function (item) {\n    if (!item || !item.id) {\n      return this;\n    }\n\n    var id = item.id,\n        _a = item.groupId,\n        groupId = _a === void 0 ? -1 : _a,\n        _b = item.value,\n        value = _b === void 0 ? '' : _b,\n        _c = item.label,\n        label = _c === void 0 ? '' : _c;\n    var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n    this._store.dispatch((0, items_1.highlightItem)(id, false));\n\n    this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n      id: id,\n      value: value,\n      label: label,\n      groupValue: group && group.value ? group.value : null\n    });\n    return this;\n  };\n\n  Choices.prototype.highlightAll = function () {\n    var _this = this;\n\n    this._store.items.forEach(function (item) {\n      return _this.highlightItem(item);\n    });\n\n    return this;\n  };\n\n  Choices.prototype.unhighlightAll = function () {\n    var _this = this;\n\n    this._store.items.forEach(function (item) {\n      return _this.unhighlightItem(item);\n    });\n\n    return this;\n  };\n\n  Choices.prototype.removeActiveItemsByValue = function (value) {\n    var _this = this;\n\n    this._store.activeItems.filter(function (item) {\n      return item.value === value;\n    }).forEach(function (item) {\n      return _this._removeItem(item);\n    });\n\n    return this;\n  };\n\n  Choices.prototype.removeActiveItems = function (excludedId) {\n    var _this = this;\n\n    this._store.activeItems.filter(function (_a) {\n      var id = _a.id;\n      return id !== excludedId;\n    }).forEach(function (item) {\n      return _this._removeItem(item);\n    });\n\n    return this;\n  };\n\n  Choices.prototype.removeHighlightedItems = function (runEvent) {\n    var _this = this;\n\n    if (runEvent === void 0) {\n      runEvent = false;\n    }\n\n    this._store.highlightedActiveItems.forEach(function (item) {\n      _this._removeItem(item); // If this action was performed by the user\n      // trigger the event\n\n\n      if (runEvent) {\n        _this._triggerChange(item.value);\n      }\n    });\n\n    return this;\n  };\n\n  Choices.prototype.showDropdown = function (preventInputFocus) {\n    var _this = this;\n\n    if (this.dropdown.isActive) {\n      return this;\n    }\n\n    requestAnimationFrame(function () {\n      _this.dropdown.show();\n\n      _this.containerOuter.open(_this.dropdown.distanceFromTopWindow);\n\n      if (!preventInputFocus && _this._canSearch) {\n        _this.input.focus();\n      }\n\n      _this.passedElement.triggerEvent(constants_1.EVENTS.showDropdown, {});\n    });\n    return this;\n  };\n\n  Choices.prototype.hideDropdown = function (preventInputBlur) {\n    var _this = this;\n\n    if (!this.dropdown.isActive) {\n      return this;\n    }\n\n    requestAnimationFrame(function () {\n      _this.dropdown.hide();\n\n      _this.containerOuter.close();\n\n      if (!preventInputBlur && _this._canSearch) {\n        _this.input.removeActiveDescendant();\n\n        _this.input.blur();\n      }\n\n      _this.passedElement.triggerEvent(constants_1.EVENTS.hideDropdown, {});\n    });\n    return this;\n  };\n\n  Choices.prototype.getValue = function (valueOnly) {\n    if (valueOnly === void 0) {\n      valueOnly = false;\n    }\n\n    var values = this._store.activeItems.reduce(function (selectedItems, item) {\n      var itemValue = valueOnly ? item.value : item;\n      selectedItems.push(itemValue);\n      return selectedItems;\n    }, []);\n\n    return this._isSelectOneElement ? values[0] : values;\n  };\n\n  Choices.prototype.setValue = function (items) {\n    var _this = this;\n\n    if (!this.initialised) {\n      return this;\n    }\n\n    items.forEach(function (value) {\n      return _this._setChoiceOrItem(value);\n    });\n    return this;\n  };\n\n  Choices.prototype.setChoiceByValue = function (value) {\n    var _this = this;\n\n    if (!this.initialised || this._isTextElement) {\n      return this;\n    } // If only one value has been passed, convert to array\n\n\n    var choiceValue = Array.isArray(value) ? value : [value]; // Loop through each value and\n\n    choiceValue.forEach(function (val) {\n      return _this._findAndSelectChoiceByValue(val);\n    });\n    return this;\n  };\n  /**\n   * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n   * a value field name and a label field name.\n   * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n   * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n   * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n   *\n   * **Input types affected:** select-one, select-multiple\n   *\n   * @example\n   * ```js\n   * const example = new Choices(element);\n   *\n   * example.setChoices([\n   *   {value: 'One', label: 'Label One', disabled: true},\n   *   {value: 'Two', label: 'Label Two', selected: true},\n   *   {value: 'Three', label: 'Label Three'},\n   * ], 'value', 'label', false);\n   * ```\n   *\n   * @example\n   * ```js\n   * const example = new Choices(element);\n   *\n   * example.setChoices(async () => {\n   *   try {\n   *      const items = await fetch('/items');\n   *      return items.json()\n   *   } catch(err) {\n   *      console.error(err)\n   *   }\n   * });\n   * ```\n   *\n   * @example\n   * ```js\n   * const example = new Choices(element);\n   *\n   * example.setChoices([{\n   *   label: 'Group one',\n   *   id: 1,\n   *   disabled: false,\n   *   choices: [\n   *     {value: 'Child One', label: 'Child One', selected: true},\n   *     {value: 'Child Two', label: 'Child Two',  disabled: true},\n   *     {value: 'Child Three', label: 'Child Three'},\n   *   ]\n   * },\n   * {\n   *   label: 'Group two',\n   *   id: 2,\n   *   disabled: false,\n   *   choices: [\n   *     {value: 'Child Four', label: 'Child Four', disabled: true},\n   *     {value: 'Child Five', label: 'Child Five'},\n   *     {value: 'Child Six', label: 'Child Six', customProperties: {\n   *       description: 'Custom description about child six',\n   *       random: 'Another random custom property'\n   *     }},\n   *   ]\n   * }], 'value', 'label', false);\n   * ```\n   */\n\n\n  Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices) {\n    var _this = this;\n\n    if (choicesArrayOrFetcher === void 0) {\n      choicesArrayOrFetcher = [];\n    }\n\n    if (value === void 0) {\n      value = 'value';\n    }\n\n    if (label === void 0) {\n      label = 'label';\n    }\n\n    if (replaceChoices === void 0) {\n      replaceChoices = false;\n    }\n\n    if (!this.initialised) {\n      throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n    }\n\n    if (!this._isSelectElement) {\n      throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n    }\n\n    if (typeof value !== 'string' || !value) {\n      throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n    } // Clear choices if needed\n\n\n    if (replaceChoices) {\n      this.clearChoices();\n    }\n\n    if (typeof choicesArrayOrFetcher === 'function') {\n      // it's a choices fetcher function\n      var fetcher_1 = choicesArrayOrFetcher(this);\n\n      if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n        // that's a promise\n        // eslint-disable-next-line no-promise-executor-return\n        return new Promise(function (resolve) {\n          return requestAnimationFrame(resolve);\n        }).then(function () {\n          return _this._handleLoadingState(true);\n        }).then(function () {\n          return fetcher_1;\n        }).then(function (data) {\n          return _this.setChoices(data, value, label, replaceChoices);\n        }).catch(function (err) {\n          if (!_this.config.silent) {\n            console.error(err);\n          }\n        }).then(function () {\n          return _this._handleLoadingState(false);\n        }).then(function () {\n          return _this;\n        });\n      } // function returned something else than promise, let's check if it's an array of choices\n\n\n      if (!Array.isArray(fetcher_1)) {\n        throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n      } // recursion with results, it's sync and choices were cleared already\n\n\n      return this.setChoices(fetcher_1, value, label, false);\n    }\n\n    if (!Array.isArray(choicesArrayOrFetcher)) {\n      throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n    }\n\n    this.containerOuter.removeLoadingState();\n\n    this._startLoading();\n\n    choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n      if (groupOrChoice.choices) {\n        _this._addGroup({\n          id: groupOrChoice.id ? parseInt(\"\".concat(groupOrChoice.id), 10) : null,\n          group: groupOrChoice,\n          valueKey: value,\n          labelKey: label\n        });\n      } else {\n        var choice = groupOrChoice;\n\n        _this._addChoice({\n          value: choice[value],\n          label: choice[label],\n          isSelected: !!choice.selected,\n          isDisabled: !!choice.disabled,\n          placeholder: !!choice.placeholder,\n          customProperties: choice.customProperties\n        });\n      }\n    });\n\n    this._stopLoading();\n\n    return this;\n  };\n\n  Choices.prototype.clearChoices = function () {\n    this._store.dispatch((0, choices_1.clearChoices)());\n\n    return this;\n  };\n\n  Choices.prototype.clearStore = function () {\n    this._store.dispatch((0, misc_1.clearAll)());\n\n    return this;\n  };\n\n  Choices.prototype.clearInput = function () {\n    var shouldSetInputWidth = !this._isSelectOneElement;\n    this.input.clear(shouldSetInputWidth);\n\n    if (!this._isTextElement && this._canSearch) {\n      this._isSearching = false;\n\n      this._store.dispatch((0, choices_1.activateChoices)(true));\n    }\n\n    return this;\n  };\n\n  Choices.prototype._render = function () {\n    if (this._store.isLoading()) {\n      return;\n    }\n\n    this._currentState = this._store.state;\n    var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n    var shouldRenderChoices = this._isSelectElement;\n    var shouldRenderItems = this._currentState.items !== this._prevState.items;\n\n    if (!stateChanged) {\n      return;\n    }\n\n    if (shouldRenderChoices) {\n      this._renderChoices();\n    }\n\n    if (shouldRenderItems) {\n      this._renderItems();\n    }\n\n    this._prevState = this._currentState;\n  };\n\n  Choices.prototype._renderChoices = function () {\n    var _this = this;\n\n    var _a = this._store,\n        activeGroups = _a.activeGroups,\n        activeChoices = _a.activeChoices;\n    var choiceListFragment = document.createDocumentFragment();\n    this.choiceList.clear();\n\n    if (this.config.resetScrollPosition) {\n      requestAnimationFrame(function () {\n        return _this.choiceList.scrollToTop();\n      });\n    } // If we have grouped options\n\n\n    if (activeGroups.length >= 1 && !this._isSearching) {\n      // If we have a placeholder choice along with groups\n      var activePlaceholders = activeChoices.filter(function (activeChoice) {\n        return activeChoice.placeholder === true && activeChoice.groupId === -1;\n      });\n\n      if (activePlaceholders.length >= 1) {\n        choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n      }\n\n      choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n    } else if (activeChoices.length >= 1) {\n      choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n    } // If we have choices to show\n\n\n    if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n      var activeItems = this._store.activeItems;\n\n      var canAddItem = this._canAddItem(activeItems, this.input.value); // ...and we can select them\n\n\n      if (canAddItem.response) {\n        // ...append them and highlight the first choice\n        this.choiceList.append(choiceListFragment);\n\n        this._highlightChoice();\n      } else {\n        var notice = this._getTemplate('notice', canAddItem.notice);\n\n        this.choiceList.append(notice);\n      }\n    } else {\n      // Otherwise show a notice\n      var dropdownItem = void 0;\n      var notice = void 0;\n\n      if (this._isSearching) {\n        notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n        dropdownItem = this._getTemplate('notice', notice, 'no-results');\n      } else {\n        notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n        dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n      }\n\n      this.choiceList.append(dropdownItem);\n    }\n  };\n\n  Choices.prototype._renderItems = function () {\n    var activeItems = this._store.activeItems || [];\n    this.itemList.clear(); // Create a fragment to store our list items\n    // (so we don't have to update the DOM for each item)\n\n    var itemListFragment = this._createItemsFragment(activeItems); // If we have items to add, append them\n\n\n    if (itemListFragment.childNodes) {\n      this.itemList.append(itemListFragment);\n    }\n  };\n\n  Choices.prototype._createGroupsFragment = function (groups, choices, fragment) {\n    var _this = this;\n\n    if (fragment === void 0) {\n      fragment = document.createDocumentFragment();\n    }\n\n    var getGroupChoices = function (group) {\n      return choices.filter(function (choice) {\n        if (_this._isSelectOneElement) {\n          return choice.groupId === group.id;\n        }\n\n        return choice.groupId === group.id && (_this.config.renderSelectedChoices === 'always' || !choice.selected);\n      });\n    }; // If sorting is enabled, filter groups\n\n\n    if (this.config.shouldSort) {\n      groups.sort(this.config.sorter);\n    }\n\n    groups.forEach(function (group) {\n      var groupChoices = getGroupChoices(group);\n\n      if (groupChoices.length >= 1) {\n        var dropdownGroup = _this._getTemplate('choiceGroup', group);\n\n        fragment.appendChild(dropdownGroup);\n\n        _this._createChoicesFragment(groupChoices, fragment, true);\n      }\n    });\n    return fragment;\n  };\n\n  Choices.prototype._createChoicesFragment = function (choices, fragment, withinGroup) {\n    var _this = this;\n\n    if (fragment === void 0) {\n      fragment = document.createDocumentFragment();\n    }\n\n    if (withinGroup === void 0) {\n      withinGroup = false;\n    } // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n\n\n    var _a = this.config,\n        renderSelectedChoices = _a.renderSelectedChoices,\n        searchResultLimit = _a.searchResultLimit,\n        renderChoiceLimit = _a.renderChoiceLimit;\n    var filter = this._isSearching ? utils_1.sortByScore : this.config.sorter;\n\n    var appendChoice = function (choice) {\n      var shouldRender = renderSelectedChoices === 'auto' ? _this._isSelectOneElement || !choice.selected : true;\n\n      if (shouldRender) {\n        var dropdownItem = _this._getTemplate('choice', choice, _this.config.itemSelectText);\n\n        fragment.appendChild(dropdownItem);\n      }\n    };\n\n    var rendererableChoices = choices;\n\n    if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n      rendererableChoices = choices.filter(function (choice) {\n        return !choice.selected;\n      });\n    } // Split array into placeholders and \"normal\" choices\n\n\n    var _b = rendererableChoices.reduce(function (acc, choice) {\n      if (choice.placeholder) {\n        acc.placeholderChoices.push(choice);\n      } else {\n        acc.normalChoices.push(choice);\n      }\n\n      return acc;\n    }, {\n      placeholderChoices: [],\n      normalChoices: []\n    }),\n        placeholderChoices = _b.placeholderChoices,\n        normalChoices = _b.normalChoices; // If sorting is enabled or the user is searching, filter choices\n\n\n    if (this.config.shouldSort || this._isSearching) {\n      normalChoices.sort(filter);\n    }\n\n    var choiceLimit = rendererableChoices.length; // Prepend placeholeder\n\n    var sortedChoices = this._isSelectOneElement ? __spreadArray(__spreadArray([], placeholderChoices, true), normalChoices, true) : normalChoices;\n\n    if (this._isSearching) {\n      choiceLimit = searchResultLimit;\n    } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n      choiceLimit = renderChoiceLimit;\n    } // Add each choice to dropdown within range\n\n\n    for (var i = 0; i < choiceLimit; i += 1) {\n      if (sortedChoices[i]) {\n        appendChoice(sortedChoices[i]);\n      }\n    }\n\n    return fragment;\n  };\n\n  Choices.prototype._createItemsFragment = function (items, fragment) {\n    var _this = this;\n\n    if (fragment === void 0) {\n      fragment = document.createDocumentFragment();\n    } // Create fragment to add elements to\n\n\n    var _a = this.config,\n        shouldSortItems = _a.shouldSortItems,\n        sorter = _a.sorter,\n        removeItemButton = _a.removeItemButton; // If sorting is enabled, filter items\n\n    if (shouldSortItems && !this._isSelectOneElement) {\n      items.sort(sorter);\n    }\n\n    if (this._isTextElement) {\n      // Update the value of the hidden input\n      this.passedElement.value = items.map(function (_a) {\n        var value = _a.value;\n        return value;\n      }).join(this.config.delimiter);\n    } else {\n      // Update the options of the hidden input\n      this.passedElement.options = items;\n    }\n\n    var addItemToFragment = function (item) {\n      // Create new list element\n      var listItem = _this._getTemplate('item', item, removeItemButton); // Append it to list\n\n\n      fragment.appendChild(listItem);\n    }; // Add each list item to list\n\n\n    items.forEach(addItemToFragment);\n    return fragment;\n  };\n\n  Choices.prototype._triggerChange = function (value) {\n    if (value === undefined || value === null) {\n      return;\n    }\n\n    this.passedElement.triggerEvent(constants_1.EVENTS.change, {\n      value: value\n    });\n  };\n\n  Choices.prototype._selectPlaceholderChoice = function (placeholderChoice) {\n    this._addItem({\n      value: placeholderChoice.value,\n      label: placeholderChoice.label,\n      choiceId: placeholderChoice.id,\n      groupId: placeholderChoice.groupId,\n      placeholder: placeholderChoice.placeholder\n    });\n\n    this._triggerChange(placeholderChoice.value);\n  };\n\n  Choices.prototype._handleButtonAction = function (activeItems, element) {\n    if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n      return;\n    }\n\n    var itemId = element.parentNode && element.parentNode.dataset.id;\n    var itemToRemove = itemId && activeItems.find(function (item) {\n      return item.id === parseInt(itemId, 10);\n    });\n\n    if (!itemToRemove) {\n      return;\n    } // Remove item associated with button\n\n\n    this._removeItem(itemToRemove);\n\n    this._triggerChange(itemToRemove.value);\n\n    if (this._isSelectOneElement && this._store.placeholderChoice) {\n      this._selectPlaceholderChoice(this._store.placeholderChoice);\n    }\n  };\n\n  Choices.prototype._handleItemAction = function (activeItems, element, hasShiftKey) {\n    var _this = this;\n\n    if (hasShiftKey === void 0) {\n      hasShiftKey = false;\n    }\n\n    if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n      return;\n    }\n\n    var passedId = element.dataset.id; // We only want to select one item with a click\n    // so we deselect any items that aren't the target\n    // unless shift is being pressed\n\n    activeItems.forEach(function (item) {\n      if (item.id === parseInt(\"\".concat(passedId), 10) && !item.highlighted) {\n        _this.highlightItem(item);\n      } else if (!hasShiftKey && item.highlighted) {\n        _this.unhighlightItem(item);\n      }\n    }); // Focus input as without focus, a user cannot do anything with a\n    // highlighted item\n\n    this.input.focus();\n  };\n\n  Choices.prototype._handleChoiceAction = function (activeItems, element) {\n    if (!activeItems || !element) {\n      return;\n    } // If we are clicking on an option\n\n\n    var id = element.dataset.id;\n\n    var choice = id && this._store.getChoiceById(id);\n\n    if (!choice) {\n      return;\n    }\n\n    var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : undefined;\n    var hasActiveDropdown = this.dropdown.isActive; // Update choice keyCode\n\n    choice.keyCode = passedKeyCode;\n    this.passedElement.triggerEvent(constants_1.EVENTS.choice, {\n      choice: choice\n    });\n\n    if (!choice.selected && !choice.disabled) {\n      var canAddItem = this._canAddItem(activeItems, choice.value);\n\n      if (canAddItem.response) {\n        this._addItem({\n          value: choice.value,\n          label: choice.label,\n          choiceId: choice.id,\n          groupId: choice.groupId,\n          customProperties: choice.customProperties,\n          placeholder: choice.placeholder,\n          keyCode: choice.keyCode\n        });\n\n        this._triggerChange(choice.value);\n      }\n    }\n\n    this.clearInput(); // We want to close the dropdown if we are dealing with a single select box\n\n    if (hasActiveDropdown && this._isSelectOneElement) {\n      this.hideDropdown(true);\n      this.containerOuter.focus();\n    }\n  };\n\n  Choices.prototype._handleBackspace = function (activeItems) {\n    if (!this.config.removeItems || !activeItems) {\n      return;\n    }\n\n    var lastItem = activeItems[activeItems.length - 1];\n    var hasHighlightedItems = activeItems.some(function (item) {\n      return item.highlighted;\n    }); // If editing the last item is allowed and there are not other selected items,\n    // we can edit the item value. Otherwise if we can remove items, remove all selected items\n\n    if (this.config.editItems && !hasHighlightedItems && lastItem) {\n      this.input.value = lastItem.value;\n      this.input.setWidth();\n\n      this._removeItem(lastItem);\n\n      this._triggerChange(lastItem.value);\n    } else {\n      if (!hasHighlightedItems) {\n        // Highlight last item if none already highlighted\n        this.highlightItem(lastItem, false);\n      }\n\n      this.removeHighlightedItems(true);\n    }\n  };\n\n  Choices.prototype._startLoading = function () {\n    this._store.dispatch((0, misc_1.setIsLoading)(true));\n  };\n\n  Choices.prototype._stopLoading = function () {\n    this._store.dispatch((0, misc_1.setIsLoading)(false));\n  };\n\n  Choices.prototype._handleLoadingState = function (setLoading) {\n    if (setLoading === void 0) {\n      setLoading = true;\n    }\n\n    var placeholderItem = this.itemList.getChild(\".\".concat(this.config.classNames.placeholder));\n\n    if (setLoading) {\n      this.disable();\n      this.containerOuter.addLoadingState();\n\n      if (this._isSelectOneElement) {\n        if (!placeholderItem) {\n          placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n\n          if (placeholderItem) {\n            this.itemList.append(placeholderItem);\n          }\n        } else {\n          placeholderItem.innerHTML = this.config.loadingText;\n        }\n      } else {\n        this.input.placeholder = this.config.loadingText;\n      }\n    } else {\n      this.enable();\n      this.containerOuter.removeLoadingState();\n\n      if (this._isSelectOneElement) {\n        if (placeholderItem) {\n          placeholderItem.innerHTML = this._placeholderValue || '';\n        }\n      } else {\n        this.input.placeholder = this._placeholderValue || '';\n      }\n    }\n  };\n\n  Choices.prototype._handleSearch = function (value) {\n    if (!this.input.isFocussed) {\n      return;\n    }\n\n    var choices = this._store.choices;\n    var _a = this.config,\n        searchFloor = _a.searchFloor,\n        searchChoices = _a.searchChoices;\n    var hasUnactiveChoices = choices.some(function (option) {\n      return !option.active;\n    }); // Check that we have a value to search and the input was an alphanumeric character\n\n    if (value !== null && typeof value !== 'undefined' && value.length >= searchFloor) {\n      var resultCount = searchChoices ? this._searchChoices(value) : 0; // Trigger search event\n\n      this.passedElement.triggerEvent(constants_1.EVENTS.search, {\n        value: value,\n        resultCount: resultCount\n      });\n    } else if (hasUnactiveChoices) {\n      // Otherwise reset choices to active\n      this._isSearching = false;\n\n      this._store.dispatch((0, choices_1.activateChoices)(true));\n    }\n  };\n\n  Choices.prototype._canAddItem = function (activeItems, value) {\n    var canAddItem = true;\n    var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n\n    if (!this._isSelectOneElement) {\n      var isDuplicateValue = (0, utils_1.existsInArray)(activeItems, value);\n\n      if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n        // If there is a max entry limit and we have reached that limit\n        // don't update\n        canAddItem = false;\n        notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n      }\n\n      if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n        canAddItem = false;\n        notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n      }\n\n      if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n        canAddItem = false;\n        notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n      }\n    }\n\n    return {\n      response: canAddItem,\n      notice: notice\n    };\n  };\n\n  Choices.prototype._searchChoices = function (value) {\n    var newValue = typeof value === 'string' ? value.trim() : value;\n    var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n\n    if (newValue.length < 1 && newValue === \"\".concat(currentValue, \" \")) {\n      return 0;\n    } // If new value matches the desired length and is not the same as the current value with a space\n\n\n    var haystack = this._store.searchableChoices;\n    var needle = newValue;\n    var options = Object.assign(this.config.fuseOptions, {\n      keys: __spreadArray([], this.config.searchFields, true),\n      includeMatches: true\n    });\n    var fuse = new fuse_js_1.default(haystack, options);\n    var results = fuse.search(needle); // see https://github.com/krisk/Fuse/issues/303\n\n    this._currentValue = newValue;\n    this._highlightPosition = 0;\n    this._isSearching = true;\n\n    this._store.dispatch((0, choices_1.filterChoices)(results));\n\n    return results.length;\n  };\n\n  Choices.prototype._addEventListeners = function () {\n    var documentElement = document.documentElement; // capture events - can cancel event processing or propagation\n\n    documentElement.addEventListener('touchend', this._onTouchEnd, true);\n    this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n    this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true); // passive events - doesn't call `preventDefault` or `stopPropagation`\n\n    documentElement.addEventListener('click', this._onClick, {\n      passive: true\n    });\n    documentElement.addEventListener('touchmove', this._onTouchMove, {\n      passive: true\n    });\n    this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n      passive: true\n    });\n\n    if (this._isSelectOneElement) {\n      this.containerOuter.element.addEventListener('focus', this._onFocus, {\n        passive: true\n      });\n      this.containerOuter.element.addEventListener('blur', this._onBlur, {\n        passive: true\n      });\n    }\n\n    this.input.element.addEventListener('keyup', this._onKeyUp, {\n      passive: true\n    });\n    this.input.element.addEventListener('focus', this._onFocus, {\n      passive: true\n    });\n    this.input.element.addEventListener('blur', this._onBlur, {\n      passive: true\n    });\n\n    if (this.input.element.form) {\n      this.input.element.form.addEventListener('reset', this._onFormReset, {\n        passive: true\n      });\n    }\n\n    this.input.addEventListeners();\n  };\n\n  Choices.prototype._removeEventListeners = function () {\n    var documentElement = document.documentElement;\n    documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n    this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n    this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n    documentElement.removeEventListener('click', this._onClick);\n    documentElement.removeEventListener('touchmove', this._onTouchMove);\n    this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n\n    if (this._isSelectOneElement) {\n      this.containerOuter.element.removeEventListener('focus', this._onFocus);\n      this.containerOuter.element.removeEventListener('blur', this._onBlur);\n    }\n\n    this.input.element.removeEventListener('keyup', this._onKeyUp);\n    this.input.element.removeEventListener('focus', this._onFocus);\n    this.input.element.removeEventListener('blur', this._onBlur);\n\n    if (this.input.element.form) {\n      this.input.element.form.removeEventListener('reset', this._onFormReset);\n    }\n\n    this.input.removeEventListeners();\n  };\n\n  Choices.prototype._onKeyDown = function (event) {\n    var keyCode = event.keyCode;\n    var activeItems = this._store.activeItems;\n    var hasFocusedInput = this.input.isFocussed;\n    var hasActiveDropdown = this.dropdown.isActive;\n    var hasItems = this.itemList.hasChildren();\n    var keyString = String.fromCharCode(keyCode);\n    var wasAlphaNumericChar = /[a-zA-Z0-9-_ ]/.test(keyString);\n    var BACK_KEY = constants_1.KEY_CODES.BACK_KEY,\n        DELETE_KEY = constants_1.KEY_CODES.DELETE_KEY,\n        ENTER_KEY = constants_1.KEY_CODES.ENTER_KEY,\n        A_KEY = constants_1.KEY_CODES.A_KEY,\n        ESC_KEY = constants_1.KEY_CODES.ESC_KEY,\n        UP_KEY = constants_1.KEY_CODES.UP_KEY,\n        DOWN_KEY = constants_1.KEY_CODES.DOWN_KEY,\n        PAGE_UP_KEY = constants_1.KEY_CODES.PAGE_UP_KEY,\n        PAGE_DOWN_KEY = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n\n    if (!this._isTextElement && !hasActiveDropdown && wasAlphaNumericChar) {\n      this.showDropdown();\n\n      if (!this.input.isFocussed) {\n        /*\n          We update the input value with the pressed key as\n          the input was not focussed at the time of key press\n          therefore does not have the value of the key.\n        */\n        this.input.value += keyString.toLowerCase();\n      }\n    }\n\n    switch (keyCode) {\n      case A_KEY:\n        return this._onSelectKey(event, hasItems);\n\n      case ENTER_KEY:\n        return this._onEnterKey(event, activeItems, hasActiveDropdown);\n\n      case ESC_KEY:\n        return this._onEscapeKey(hasActiveDropdown);\n\n      case UP_KEY:\n      case PAGE_UP_KEY:\n      case DOWN_KEY:\n      case PAGE_DOWN_KEY:\n        return this._onDirectionKey(event, hasActiveDropdown);\n\n      case DELETE_KEY:\n      case BACK_KEY:\n        return this._onDeleteKey(event, activeItems, hasFocusedInput);\n\n      default:\n    }\n  };\n\n  Choices.prototype._onKeyUp = function (_a) {\n    var target = _a.target,\n        keyCode = _a.keyCode;\n    var value = this.input.value;\n    var activeItems = this._store.activeItems;\n\n    var canAddItem = this._canAddItem(activeItems, value);\n\n    var backKey = constants_1.KEY_CODES.BACK_KEY,\n        deleteKey = constants_1.KEY_CODES.DELETE_KEY; // We are typing into a text input and have a value, we want to show a dropdown\n    // notice. Otherwise hide the dropdown\n\n    if (this._isTextElement) {\n      var canShowDropdownNotice = canAddItem.notice && value;\n\n      if (canShowDropdownNotice) {\n        var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n\n        this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n        this.showDropdown(true);\n      } else {\n        this.hideDropdown(true);\n      }\n    } else {\n      var wasRemovalKeyCode = keyCode === backKey || keyCode === deleteKey;\n      var userHasRemovedValue = wasRemovalKeyCode && target && !target.value;\n      var canReactivateChoices = !this._isTextElement && this._isSearching;\n      var canSearch = this._canSearch && canAddItem.response;\n\n      if (userHasRemovedValue && canReactivateChoices) {\n        this._isSearching = false;\n\n        this._store.dispatch((0, choices_1.activateChoices)(true));\n      } else if (canSearch) {\n        this._handleSearch(this.input.rawValue);\n      }\n    }\n\n    this._canSearch = this.config.searchEnabled;\n  };\n\n  Choices.prototype._onSelectKey = function (event, hasItems) {\n    var ctrlKey = event.ctrlKey,\n        metaKey = event.metaKey;\n    var hasCtrlDownKeyPressed = ctrlKey || metaKey; // If CTRL + A or CMD + A have been pressed and there are items to select\n\n    if (hasCtrlDownKeyPressed && hasItems) {\n      this._canSearch = false;\n      var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n\n      if (shouldHightlightAll) {\n        this.highlightAll();\n      }\n    }\n  };\n\n  Choices.prototype._onEnterKey = function (event, activeItems, hasActiveDropdown) {\n    var target = event.target;\n    var enterKey = constants_1.KEY_CODES.ENTER_KEY;\n    var targetWasButton = target && target.hasAttribute('data-button');\n\n    if (this._isTextElement && target && target.value) {\n      var value = this.input.value;\n\n      var canAddItem = this._canAddItem(activeItems, value);\n\n      if (canAddItem.response) {\n        this.hideDropdown(true);\n\n        this._addItem({\n          value: value\n        });\n\n        this._triggerChange(value);\n\n        this.clearInput();\n      }\n    }\n\n    if (targetWasButton) {\n      this._handleButtonAction(activeItems, target);\n\n      event.preventDefault();\n    }\n\n    if (hasActiveDropdown) {\n      var highlightedChoice = this.dropdown.getChild(\".\".concat(this.config.classNames.highlightedState));\n\n      if (highlightedChoice) {\n        // add enter keyCode value\n        if (activeItems[0]) {\n          activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n        }\n\n        this._handleChoiceAction(activeItems, highlightedChoice);\n      }\n\n      event.preventDefault();\n    } else if (this._isSelectOneElement) {\n      this.showDropdown();\n      event.preventDefault();\n    }\n  };\n\n  Choices.prototype._onEscapeKey = function (hasActiveDropdown) {\n    if (hasActiveDropdown) {\n      this.hideDropdown(true);\n      this.containerOuter.focus();\n    }\n  };\n\n  Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n    var keyCode = event.keyCode,\n        metaKey = event.metaKey;\n    var downKey = constants_1.KEY_CODES.DOWN_KEY,\n        pageUpKey = constants_1.KEY_CODES.PAGE_UP_KEY,\n        pageDownKey = constants_1.KEY_CODES.PAGE_DOWN_KEY; // If up or down key is pressed, traverse through options\n\n    if (hasActiveDropdown || this._isSelectOneElement) {\n      this.showDropdown();\n      this._canSearch = false;\n      var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n      var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n      var selectableChoiceIdentifier = '[data-choice-selectable]';\n      var nextEl = void 0;\n\n      if (skipKey) {\n        if (directionInt > 0) {\n          nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n        } else {\n          nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n        }\n      } else {\n        var currentEl = this.dropdown.element.querySelector(\".\".concat(this.config.classNames.highlightedState));\n\n        if (currentEl) {\n          nextEl = (0, utils_1.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);\n        } else {\n          nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n        }\n      }\n\n      if (nextEl) {\n        // We prevent default to stop the cursor moving\n        // when pressing the arrow\n        if (!(0, utils_1.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {\n          this.choiceList.scrollToChildElement(nextEl, directionInt);\n        }\n\n        this._highlightChoice(nextEl);\n      } // Prevent default to maintain cursor position whilst\n      // traversing dropdown options\n\n\n      event.preventDefault();\n    }\n  };\n\n  Choices.prototype._onDeleteKey = function (event, activeItems, hasFocusedInput) {\n    var target = event.target; // If backspace or delete key is pressed and the input has no value\n\n    if (!this._isSelectOneElement && !target.value && hasFocusedInput) {\n      this._handleBackspace(activeItems);\n\n      event.preventDefault();\n    }\n  };\n\n  Choices.prototype._onTouchMove = function () {\n    if (this._wasTap) {\n      this._wasTap = false;\n    }\n  };\n\n  Choices.prototype._onTouchEnd = function (event) {\n    var target = (event || event.touches[0]).target;\n    var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n\n    if (touchWasWithinContainer) {\n      var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n\n      if (containerWasExactTarget) {\n        if (this._isTextElement) {\n          this.input.focus();\n        } else if (this._isSelectMultipleElement) {\n          this.showDropdown();\n        }\n      } // Prevents focus event firing\n\n\n      event.stopPropagation();\n    }\n\n    this._wasTap = true;\n  };\n  /**\n   * Handles mousedown event in capture mode for containetOuter.element\n   */\n\n\n  Choices.prototype._onMouseDown = function (event) {\n    var target = event.target;\n\n    if (!(target instanceof HTMLElement)) {\n      return;\n    } // If we have our mouse down on the scrollbar and are on IE11...\n\n\n    if (IS_IE11 && this.choiceList.element.contains(target)) {\n      // check if click was on a scrollbar area\n      var firstChoice = this.choiceList.element.firstElementChild;\n      var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n      this._isScrollingOnIe = isOnScrollbar;\n    }\n\n    if (target === this.input.element) {\n      return;\n    }\n\n    var item = target.closest('[data-button],[data-item],[data-choice]');\n\n    if (item instanceof HTMLElement) {\n      var hasShiftKey = event.shiftKey;\n      var activeItems = this._store.activeItems;\n      var dataset = item.dataset;\n\n      if ('button' in dataset) {\n        this._handleButtonAction(activeItems, item);\n      } else if ('item' in dataset) {\n        this._handleItemAction(activeItems, item, hasShiftKey);\n      } else if ('choice' in dataset) {\n        this._handleChoiceAction(activeItems, item);\n      }\n    }\n\n    event.preventDefault();\n  };\n  /**\n   * Handles mouseover event over this.dropdown\n   * @param {MouseEvent} event\n   */\n\n\n  Choices.prototype._onMouseOver = function (_a) {\n    var target = _a.target;\n\n    if (target instanceof HTMLElement && 'choice' in target.dataset) {\n      this._highlightChoice(target);\n    }\n  };\n\n  Choices.prototype._onClick = function (_a) {\n    var target = _a.target;\n    var clickWasWithinContainer = this.containerOuter.element.contains(target);\n\n    if (clickWasWithinContainer) {\n      if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n        if (this._isTextElement) {\n          if (document.activeElement !== this.input.element) {\n            this.input.focus();\n          }\n        } else {\n          this.showDropdown();\n          this.containerOuter.focus();\n        }\n      } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n        this.hideDropdown();\n      }\n    } else {\n      var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n\n      if (hasHighlightedItems) {\n        this.unhighlightAll();\n      }\n\n      this.containerOuter.removeFocusState();\n      this.hideDropdown(true);\n    }\n  };\n\n  Choices.prototype._onFocus = function (_a) {\n    var _b;\n\n    var _this = this;\n\n    var target = _a.target;\n    var focusWasWithinContainer = target && this.containerOuter.element.contains(target);\n\n    if (!focusWasWithinContainer) {\n      return;\n    }\n\n    var focusActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n      if (target === _this.input.element) {\n        _this.containerOuter.addFocusState();\n      }\n    }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n      _this.containerOuter.addFocusState();\n\n      if (target === _this.input.element) {\n        _this.showDropdown(true);\n      }\n    }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n      if (target === _this.input.element) {\n        _this.showDropdown(true); // If element is a select box, the focused element is the container and the dropdown\n        // isn't already open, focus and show dropdown\n\n\n        _this.containerOuter.addFocusState();\n      }\n    }, _b);\n    focusActions[this.passedElement.element.type]();\n  };\n\n  Choices.prototype._onBlur = function (_a) {\n    var _b;\n\n    var _this = this;\n\n    var target = _a.target;\n    var blurWasWithinContainer = target && this.containerOuter.element.contains(target);\n\n    if (blurWasWithinContainer && !this._isScrollingOnIe) {\n      var activeItems = this._store.activeItems;\n      var hasHighlightedItems_1 = activeItems.some(function (item) {\n        return item.highlighted;\n      });\n      var blurActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n        if (target === _this.input.element) {\n          _this.containerOuter.removeFocusState();\n\n          if (hasHighlightedItems_1) {\n            _this.unhighlightAll();\n          }\n\n          _this.hideDropdown(true);\n        }\n      }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n        _this.containerOuter.removeFocusState();\n\n        if (target === _this.input.element || target === _this.containerOuter.element && !_this._canSearch) {\n          _this.hideDropdown(true);\n        }\n      }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n        if (target === _this.input.element) {\n          _this.containerOuter.removeFocusState();\n\n          _this.hideDropdown(true);\n\n          if (hasHighlightedItems_1) {\n            _this.unhighlightAll();\n          }\n        }\n      }, _b);\n      blurActions[this.passedElement.element.type]();\n    } else {\n      // On IE11, clicking the scollbar blurs our input and thus\n      // closes the dropdown. To stop this, we refocus our input\n      // if we know we are on IE *and* are scrolling.\n      this._isScrollingOnIe = false;\n      this.input.element.focus();\n    }\n  };\n\n  Choices.prototype._onFormReset = function () {\n    this._store.dispatch((0, misc_1.resetTo)(this._initialState));\n  };\n\n  Choices.prototype._highlightChoice = function (el) {\n    var _this = this;\n\n    if (el === void 0) {\n      el = null;\n    }\n\n    var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n\n    if (!choices.length) {\n      return;\n    }\n\n    var passedEl = el;\n    var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\".concat(this.config.classNames.highlightedState))); // Remove any highlighted choices\n\n    highlightedChoices.forEach(function (choice) {\n      choice.classList.remove(_this.config.classNames.highlightedState);\n      choice.setAttribute('aria-selected', 'false');\n    });\n\n    if (passedEl) {\n      this._highlightPosition = choices.indexOf(passedEl);\n    } else {\n      // Highlight choice based on last known highlight location\n      if (choices.length > this._highlightPosition) {\n        // If we have an option to highlight\n        passedEl = choices[this._highlightPosition];\n      } else {\n        // Otherwise highlight the option before\n        passedEl = choices[choices.length - 1];\n      }\n\n      if (!passedEl) {\n        passedEl = choices[0];\n      }\n    }\n\n    passedEl.classList.add(this.config.classNames.highlightedState);\n    passedEl.setAttribute('aria-selected', 'true');\n    this.passedElement.triggerEvent(constants_1.EVENTS.highlightChoice, {\n      el: passedEl\n    });\n\n    if (this.dropdown.isActive) {\n      // IE11 ignores aria-label and blocks virtual keyboard\n      // if aria-activedescendant is set without a dropdown\n      this.input.setActiveDescendant(passedEl.id);\n      this.containerOuter.setActiveDescendant(passedEl.id);\n    }\n  };\n\n  Choices.prototype._addItem = function (_a) {\n    var value = _a.value,\n        _b = _a.label,\n        label = _b === void 0 ? null : _b,\n        _c = _a.choiceId,\n        choiceId = _c === void 0 ? -1 : _c,\n        _d = _a.groupId,\n        groupId = _d === void 0 ? -1 : _d,\n        _e = _a.customProperties,\n        customProperties = _e === void 0 ? {} : _e,\n        _f = _a.placeholder,\n        placeholder = _f === void 0 ? false : _f,\n        _g = _a.keyCode,\n        keyCode = _g === void 0 ? -1 : _g;\n    var passedValue = typeof value === 'string' ? value.trim() : value;\n    var items = this._store.items;\n    var passedLabel = label || passedValue;\n    var passedOptionId = choiceId || -1;\n    var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n    var id = items ? items.length + 1 : 1; // If a prepended value has been passed, prepend it\n\n    if (this.config.prependValue) {\n      passedValue = this.config.prependValue + passedValue.toString();\n    } // If an appended value has been passed, append it\n\n\n    if (this.config.appendValue) {\n      passedValue += this.config.appendValue.toString();\n    }\n\n    this._store.dispatch((0, items_1.addItem)({\n      value: passedValue,\n      label: passedLabel,\n      id: id,\n      choiceId: passedOptionId,\n      groupId: groupId,\n      customProperties: customProperties,\n      placeholder: placeholder,\n      keyCode: keyCode\n    }));\n\n    if (this._isSelectOneElement) {\n      this.removeActiveItems(id);\n    } // Trigger change event\n\n\n    this.passedElement.triggerEvent(constants_1.EVENTS.addItem, {\n      id: id,\n      value: passedValue,\n      label: passedLabel,\n      customProperties: customProperties,\n      groupValue: group && group.value ? group.value : null,\n      keyCode: keyCode\n    });\n  };\n\n  Choices.prototype._removeItem = function (item) {\n    var id = item.id,\n        value = item.value,\n        label = item.label,\n        customProperties = item.customProperties,\n        choiceId = item.choiceId,\n        groupId = item.groupId;\n    var group = groupId && groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n    if (!id || !choiceId) {\n      return;\n    }\n\n    this._store.dispatch((0, items_1.removeItem)(id, choiceId));\n\n    this.passedElement.triggerEvent(constants_1.EVENTS.removeItem, {\n      id: id,\n      value: value,\n      label: label,\n      customProperties: customProperties,\n      groupValue: group && group.value ? group.value : null\n    });\n  };\n\n  Choices.prototype._addChoice = function (_a) {\n    var value = _a.value,\n        _b = _a.label,\n        label = _b === void 0 ? null : _b,\n        _c = _a.isSelected,\n        isSelected = _c === void 0 ? false : _c,\n        _d = _a.isDisabled,\n        isDisabled = _d === void 0 ? false : _d,\n        _e = _a.groupId,\n        groupId = _e === void 0 ? -1 : _e,\n        _f = _a.customProperties,\n        customProperties = _f === void 0 ? {} : _f,\n        _g = _a.placeholder,\n        placeholder = _g === void 0 ? false : _g,\n        _h = _a.keyCode,\n        keyCode = _h === void 0 ? -1 : _h;\n\n    if (typeof value === 'undefined' || value === null) {\n      return;\n    } // Generate unique id\n\n\n    var choices = this._store.choices;\n    var choiceLabel = label || value;\n    var choiceId = choices ? choices.length + 1 : 1;\n    var choiceElementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choiceId);\n\n    this._store.dispatch((0, choices_1.addChoice)({\n      id: choiceId,\n      groupId: groupId,\n      elementId: choiceElementId,\n      value: value,\n      label: choiceLabel,\n      disabled: isDisabled,\n      customProperties: customProperties,\n      placeholder: placeholder,\n      keyCode: keyCode\n    }));\n\n    if (isSelected) {\n      this._addItem({\n        value: value,\n        label: choiceLabel,\n        choiceId: choiceId,\n        customProperties: customProperties,\n        placeholder: placeholder,\n        keyCode: keyCode\n      });\n    }\n  };\n\n  Choices.prototype._addGroup = function (_a) {\n    var _this = this;\n\n    var group = _a.group,\n        id = _a.id,\n        _b = _a.valueKey,\n        valueKey = _b === void 0 ? 'value' : _b,\n        _c = _a.labelKey,\n        labelKey = _c === void 0 ? 'label' : _c;\n    var groupChoices = (0, utils_1.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n    var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n    var isDisabled = group.disabled ? group.disabled : false;\n\n    if (groupChoices) {\n      this._store.dispatch((0, groups_1.addGroup)({\n        value: group.label,\n        id: groupId,\n        active: true,\n        disabled: isDisabled\n      }));\n\n      var addGroupChoices = function (choice) {\n        var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n\n        _this._addChoice({\n          value: choice[valueKey],\n          label: (0, utils_1.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,\n          isSelected: choice.selected,\n          isDisabled: isOptDisabled,\n          groupId: groupId,\n          customProperties: choice.customProperties,\n          placeholder: choice.placeholder\n        });\n      };\n\n      groupChoices.forEach(addGroupChoices);\n    } else {\n      this._store.dispatch((0, groups_1.addGroup)({\n        value: group.label,\n        id: group.id,\n        active: false,\n        disabled: group.disabled\n      }));\n    }\n  };\n\n  Choices.prototype._getTemplate = function (template) {\n    var _a;\n\n    var args = [];\n\n    for (var _i = 1; _i < arguments.length; _i++) {\n      args[_i - 1] = arguments[_i];\n    }\n\n    return (_a = this._templates[template]).call.apply(_a, __spreadArray([this, this.config], args, false));\n  };\n\n  Choices.prototype._createTemplates = function () {\n    var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n    var userTemplates = {};\n\n    if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n      userTemplates = callbackOnCreateTemplates.call(this, utils_1.strToEl);\n    }\n\n    this._templates = (0, deepmerge_1.default)(templates_1.default, userTemplates);\n  };\n\n  Choices.prototype._createElements = function () {\n    this.containerOuter = new components_1.Container({\n      element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type, this.config.labelId),\n      classNames: this.config.classNames,\n      type: this.passedElement.element.type,\n      position: this.config.position\n    });\n    this.containerInner = new components_1.Container({\n      element: this._getTemplate('containerInner'),\n      classNames: this.config.classNames,\n      type: this.passedElement.element.type,\n      position: this.config.position\n    });\n    this.input = new components_1.Input({\n      element: this._getTemplate('input', this._placeholderValue),\n      classNames: this.config.classNames,\n      type: this.passedElement.element.type,\n      preventPaste: !this.config.paste\n    });\n    this.choiceList = new components_1.List({\n      element: this._getTemplate('choiceList', this._isSelectOneElement)\n    });\n    this.itemList = new components_1.List({\n      element: this._getTemplate('itemList', this._isSelectOneElement)\n    });\n    this.dropdown = new components_1.Dropdown({\n      element: this._getTemplate('dropdown'),\n      classNames: this.config.classNames,\n      type: this.passedElement.element.type\n    });\n  };\n\n  Choices.prototype._createStructure = function () {\n    // Hide original element\n    this.passedElement.conceal(); // Wrap input in container preserving DOM ordering\n\n    this.containerInner.wrap(this.passedElement.element); // Wrapper inner container with outer container\n\n    this.containerOuter.wrap(this.containerInner.element);\n\n    if (this._isSelectOneElement) {\n      this.input.placeholder = this.config.searchPlaceholderValue || '';\n    } else if (this._placeholderValue) {\n      this.input.placeholder = this._placeholderValue;\n      this.input.setWidth();\n    }\n\n    this.containerOuter.element.appendChild(this.containerInner.element);\n    this.containerOuter.element.appendChild(this.dropdown.element);\n    this.containerInner.element.appendChild(this.itemList.element);\n\n    if (!this._isTextElement) {\n      this.dropdown.element.appendChild(this.choiceList.element);\n    }\n\n    if (!this._isSelectOneElement) {\n      this.containerInner.element.appendChild(this.input.element);\n    } else if (this.config.searchEnabled) {\n      this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n    }\n\n    if (this._isSelectElement) {\n      this._highlightPosition = 0;\n      this._isSearching = false;\n\n      this._startLoading();\n\n      if (this._presetGroups.length) {\n        this._addPredefinedGroups(this._presetGroups);\n      } else {\n        this._addPredefinedChoices(this._presetChoices);\n      }\n\n      this._stopLoading();\n    }\n\n    if (this._isTextElement) {\n      this._addPredefinedItems(this._presetItems);\n    }\n  };\n\n  Choices.prototype._addPredefinedGroups = function (groups) {\n    var _this = this; // If we have a placeholder option\n\n\n    var placeholderChoice = this.passedElement.placeholderOption;\n\n    if (placeholderChoice && placeholderChoice.parentNode && placeholderChoice.parentNode.tagName === 'SELECT') {\n      this._addChoice({\n        value: placeholderChoice.value,\n        label: placeholderChoice.innerHTML,\n        isSelected: placeholderChoice.selected,\n        isDisabled: placeholderChoice.disabled,\n        placeholder: true\n      });\n    }\n\n    groups.forEach(function (group) {\n      return _this._addGroup({\n        group: group,\n        id: group.id || null\n      });\n    });\n  };\n\n  Choices.prototype._addPredefinedChoices = function (choices) {\n    var _this = this; // If sorting is enabled or the user is searching, filter choices\n\n\n    if (this.config.shouldSort) {\n      choices.sort(this.config.sorter);\n    }\n\n    var hasSelectedChoice = choices.some(function (choice) {\n      return choice.selected;\n    });\n    var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n      return choice.disabled === undefined || !choice.disabled;\n    });\n    choices.forEach(function (choice, index) {\n      var _a = choice.value,\n          value = _a === void 0 ? '' : _a,\n          label = choice.label,\n          customProperties = choice.customProperties,\n          placeholder = choice.placeholder;\n\n      if (_this._isSelectElement) {\n        // If the choice is actually a group\n        if (choice.choices) {\n          _this._addGroup({\n            group: choice,\n            id: choice.id || null\n          });\n        } else {\n          /**\n           * If there is a selected choice already or the choice is not the first in\n           * the array, add each choice normally.\n           *\n           * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n           */\n          var shouldPreselect = _this._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n          var isSelected = shouldPreselect ? true : choice.selected;\n          var isDisabled = choice.disabled;\n\n          _this._addChoice({\n            value: value,\n            label: label,\n            isSelected: !!isSelected,\n            isDisabled: !!isDisabled,\n            placeholder: !!placeholder,\n            customProperties: customProperties\n          });\n        }\n      } else {\n        _this._addChoice({\n          value: value,\n          label: label,\n          isSelected: !!choice.selected,\n          isDisabled: !!choice.disabled,\n          placeholder: !!choice.placeholder,\n          customProperties: customProperties\n        });\n      }\n    });\n  };\n\n  Choices.prototype._addPredefinedItems = function (items) {\n    var _this = this;\n\n    items.forEach(function (item) {\n      if (typeof item === 'object' && item.value) {\n        _this._addItem({\n          value: item.value,\n          label: item.label,\n          choiceId: item.id,\n          customProperties: item.customProperties,\n          placeholder: item.placeholder\n        });\n      }\n\n      if (typeof item === 'string') {\n        _this._addItem({\n          value: item\n        });\n      }\n    });\n  };\n\n  Choices.prototype._setChoiceOrItem = function (item) {\n    var _this = this;\n\n    var itemType = (0, utils_1.getType)(item).toLowerCase();\n    var handleType = {\n      object: function () {\n        if (!item.value) {\n          return;\n        } // If we are dealing with a select input, we need to create an option first\n        // that is then selected. For text inputs we can just add items normally.\n\n\n        if (!_this._isTextElement) {\n          _this._addChoice({\n            value: item.value,\n            label: item.label,\n            isSelected: true,\n            isDisabled: false,\n            customProperties: item.customProperties,\n            placeholder: item.placeholder\n          });\n        } else {\n          _this._addItem({\n            value: item.value,\n            label: item.label,\n            choiceId: item.id,\n            customProperties: item.customProperties,\n            placeholder: item.placeholder\n          });\n        }\n      },\n      string: function () {\n        if (!_this._isTextElement) {\n          _this._addChoice({\n            value: item,\n            label: item,\n            isSelected: true,\n            isDisabled: false\n          });\n        } else {\n          _this._addItem({\n            value: item\n          });\n        }\n      }\n    };\n    handleType[itemType]();\n  };\n\n  Choices.prototype._findAndSelectChoiceByValue = function (value) {\n    var _this = this;\n\n    var choices = this._store.choices; // Check 'value' property exists and the choice isn't already selected\n\n    var foundChoice = choices.find(function (choice) {\n      return _this.config.valueComparer(choice.value, value);\n    });\n\n    if (foundChoice && !foundChoice.selected) {\n      this._addItem({\n        value: foundChoice.value,\n        label: foundChoice.label,\n        choiceId: foundChoice.id,\n        groupId: foundChoice.groupId,\n        customProperties: foundChoice.customProperties,\n        placeholder: foundChoice.placeholder,\n        keyCode: foundChoice.keyCode\n      });\n    }\n  };\n\n  Choices.prototype._generatePlaceholderValue = function () {\n    if (this._isSelectElement && this.passedElement.placeholderOption) {\n      var placeholderOption = this.passedElement.placeholderOption;\n      return placeholderOption ? placeholderOption.text : null;\n    }\n\n    var _a = this.config,\n        placeholder = _a.placeholder,\n        placeholderValue = _a.placeholderValue;\n    var dataset = this.passedElement.element.dataset;\n\n    if (placeholder) {\n      if (placeholderValue) {\n        return placeholderValue;\n      }\n\n      if (dataset.placeholder) {\n        return dataset.placeholder;\n      }\n    }\n\n    return null;\n  };\n\n  return Choices;\n}();\n\nexports[\"default\"] = Choices;\n\n/***/ }),\n\n/***/ 613:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar utils_1 = __webpack_require__(799);\n\nvar constants_1 = __webpack_require__(883);\n\nvar Container =\n/** @class */\nfunction () {\n  function Container(_a) {\n    var element = _a.element,\n        type = _a.type,\n        classNames = _a.classNames,\n        position = _a.position;\n    this.element = element;\n    this.classNames = classNames;\n    this.type = type;\n    this.position = position;\n    this.isOpen = false;\n    this.isFlipped = false;\n    this.isFocussed = false;\n    this.isDisabled = false;\n    this.isLoading = false;\n    this._onFocus = this._onFocus.bind(this);\n    this._onBlur = this._onBlur.bind(this);\n  }\n\n  Container.prototype.addEventListeners = function () {\n    this.element.addEventListener('focus', this._onFocus);\n    this.element.addEventListener('blur', this._onBlur);\n  };\n\n  Container.prototype.removeEventListeners = function () {\n    this.element.removeEventListener('focus', this._onFocus);\n    this.element.removeEventListener('blur', this._onBlur);\n  };\n  /**\n   * Determine whether container should be flipped based on passed\n   * dropdown position\n   */\n\n\n  Container.prototype.shouldFlip = function (dropdownPos) {\n    if (typeof dropdownPos !== 'number') {\n      return false;\n    } // If flip is enabled and the dropdown bottom position is\n    // greater than the window height flip the dropdown.\n\n\n    var shouldFlip = false;\n\n    if (this.position === 'auto') {\n      shouldFlip = !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n    } else if (this.position === 'top') {\n      shouldFlip = true;\n    }\n\n    return shouldFlip;\n  };\n\n  Container.prototype.setActiveDescendant = function (activeDescendantID) {\n    this.element.setAttribute('aria-activedescendant', activeDescendantID);\n  };\n\n  Container.prototype.removeActiveDescendant = function () {\n    this.element.removeAttribute('aria-activedescendant');\n  };\n\n  Container.prototype.open = function (dropdownPos) {\n    this.element.classList.add(this.classNames.openState);\n    this.element.setAttribute('aria-expanded', 'true');\n    this.isOpen = true;\n\n    if (this.shouldFlip(dropdownPos)) {\n      this.element.classList.add(this.classNames.flippedState);\n      this.isFlipped = true;\n    }\n  };\n\n  Container.prototype.close = function () {\n    this.element.classList.remove(this.classNames.openState);\n    this.element.setAttribute('aria-expanded', 'false');\n    this.removeActiveDescendant();\n    this.isOpen = false; // A dropdown flips if it does not have space within the page\n\n    if (this.isFlipped) {\n      this.element.classList.remove(this.classNames.flippedState);\n      this.isFlipped = false;\n    }\n  };\n\n  Container.prototype.focus = function () {\n    if (!this.isFocussed) {\n      this.element.focus();\n    }\n  };\n\n  Container.prototype.addFocusState = function () {\n    this.element.classList.add(this.classNames.focusState);\n  };\n\n  Container.prototype.removeFocusState = function () {\n    this.element.classList.remove(this.classNames.focusState);\n  };\n\n  Container.prototype.enable = function () {\n    this.element.classList.remove(this.classNames.disabledState);\n    this.element.removeAttribute('aria-disabled');\n\n    if (this.type === constants_1.SELECT_ONE_TYPE) {\n      this.element.setAttribute('tabindex', '0');\n    }\n\n    this.isDisabled = false;\n  };\n\n  Container.prototype.disable = function () {\n    this.element.classList.add(this.classNames.disabledState);\n    this.element.setAttribute('aria-disabled', 'true');\n\n    if (this.type === constants_1.SELECT_ONE_TYPE) {\n      this.element.setAttribute('tabindex', '-1');\n    }\n\n    this.isDisabled = true;\n  };\n\n  Container.prototype.wrap = function (element) {\n    (0, utils_1.wrap)(element, this.element);\n  };\n\n  Container.prototype.unwrap = function (element) {\n    if (this.element.parentNode) {\n      // Move passed element outside this element\n      this.element.parentNode.insertBefore(element, this.element); // Remove this element\n\n      this.element.parentNode.removeChild(this.element);\n    }\n  };\n\n  Container.prototype.addLoadingState = function () {\n    this.element.classList.add(this.classNames.loadingState);\n    this.element.setAttribute('aria-busy', 'true');\n    this.isLoading = true;\n  };\n\n  Container.prototype.removeLoadingState = function () {\n    this.element.classList.remove(this.classNames.loadingState);\n    this.element.removeAttribute('aria-busy');\n    this.isLoading = false;\n  };\n\n  Container.prototype._onFocus = function () {\n    this.isFocussed = true;\n  };\n\n  Container.prototype._onBlur = function () {\n    this.isFocussed = false;\n  };\n\n  return Container;\n}();\n\nexports[\"default\"] = Container;\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar Dropdown =\n/** @class */\nfunction () {\n  function Dropdown(_a) {\n    var element = _a.element,\n        type = _a.type,\n        classNames = _a.classNames;\n    this.element = element;\n    this.classNames = classNames;\n    this.type = type;\n    this.isActive = false;\n  }\n\n  Object.defineProperty(Dropdown.prototype, \"distanceFromTopWindow\", {\n    /**\n     * Bottom position of dropdown in viewport coordinates\n     */\n    get: function () {\n      return this.element.getBoundingClientRect().bottom;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Dropdown.prototype.getChild = function (selector) {\n    return this.element.querySelector(selector);\n  };\n  /**\n   * Show dropdown to user by adding active state class\n   */\n\n\n  Dropdown.prototype.show = function () {\n    this.element.classList.add(this.classNames.activeState);\n    this.element.setAttribute('aria-expanded', 'true');\n    this.isActive = true;\n    return this;\n  };\n  /**\n   * Hide dropdown from user\n   */\n\n\n  Dropdown.prototype.hide = function () {\n    this.element.classList.remove(this.classNames.activeState);\n    this.element.setAttribute('aria-expanded', 'false');\n    this.isActive = false;\n    return this;\n  };\n\n  return Dropdown;\n}();\n\nexports[\"default\"] = Dropdown;\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.WrappedSelect = exports.WrappedInput = exports.List = exports.Input = exports.Container = exports.Dropdown = void 0;\n\nvar dropdown_1 = __importDefault(__webpack_require__(217));\n\nexports.Dropdown = dropdown_1.default;\n\nvar container_1 = __importDefault(__webpack_require__(613));\n\nexports.Container = container_1.default;\n\nvar input_1 = __importDefault(__webpack_require__(11));\n\nexports.Input = input_1.default;\n\nvar list_1 = __importDefault(__webpack_require__(624));\n\nexports.List = list_1.default;\n\nvar wrapped_input_1 = __importDefault(__webpack_require__(541));\n\nexports.WrappedInput = wrapped_input_1.default;\n\nvar wrapped_select_1 = __importDefault(__webpack_require__(982));\n\nexports.WrappedSelect = wrapped_select_1.default;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar utils_1 = __webpack_require__(799);\n\nvar constants_1 = __webpack_require__(883);\n\nvar Input =\n/** @class */\nfunction () {\n  function Input(_a) {\n    var element = _a.element,\n        type = _a.type,\n        classNames = _a.classNames,\n        preventPaste = _a.preventPaste;\n    this.element = element;\n    this.type = type;\n    this.classNames = classNames;\n    this.preventPaste = preventPaste;\n    this.isFocussed = this.element.isEqualNode(document.activeElement);\n    this.isDisabled = element.disabled;\n    this._onPaste = this._onPaste.bind(this);\n    this._onInput = this._onInput.bind(this);\n    this._onFocus = this._onFocus.bind(this);\n    this._onBlur = this._onBlur.bind(this);\n  }\n\n  Object.defineProperty(Input.prototype, \"placeholder\", {\n    set: function (placeholder) {\n      this.element.placeholder = placeholder;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Input.prototype, \"value\", {\n    get: function () {\n      return (0, utils_1.sanitise)(this.element.value);\n    },\n    set: function (value) {\n      this.element.value = value;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Input.prototype, \"rawValue\", {\n    get: function () {\n      return this.element.value;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Input.prototype.addEventListeners = function () {\n    this.element.addEventListener('paste', this._onPaste);\n    this.element.addEventListener('input', this._onInput, {\n      passive: true\n    });\n    this.element.addEventListener('focus', this._onFocus, {\n      passive: true\n    });\n    this.element.addEventListener('blur', this._onBlur, {\n      passive: true\n    });\n  };\n\n  Input.prototype.removeEventListeners = function () {\n    this.element.removeEventListener('input', this._onInput);\n    this.element.removeEventListener('paste', this._onPaste);\n    this.element.removeEventListener('focus', this._onFocus);\n    this.element.removeEventListener('blur', this._onBlur);\n  };\n\n  Input.prototype.enable = function () {\n    this.element.removeAttribute('disabled');\n    this.isDisabled = false;\n  };\n\n  Input.prototype.disable = function () {\n    this.element.setAttribute('disabled', '');\n    this.isDisabled = true;\n  };\n\n  Input.prototype.focus = function () {\n    if (!this.isFocussed) {\n      this.element.focus();\n    }\n  };\n\n  Input.prototype.blur = function () {\n    if (this.isFocussed) {\n      this.element.blur();\n    }\n  };\n\n  Input.prototype.clear = function (setWidth) {\n    if (setWidth === void 0) {\n      setWidth = true;\n    }\n\n    if (this.element.value) {\n      this.element.value = '';\n    }\n\n    if (setWidth) {\n      this.setWidth();\n    }\n\n    return this;\n  };\n  /**\n   * Set the correct input width based on placeholder\n   * value or input value\n   */\n\n\n  Input.prototype.setWidth = function () {\n    // Resize input to contents or placeholder\n    var _a = this.element,\n        style = _a.style,\n        value = _a.value,\n        placeholder = _a.placeholder;\n    style.minWidth = \"\".concat(placeholder.length + 1, \"ch\");\n    style.width = \"\".concat(value.length + 1, \"ch\");\n  };\n\n  Input.prototype.setActiveDescendant = function (activeDescendantID) {\n    this.element.setAttribute('aria-activedescendant', activeDescendantID);\n  };\n\n  Input.prototype.removeActiveDescendant = function () {\n    this.element.removeAttribute('aria-activedescendant');\n  };\n\n  Input.prototype._onInput = function () {\n    if (this.type !== constants_1.SELECT_ONE_TYPE) {\n      this.setWidth();\n    }\n  };\n\n  Input.prototype._onPaste = function (event) {\n    if (this.preventPaste) {\n      event.preventDefault();\n    }\n  };\n\n  Input.prototype._onFocus = function () {\n    this.isFocussed = true;\n  };\n\n  Input.prototype._onBlur = function () {\n    this.isFocussed = false;\n  };\n\n  return Input;\n}();\n\nexports[\"default\"] = Input;\n\n/***/ }),\n\n/***/ 624:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar constants_1 = __webpack_require__(883);\n\nvar List =\n/** @class */\nfunction () {\n  function List(_a) {\n    var element = _a.element;\n    this.element = element;\n    this.scrollPos = this.element.scrollTop;\n    this.height = this.element.offsetHeight;\n  }\n\n  List.prototype.clear = function () {\n    this.element.innerHTML = '';\n  };\n\n  List.prototype.append = function (node) {\n    this.element.appendChild(node);\n  };\n\n  List.prototype.getChild = function (selector) {\n    return this.element.querySelector(selector);\n  };\n\n  List.prototype.hasChildren = function () {\n    return this.element.hasChildNodes();\n  };\n\n  List.prototype.scrollToTop = function () {\n    this.element.scrollTop = 0;\n  };\n\n  List.prototype.scrollToChildElement = function (element, direction) {\n    var _this = this;\n\n    if (!element) {\n      return;\n    }\n\n    var listHeight = this.element.offsetHeight; // Scroll position of dropdown\n\n    var listScrollPosition = this.element.scrollTop + listHeight;\n    var elementHeight = element.offsetHeight; // Distance from bottom of element to top of parent\n\n    var elementPos = element.offsetTop + elementHeight; // Difference between the element and scroll position\n\n    var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n    requestAnimationFrame(function () {\n      _this._animateScroll(destination, direction);\n    });\n  };\n\n  List.prototype._scrollDown = function (scrollPos, strength, destination) {\n    var easing = (destination - scrollPos) / strength;\n    var distance = easing > 1 ? easing : 1;\n    this.element.scrollTop = scrollPos + distance;\n  };\n\n  List.prototype._scrollUp = function (scrollPos, strength, destination) {\n    var easing = (scrollPos - destination) / strength;\n    var distance = easing > 1 ? easing : 1;\n    this.element.scrollTop = scrollPos - distance;\n  };\n\n  List.prototype._animateScroll = function (destination, direction) {\n    var _this = this;\n\n    var strength = constants_1.SCROLLING_SPEED;\n    var choiceListScrollTop = this.element.scrollTop;\n    var continueAnimation = false;\n\n    if (direction > 0) {\n      this._scrollDown(choiceListScrollTop, strength, destination);\n\n      if (choiceListScrollTop < destination) {\n        continueAnimation = true;\n      }\n    } else {\n      this._scrollUp(choiceListScrollTop, strength, destination);\n\n      if (choiceListScrollTop > destination) {\n        continueAnimation = true;\n      }\n    }\n\n    if (continueAnimation) {\n      requestAnimationFrame(function () {\n        _this._animateScroll(destination, direction);\n      });\n    }\n  };\n\n  return List;\n}();\n\nexports[\"default\"] = List;\n\n/***/ }),\n\n/***/ 730:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar utils_1 = __webpack_require__(799);\n\nvar WrappedElement =\n/** @class */\nfunction () {\n  function WrappedElement(_a) {\n    var element = _a.element,\n        classNames = _a.classNames;\n    this.element = element;\n    this.classNames = classNames;\n\n    if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n      throw new TypeError('Invalid element passed');\n    }\n\n    this.isDisabled = false;\n  }\n\n  Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n    get: function () {\n      return this.element.dataset.choice === 'active';\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(WrappedElement.prototype, \"dir\", {\n    get: function () {\n      return this.element.dir;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(WrappedElement.prototype, \"value\", {\n    get: function () {\n      return this.element.value;\n    },\n    set: function (value) {\n      // you must define setter here otherwise it will be readonly property\n      this.element.value = value;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  WrappedElement.prototype.conceal = function () {\n    // Hide passed input\n    this.element.classList.add(this.classNames.input);\n    this.element.hidden = true; // Remove element from tab index\n\n    this.element.tabIndex = -1; // Backup original styles if any\n\n    var origStyle = this.element.getAttribute('style');\n\n    if (origStyle) {\n      this.element.setAttribute('data-choice-orig-style', origStyle);\n    }\n\n    this.element.setAttribute('data-choice', 'active');\n  };\n\n  WrappedElement.prototype.reveal = function () {\n    // Reinstate passed element\n    this.element.classList.remove(this.classNames.input);\n    this.element.hidden = false;\n    this.element.removeAttribute('tabindex'); // Recover original styles if any\n\n    var origStyle = this.element.getAttribute('data-choice-orig-style');\n\n    if (origStyle) {\n      this.element.removeAttribute('data-choice-orig-style');\n      this.element.setAttribute('style', origStyle);\n    } else {\n      this.element.removeAttribute('style');\n    }\n\n    this.element.removeAttribute('data-choice'); // Re-assign values - this is weird, I know\n    // @todo Figure out why we need to do this\n\n    this.element.value = this.element.value; // eslint-disable-line no-self-assign\n  };\n\n  WrappedElement.prototype.enable = function () {\n    this.element.removeAttribute('disabled');\n    this.element.disabled = false;\n    this.isDisabled = false;\n  };\n\n  WrappedElement.prototype.disable = function () {\n    this.element.setAttribute('disabled', '');\n    this.element.disabled = true;\n    this.isDisabled = true;\n  };\n\n  WrappedElement.prototype.triggerEvent = function (eventType, data) {\n    (0, utils_1.dispatchEvent)(this.element, eventType, data);\n  };\n\n  return WrappedElement;\n}();\n\nexports[\"default\"] = WrappedElement;\n\n/***/ }),\n\n/***/ 541:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n  var extendStatics = function (d, b) {\n    extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n    };\n\n    return extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n    extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\n\nvar WrappedInput =\n/** @class */\nfunction (_super) {\n  __extends(WrappedInput, _super);\n\n  function WrappedInput(_a) {\n    var element = _a.element,\n        classNames = _a.classNames,\n        delimiter = _a.delimiter;\n\n    var _this = _super.call(this, {\n      element: element,\n      classNames: classNames\n    }) || this;\n\n    _this.delimiter = delimiter;\n    return _this;\n  }\n\n  Object.defineProperty(WrappedInput.prototype, \"value\", {\n    get: function () {\n      return this.element.value;\n    },\n    set: function (value) {\n      this.element.setAttribute('value', value);\n      this.element.value = value;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return WrappedInput;\n}(wrapped_element_1.default);\n\nexports[\"default\"] = WrappedInput;\n\n/***/ }),\n\n/***/ 982:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n  var extendStatics = function (d, b) {\n    extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n    };\n\n    return extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n    extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\n\nvar WrappedSelect =\n/** @class */\nfunction (_super) {\n  __extends(WrappedSelect, _super);\n\n  function WrappedSelect(_a) {\n    var element = _a.element,\n        classNames = _a.classNames,\n        template = _a.template;\n\n    var _this = _super.call(this, {\n      element: element,\n      classNames: classNames\n    }) || this;\n\n    _this.template = template;\n    return _this;\n  }\n\n  Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n    get: function () {\n      return this.element.querySelector('option[value=\"\"]') || // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n      this.element.querySelector('option[placeholder]');\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(WrappedSelect.prototype, \"optionGroups\", {\n    get: function () {\n      return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(WrappedSelect.prototype, \"options\", {\n    get: function () {\n      return Array.from(this.element.options);\n    },\n    set: function (options) {\n      var _this = this;\n\n      var fragment = document.createDocumentFragment();\n\n      var addOptionToFragment = function (data) {\n        // Create a standard select option\n        var option = _this.template(data); // Append it to fragment\n\n\n        fragment.appendChild(option);\n      }; // Add each list item to list\n\n\n      options.forEach(function (optionData) {\n        return addOptionToFragment(optionData);\n      });\n      this.appendDocFragment(fragment);\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  WrappedSelect.prototype.appendDocFragment = function (fragment) {\n    this.element.innerHTML = '';\n    this.element.appendChild(fragment);\n  };\n\n  return WrappedSelect;\n}(wrapped_element_1.default);\n\nexports[\"default\"] = WrappedSelect;\n\n/***/ }),\n\n/***/ 883:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.SCROLLING_SPEED = exports.SELECT_MULTIPLE_TYPE = exports.SELECT_ONE_TYPE = exports.TEXT_TYPE = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = void 0;\nexports.EVENTS = {\n  showDropdown: 'showDropdown',\n  hideDropdown: 'hideDropdown',\n  change: 'change',\n  choice: 'choice',\n  search: 'search',\n  addItem: 'addItem',\n  removeItem: 'removeItem',\n  highlightItem: 'highlightItem',\n  highlightChoice: 'highlightChoice',\n  unhighlightItem: 'unhighlightItem'\n};\nexports.ACTION_TYPES = {\n  ADD_CHOICE: 'ADD_CHOICE',\n  FILTER_CHOICES: 'FILTER_CHOICES',\n  ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n  CLEAR_CHOICES: 'CLEAR_CHOICES',\n  ADD_GROUP: 'ADD_GROUP',\n  ADD_ITEM: 'ADD_ITEM',\n  REMOVE_ITEM: 'REMOVE_ITEM',\n  HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n  CLEAR_ALL: 'CLEAR_ALL',\n  RESET_TO: 'RESET_TO',\n  SET_IS_LOADING: 'SET_IS_LOADING'\n};\nexports.KEY_CODES = {\n  BACK_KEY: 46,\n  DELETE_KEY: 8,\n  ENTER_KEY: 13,\n  A_KEY: 65,\n  ESC_KEY: 27,\n  UP_KEY: 38,\n  DOWN_KEY: 40,\n  PAGE_UP_KEY: 33,\n  PAGE_DOWN_KEY: 34\n};\nexports.TEXT_TYPE = 'text';\nexports.SELECT_ONE_TYPE = 'select-one';\nexports.SELECT_MULTIPLE_TYPE = 'select-multiple';\nexports.SCROLLING_SPEED = 4;\n\n/***/ }),\n\n/***/ 789:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;\n\nvar utils_1 = __webpack_require__(799);\n\nexports.DEFAULT_CLASSNAMES = {\n  containerOuter: 'choices',\n  containerInner: 'choices__inner',\n  input: 'choices__input',\n  inputCloned: 'choices__input--cloned',\n  list: 'choices__list',\n  listItems: 'choices__list--multiple',\n  listSingle: 'choices__list--single',\n  listDropdown: 'choices__list--dropdown',\n  item: 'choices__item',\n  itemSelectable: 'choices__item--selectable',\n  itemDisabled: 'choices__item--disabled',\n  itemChoice: 'choices__item--choice',\n  placeholder: 'choices__placeholder',\n  group: 'choices__group',\n  groupHeading: 'choices__heading',\n  button: 'choices__button',\n  activeState: 'is-active',\n  focusState: 'is-focused',\n  openState: 'is-open',\n  disabledState: 'is-disabled',\n  highlightedState: 'is-highlighted',\n  selectedState: 'is-selected',\n  flippedState: 'is-flipped',\n  loadingState: 'is-loading',\n  noResults: 'has-no-results',\n  noChoices: 'has-no-choices'\n};\nexports.DEFAULT_CONFIG = {\n  items: [],\n  choices: [],\n  silent: false,\n  renderChoiceLimit: -1,\n  maxItemCount: -1,\n  addItems: true,\n  addItemFilter: null,\n  removeItems: true,\n  removeItemButton: false,\n  editItems: false,\n  allowHTML: true,\n  duplicateItemsAllowed: true,\n  delimiter: ',',\n  paste: true,\n  searchEnabled: true,\n  searchChoices: true,\n  searchFloor: 1,\n  searchResultLimit: 4,\n  searchFields: ['label', 'value'],\n  position: 'auto',\n  resetScrollPosition: true,\n  shouldSort: true,\n  shouldSortItems: false,\n  sorter: utils_1.sortByAlpha,\n  placeholder: true,\n  placeholderValue: null,\n  searchPlaceholderValue: null,\n  prependValue: null,\n  appendValue: null,\n  renderSelectedChoices: 'auto',\n  loadingText: 'Loading...',\n  noResultsText: 'No results found',\n  noChoicesText: 'No choices to choose from',\n  itemSelectText: 'Press to select',\n  uniqueItemText: 'Only unique values can be added',\n  customAddItemText: 'Only values matching specific conditions can be added',\n  addItemText: function (value) {\n    return \"Press Enter to add <b>\\\"\".concat((0, utils_1.sanitise)(value), \"\\\"</b>\");\n  },\n  maxItemText: function (maxItemCount) {\n    return \"Only \".concat(maxItemCount, \" values can be added\");\n  },\n  valueComparer: function (value1, value2) {\n    return value1 === value2;\n  },\n  fuseOptions: {\n    includeScore: true\n  },\n  labelId: '',\n  callbackOnInit: null,\n  callbackOnCreateTemplates: null,\n  classNames: exports.DEFAULT_CLASSNAMES\n};\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 978:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 533:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  Object.defineProperty(o, k2, {\n    enumerable: true,\n    get: function () {\n      return m[k];\n    }\n  });\n} : function (o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n__exportStar(__webpack_require__(18), exports);\n\n__exportStar(__webpack_require__(978), exports);\n\n__exportStar(__webpack_require__(948), exports);\n\n__exportStar(__webpack_require__(359), exports);\n\n__exportStar(__webpack_require__(285), exports);\n\n__exportStar(__webpack_require__(533), exports);\n\n__exportStar(__webpack_require__(287), exports);\n\n__exportStar(__webpack_require__(132), exports);\n\n__exportStar(__webpack_require__(837), exports);\n\n__exportStar(__webpack_require__(598), exports);\n\n__exportStar(__webpack_require__(369), exports);\n\n__exportStar(__webpack_require__(37), exports);\n\n__exportStar(__webpack_require__(47), exports);\n\n__exportStar(__webpack_require__(923), exports);\n\n__exportStar(__webpack_require__(876), exports);\n\n/***/ }),\n\n/***/ 287:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 837:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 923:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 876:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n\n/***/ }),\n\n/***/ 799:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.diff = exports.cloneObject = exports.existsInArray = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.wrap = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;\n\nvar getRandomNumber = function (min, max) {\n  return Math.floor(Math.random() * (max - min) + min);\n};\n\nexports.getRandomNumber = getRandomNumber;\n\nvar generateChars = function (length) {\n  return Array.from({\n    length: length\n  }, function () {\n    return (0, exports.getRandomNumber)(0, 36).toString(36);\n  }).join('');\n};\n\nexports.generateChars = generateChars;\n\nvar generateId = function (element, prefix) {\n  var id = element.id || element.name && \"\".concat(element.name, \"-\").concat((0, exports.generateChars)(2)) || (0, exports.generateChars)(4);\n  id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n  id = \"\".concat(prefix, \"-\").concat(id);\n  return id;\n};\n\nexports.generateId = generateId;\n\nvar getType = function (obj) {\n  return Object.prototype.toString.call(obj).slice(8, -1);\n};\n\nexports.getType = getType;\n\nvar isType = function (type, obj) {\n  return obj !== undefined && obj !== null && (0, exports.getType)(obj) === type;\n};\n\nexports.isType = isType;\n\nvar wrap = function (element, wrapper) {\n  if (wrapper === void 0) {\n    wrapper = document.createElement('div');\n  }\n\n  if (element.parentNode) {\n    if (element.nextSibling) {\n      element.parentNode.insertBefore(wrapper, element.nextSibling);\n    } else {\n      element.parentNode.appendChild(wrapper);\n    }\n  }\n\n  return wrapper.appendChild(element);\n};\n\nexports.wrap = wrap;\n\nvar getAdjacentEl = function (startEl, selector, direction) {\n  if (direction === void 0) {\n    direction = 1;\n  }\n\n  var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n  var sibling = startEl[prop];\n\n  while (sibling) {\n    if (sibling.matches(selector)) {\n      return sibling;\n    }\n\n    sibling = sibling[prop];\n  }\n\n  return sibling;\n};\n\nexports.getAdjacentEl = getAdjacentEl;\n\nvar isScrolledIntoView = function (element, parent, direction) {\n  if (direction === void 0) {\n    direction = 1;\n  }\n\n  if (!element) {\n    return false;\n  }\n\n  var isVisible;\n\n  if (direction > 0) {\n    // In view from bottom\n    isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n  } else {\n    // In view from top\n    isVisible = element.offsetTop >= parent.scrollTop;\n  }\n\n  return isVisible;\n};\n\nexports.isScrolledIntoView = isScrolledIntoView;\n\nvar sanitise = function (value) {\n  if (typeof value !== 'string') {\n    return value;\n  }\n\n  return value.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/\"/g, '&quot;');\n};\n\nexports.sanitise = sanitise;\n\nexports.strToEl = function () {\n  var tmpEl = document.createElement('div');\n  return function (str) {\n    var cleanedInput = str.trim();\n    tmpEl.innerHTML = cleanedInput;\n    var firldChild = tmpEl.children[0];\n\n    while (tmpEl.firstChild) {\n      tmpEl.removeChild(tmpEl.firstChild);\n    }\n\n    return firldChild;\n  };\n}();\n\nvar sortByAlpha = function (_a, _b) {\n  var value = _a.value,\n      _c = _a.label,\n      label = _c === void 0 ? value : _c;\n  var value2 = _b.value,\n      _d = _b.label,\n      label2 = _d === void 0 ? value2 : _d;\n  return label.localeCompare(label2, [], {\n    sensitivity: 'base',\n    ignorePunctuation: true,\n    numeric: true\n  });\n};\n\nexports.sortByAlpha = sortByAlpha;\n\nvar sortByScore = function (a, b) {\n  var _a = a.score,\n      scoreA = _a === void 0 ? 0 : _a;\n  var _b = b.score,\n      scoreB = _b === void 0 ? 0 : _b;\n  return scoreA - scoreB;\n};\n\nexports.sortByScore = sortByScore;\n\nvar dispatchEvent = function (element, type, customArgs) {\n  if (customArgs === void 0) {\n    customArgs = null;\n  }\n\n  var event = new CustomEvent(type, {\n    detail: customArgs,\n    bubbles: true,\n    cancelable: true\n  });\n  return element.dispatchEvent(event);\n};\n\nexports.dispatchEvent = dispatchEvent;\n\nvar existsInArray = function (array, value, key) {\n  if (key === void 0) {\n    key = 'value';\n  }\n\n  return array.some(function (item) {\n    if (typeof value === 'string') {\n      return item[key] === value.trim();\n    }\n\n    return item[key] === value;\n  });\n};\n\nexports.existsInArray = existsInArray;\n\nvar cloneObject = function (obj) {\n  return JSON.parse(JSON.stringify(obj));\n};\n\nexports.cloneObject = cloneObject;\n/**\n * Returns an array of keys present on the first but missing on the second object\n */\n\nvar diff = function (a, b) {\n  var aKeys = Object.keys(a).sort();\n  var bKeys = Object.keys(b).sort();\n  return aKeys.filter(function (i) {\n    return bKeys.indexOf(i) < 0;\n  });\n};\n\nexports.diff = diff;\n\n/***/ }),\n\n/***/ 273:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\n\nfunction choices(state, action) {\n  if (state === void 0) {\n    state = exports.defaultState;\n  }\n\n  if (action === void 0) {\n    action = {};\n  }\n\n  switch (action.type) {\n    case 'ADD_CHOICE':\n      {\n        var addChoiceAction = action;\n        var choice = {\n          id: addChoiceAction.id,\n          elementId: addChoiceAction.elementId,\n          groupId: addChoiceAction.groupId,\n          value: addChoiceAction.value,\n          label: addChoiceAction.label || addChoiceAction.value,\n          disabled: addChoiceAction.disabled || false,\n          selected: false,\n          active: true,\n          score: 9999,\n          customProperties: addChoiceAction.customProperties,\n          placeholder: addChoiceAction.placeholder || false\n        };\n        /*\n          A disabled choice appears in the choice dropdown but cannot be selected\n          A selected choice has been added to the passed input's value (added as an item)\n          An active choice appears within the choice dropdown\n        */\n\n        return __spreadArray(__spreadArray([], state, true), [choice], false);\n      }\n\n    case 'ADD_ITEM':\n      {\n        var addItemAction_1 = action; // When an item is added and it has an associated choice,\n        // we want to disable it so it can't be chosen again\n\n        if (addItemAction_1.choiceId > -1) {\n          return state.map(function (obj) {\n            var choice = obj;\n\n            if (choice.id === parseInt(\"\".concat(addItemAction_1.choiceId), 10)) {\n              choice.selected = true;\n            }\n\n            return choice;\n          });\n        }\n\n        return state;\n      }\n\n    case 'REMOVE_ITEM':\n      {\n        var removeItemAction_1 = action; // When an item is removed and it has an associated choice,\n        // we want to re-enable it so it can be chosen again\n\n        if (removeItemAction_1.choiceId && removeItemAction_1.choiceId > -1) {\n          return state.map(function (obj) {\n            var choice = obj;\n\n            if (choice.id === parseInt(\"\".concat(removeItemAction_1.choiceId), 10)) {\n              choice.selected = false;\n            }\n\n            return choice;\n          });\n        }\n\n        return state;\n      }\n\n    case 'FILTER_CHOICES':\n      {\n        var filterChoicesAction_1 = action;\n        return state.map(function (obj) {\n          var choice = obj; // Set active state based on whether choice is\n          // within filtered results\n\n          choice.active = filterChoicesAction_1.results.some(function (_a) {\n            var item = _a.item,\n                score = _a.score;\n\n            if (item.id === choice.id) {\n              choice.score = score;\n              return true;\n            }\n\n            return false;\n          });\n          return choice;\n        });\n      }\n\n    case 'ACTIVATE_CHOICES':\n      {\n        var activateChoicesAction_1 = action;\n        return state.map(function (obj) {\n          var choice = obj;\n          choice.active = activateChoicesAction_1.active;\n          return choice;\n        });\n      }\n\n    case 'CLEAR_CHOICES':\n      {\n        return exports.defaultState;\n      }\n\n    default:\n      {\n        return state;\n      }\n  }\n}\n\nexports[\"default\"] = choices;\n\n/***/ }),\n\n/***/ 871:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\n\nfunction groups(state, action) {\n  if (state === void 0) {\n    state = exports.defaultState;\n  }\n\n  if (action === void 0) {\n    action = {};\n  }\n\n  switch (action.type) {\n    case 'ADD_GROUP':\n      {\n        var addGroupAction = action;\n        return __spreadArray(__spreadArray([], state, true), [{\n          id: addGroupAction.id,\n          value: addGroupAction.value,\n          active: addGroupAction.active,\n          disabled: addGroupAction.disabled\n        }], false);\n      }\n\n    case 'CLEAR_CHOICES':\n      {\n        return [];\n      }\n\n    default:\n      {\n        return state;\n      }\n  }\n}\n\nexports[\"default\"] = groups;\n\n/***/ }),\n\n/***/ 655:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.defaultState = void 0;\n\nvar redux_1 = __webpack_require__(857);\n\nvar items_1 = __importDefault(__webpack_require__(52));\n\nvar groups_1 = __importDefault(__webpack_require__(871));\n\nvar choices_1 = __importDefault(__webpack_require__(273));\n\nvar loading_1 = __importDefault(__webpack_require__(502));\n\nvar utils_1 = __webpack_require__(799);\n\nexports.defaultState = {\n  groups: [],\n  items: [],\n  choices: [],\n  loading: false\n};\nvar appReducer = (0, redux_1.combineReducers)({\n  items: items_1.default,\n  groups: groups_1.default,\n  choices: choices_1.default,\n  loading: loading_1.default\n});\n\nvar rootReducer = function (passedState, action) {\n  var state = passedState; // If we are clearing all items, groups and options we reassign\n  // state and then pass that state to our proper reducer. This isn't\n  // mutating our actual state\n  // See: http://stackoverflow.com/a/35641992\n\n  if (action.type === 'CLEAR_ALL') {\n    state = exports.defaultState;\n  } else if (action.type === 'RESET_TO') {\n    return (0, utils_1.cloneObject)(action.state);\n  }\n\n  return appReducer(state, action);\n};\n\nexports[\"default\"] = rootReducer;\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\n\nfunction items(state, action) {\n  if (state === void 0) {\n    state = exports.defaultState;\n  }\n\n  if (action === void 0) {\n    action = {};\n  }\n\n  switch (action.type) {\n    case 'ADD_ITEM':\n      {\n        var addItemAction = action; // Add object to items array\n\n        var newState = __spreadArray(__spreadArray([], state, true), [{\n          id: addItemAction.id,\n          choiceId: addItemAction.choiceId,\n          groupId: addItemAction.groupId,\n          value: addItemAction.value,\n          label: addItemAction.label,\n          active: true,\n          highlighted: false,\n          customProperties: addItemAction.customProperties,\n          placeholder: addItemAction.placeholder || false,\n          keyCode: null\n        }], false);\n\n        return newState.map(function (obj) {\n          var item = obj;\n          item.highlighted = false;\n          return item;\n        });\n      }\n\n    case 'REMOVE_ITEM':\n      {\n        // Set item to inactive\n        return state.map(function (obj) {\n          var item = obj;\n\n          if (item.id === action.id) {\n            item.active = false;\n          }\n\n          return item;\n        });\n      }\n\n    case 'HIGHLIGHT_ITEM':\n      {\n        var highlightItemAction_1 = action;\n        return state.map(function (obj) {\n          var item = obj;\n\n          if (item.id === highlightItemAction_1.id) {\n            item.highlighted = highlightItemAction_1.highlighted;\n          }\n\n          return item;\n        });\n      }\n\n    default:\n      {\n        return state;\n      }\n  }\n}\n\nexports[\"default\"] = items;\n\n/***/ }),\n\n/***/ 502:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = false;\n\nvar general = function (state, action) {\n  if (state === void 0) {\n    state = exports.defaultState;\n  }\n\n  if (action === void 0) {\n    action = {};\n  }\n\n  switch (action.type) {\n    case 'SET_IS_LOADING':\n      {\n        return action.isLoading;\n      }\n\n    default:\n      {\n        return state;\n      }\n  }\n};\n\nexports[\"default\"] = general;\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nvar redux_1 = __webpack_require__(857);\n\nvar index_1 = __importDefault(__webpack_require__(655));\n\nvar Store =\n/** @class */\nfunction () {\n  function Store() {\n    this._store = (0, redux_1.createStore)(index_1.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n  }\n  /**\n   * Subscribe store to function call (wrapped Redux method)\n   */\n\n\n  Store.prototype.subscribe = function (onChange) {\n    this._store.subscribe(onChange);\n  };\n  /**\n   * Dispatch event to store (wrapped Redux method)\n   */\n\n\n  Store.prototype.dispatch = function (action) {\n    this._store.dispatch(action);\n  };\n\n  Object.defineProperty(Store.prototype, \"state\", {\n    /**\n     * Get store object (wrapping Redux method)\n     */\n    get: function () {\n      return this._store.getState();\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"items\", {\n    /**\n     * Get items from store\n     */\n    get: function () {\n      return this.state.items;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"activeItems\", {\n    /**\n     * Get active items from store\n     */\n    get: function () {\n      return this.items.filter(function (item) {\n        return item.active === true;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n    /**\n     * Get highlighted items from store\n     */\n    get: function () {\n      return this.items.filter(function (item) {\n        return item.active && item.highlighted;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"choices\", {\n    /**\n     * Get choices from store\n     */\n    get: function () {\n      return this.state.choices;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"activeChoices\", {\n    /**\n     * Get active choices from store\n     */\n    get: function () {\n      return this.choices.filter(function (choice) {\n        return choice.active === true;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"selectableChoices\", {\n    /**\n     * Get selectable choices from store\n     */\n    get: function () {\n      return this.choices.filter(function (choice) {\n        return choice.disabled !== true;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"searchableChoices\", {\n    /**\n     * Get choices that can be searched (excluding placeholders)\n     */\n    get: function () {\n      return this.selectableChoices.filter(function (choice) {\n        return choice.placeholder !== true;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"placeholderChoice\", {\n    /**\n     * Get placeholder choice from store\n     */\n    get: function () {\n      return __spreadArray([], this.choices, true).reverse().find(function (choice) {\n        return choice.placeholder === true;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"groups\", {\n    /**\n     * Get groups from store\n     */\n    get: function () {\n      return this.state.groups;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Store.prototype, \"activeGroups\", {\n    /**\n     * Get active groups from store\n     */\n    get: function () {\n      var _a = this,\n          groups = _a.groups,\n          choices = _a.choices;\n\n      return groups.filter(function (group) {\n        var isActive = group.active === true && group.disabled === false;\n        var hasActiveOptions = choices.some(function (choice) {\n          return choice.active === true && choice.disabled === false;\n        });\n        return isActive && hasActiveOptions;\n      }, []);\n    },\n    enumerable: false,\n    configurable: true\n  });\n  /**\n   * Get loading state from store\n   */\n\n  Store.prototype.isLoading = function () {\n    return this.state.loading;\n  };\n  /**\n   * Get single choice by it's ID\n   */\n\n\n  Store.prototype.getChoiceById = function (id) {\n    return this.activeChoices.find(function (choice) {\n      return choice.id === parseInt(id, 10);\n    });\n  };\n  /**\n   * Get group by group id\n   */\n\n\n  Store.prototype.getGroupById = function (id) {\n    return this.groups.find(function (group) {\n      return group.id === id;\n    });\n  };\n\n  return Store;\n}();\n\nexports[\"default\"] = Store;\n\n/***/ }),\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n */\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nvar templates = {\n  containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n    var containerOuter = _a.classNames.containerOuter;\n    var div = Object.assign(document.createElement('div'), {\n      className: containerOuter\n    });\n    div.dataset.type = passedElementType;\n\n    if (dir) {\n      div.dir = dir;\n    }\n\n    if (isSelectOneElement) {\n      div.tabIndex = 0;\n    }\n\n    if (isSelectElement) {\n      div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n\n      if (searchEnabled) {\n        div.setAttribute('aria-autocomplete', 'list');\n      }\n    }\n\n    div.setAttribute('aria-haspopup', 'true');\n    div.setAttribute('aria-expanded', 'false');\n\n    if (labelId) {\n      div.setAttribute('aria-labeledby', labelId);\n    }\n\n    return div;\n  },\n  containerInner: function (_a) {\n    var containerInner = _a.classNames.containerInner;\n    return Object.assign(document.createElement('div'), {\n      className: containerInner\n    });\n  },\n  itemList: function (_a, isSelectOneElement) {\n    var _b = _a.classNames,\n        list = _b.list,\n        listSingle = _b.listSingle,\n        listItems = _b.listItems;\n    return Object.assign(document.createElement('div'), {\n      className: \"\".concat(list, \" \").concat(isSelectOneElement ? listSingle : listItems)\n    });\n  },\n  placeholder: function (_a, value) {\n    var _b;\n\n    var allowHTML = _a.allowHTML,\n        placeholder = _a.classNames.placeholder;\n    return Object.assign(document.createElement('div'), (_b = {\n      className: placeholder\n    }, _b[allowHTML ? 'innerHTML' : 'innerText'] = value, _b));\n  },\n  item: function (_a, _b, removeItemButton) {\n    var _c, _d;\n\n    var allowHTML = _a.allowHTML,\n        _e = _a.classNames,\n        item = _e.item,\n        button = _e.button,\n        highlightedState = _e.highlightedState,\n        itemSelectable = _e.itemSelectable,\n        placeholder = _e.placeholder;\n    var id = _b.id,\n        value = _b.value,\n        label = _b.label,\n        customProperties = _b.customProperties,\n        active = _b.active,\n        disabled = _b.disabled,\n        highlighted = _b.highlighted,\n        isPlaceholder = _b.placeholder;\n    var div = Object.assign(document.createElement('div'), (_c = {\n      className: item\n    }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c));\n    Object.assign(div.dataset, {\n      item: '',\n      id: id,\n      value: value,\n      customProperties: customProperties\n    });\n\n    if (active) {\n      div.setAttribute('aria-selected', 'true');\n    }\n\n    if (disabled) {\n      div.setAttribute('aria-disabled', 'true');\n    }\n\n    if (isPlaceholder) {\n      div.classList.add(placeholder);\n    }\n\n    div.classList.add(highlighted ? highlightedState : itemSelectable);\n\n    if (removeItemButton) {\n      if (disabled) {\n        div.classList.remove(itemSelectable);\n      }\n\n      div.dataset.deletable = '';\n      /** @todo This MUST be localizable, not hardcoded! */\n\n      var REMOVE_ITEM_TEXT = 'Remove item';\n      var removeButton = Object.assign(document.createElement('button'), (_d = {\n        type: 'button',\n        className: button\n      }, _d[allowHTML ? 'innerHTML' : 'innerText'] = REMOVE_ITEM_TEXT, _d));\n      removeButton.setAttribute('aria-label', \"\".concat(REMOVE_ITEM_TEXT, \": '\").concat(value, \"'\"));\n      removeButton.dataset.button = '';\n      div.appendChild(removeButton);\n    }\n\n    return div;\n  },\n  choiceList: function (_a, isSelectOneElement) {\n    var list = _a.classNames.list;\n    var div = Object.assign(document.createElement('div'), {\n      className: list\n    });\n\n    if (!isSelectOneElement) {\n      div.setAttribute('aria-multiselectable', 'true');\n    }\n\n    div.setAttribute('role', 'listbox');\n    return div;\n  },\n  choiceGroup: function (_a, _b) {\n    var _c;\n\n    var allowHTML = _a.allowHTML,\n        _d = _a.classNames,\n        group = _d.group,\n        groupHeading = _d.groupHeading,\n        itemDisabled = _d.itemDisabled;\n    var id = _b.id,\n        value = _b.value,\n        disabled = _b.disabled;\n    var div = Object.assign(document.createElement('div'), {\n      className: \"\".concat(group, \" \").concat(disabled ? itemDisabled : '')\n    });\n    div.setAttribute('role', 'group');\n    Object.assign(div.dataset, {\n      group: '',\n      id: id,\n      value: value\n    });\n\n    if (disabled) {\n      div.setAttribute('aria-disabled', 'true');\n    }\n\n    div.appendChild(Object.assign(document.createElement('div'), (_c = {\n      className: groupHeading\n    }, _c[allowHTML ? 'innerHTML' : 'innerText'] = value, _c)));\n    return div;\n  },\n  choice: function (_a, _b, selectText) {\n    var _c;\n\n    var allowHTML = _a.allowHTML,\n        _d = _a.classNames,\n        item = _d.item,\n        itemChoice = _d.itemChoice,\n        itemSelectable = _d.itemSelectable,\n        selectedState = _d.selectedState,\n        itemDisabled = _d.itemDisabled,\n        placeholder = _d.placeholder;\n    var id = _b.id,\n        value = _b.value,\n        label = _b.label,\n        groupId = _b.groupId,\n        elementId = _b.elementId,\n        isDisabled = _b.disabled,\n        isSelected = _b.selected,\n        isPlaceholder = _b.placeholder;\n    var div = Object.assign(document.createElement('div'), (_c = {\n      id: elementId\n    }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c.className = \"\".concat(item, \" \").concat(itemChoice), _c));\n\n    if (isSelected) {\n      div.classList.add(selectedState);\n    }\n\n    if (isPlaceholder) {\n      div.classList.add(placeholder);\n    }\n\n    div.setAttribute('role', groupId && groupId > 0 ? 'treeitem' : 'option');\n    Object.assign(div.dataset, {\n      choice: '',\n      id: id,\n      value: value,\n      selectText: selectText\n    });\n\n    if (isDisabled) {\n      div.classList.add(itemDisabled);\n      div.dataset.choiceDisabled = '';\n      div.setAttribute('aria-disabled', 'true');\n    } else {\n      div.classList.add(itemSelectable);\n      div.dataset.choiceSelectable = '';\n    }\n\n    return div;\n  },\n  input: function (_a, placeholderValue) {\n    var _b = _a.classNames,\n        input = _b.input,\n        inputCloned = _b.inputCloned;\n    var inp = Object.assign(document.createElement('input'), {\n      type: 'search',\n      name: 'search_terms',\n      className: \"\".concat(input, \" \").concat(inputCloned),\n      autocomplete: 'off',\n      autocapitalize: 'off',\n      spellcheck: false\n    });\n    inp.setAttribute('role', 'textbox');\n    inp.setAttribute('aria-autocomplete', 'list');\n    inp.setAttribute('aria-label', placeholderValue);\n    return inp;\n  },\n  dropdown: function (_a) {\n    var _b = _a.classNames,\n        list = _b.list,\n        listDropdown = _b.listDropdown;\n    var div = document.createElement('div');\n    div.classList.add(list, listDropdown);\n    div.setAttribute('aria-expanded', 'false');\n    return div;\n  },\n  notice: function (_a, innerText, type) {\n    var _b;\n\n    var allowHTML = _a.allowHTML,\n        _c = _a.classNames,\n        item = _c.item,\n        itemChoice = _c.itemChoice,\n        noResults = _c.noResults,\n        noChoices = _c.noChoices;\n\n    if (type === void 0) {\n      type = '';\n    }\n\n    var classes = [item, itemChoice];\n\n    if (type === 'no-choices') {\n      classes.push(noChoices);\n    } else if (type === 'no-results') {\n      classes.push(noResults);\n    }\n\n    return Object.assign(document.createElement('div'), (_b = {}, _b[allowHTML ? 'innerHTML' : 'innerText'] = innerText, _b.className = classes.join(' '), _b));\n  },\n  option: function (_a) {\n    var label = _a.label,\n        value = _a.value,\n        customProperties = _a.customProperties,\n        active = _a.active,\n        disabled = _a.disabled;\n    var opt = new Option(label, value, false, active);\n\n    if (customProperties) {\n      opt.dataset.customProperties = \"\".concat(customProperties);\n    }\n\n    opt.disabled = !!disabled;\n    return opt;\n  }\n};\nexports[\"default\"] = templates;\n\n/***/ }),\n\n/***/ 996:\n/***/ (function(module) {\n\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 221:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ Fuse; }\n/* harmony export */ });\n/**\n * Fuse.js v6.5.3 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2021 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n  return !Array.isArray\n    ? getTag(value) === '[object Array]'\n    : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value\n  }\n  let result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n  return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n  return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n  return (\n    value === true ||\n    value === false ||\n    (isObjectLike(value) && getTag(value) == '[object Boolean]')\n  )\n}\n\nfunction isObject(value) {\n  return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n  return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n  return value == null\n    ? value === undefined\n      ? '[object Undefined]'\n      : '[object Null]'\n    : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n  `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n  `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n  `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n\n    let totalWeight = 0;\n\n    keys.forEach((key) => {\n      let obj = createKey(key);\n\n      totalWeight += obj.weight;\n\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n\n      totalWeight += obj.weight;\n    });\n\n    // Normalize weights so that their sum is equal to 1\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId]\n  }\n  keys() {\n    return this._keys\n  }\n  toJSON() {\n    return JSON.stringify(this._keys)\n  }\n}\n\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, 'name')) {\n      throw new Error(MISSING_KEY_PROPERTY('name'))\n    }\n\n    const name = key.name;\n    src = name;\n\n    if (hasOwn.call(key, 'weight')) {\n      weight = key.weight;\n\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n      }\n    }\n\n    path = createKeyPath(name);\n    id = createKeyId(name);\n  }\n\n  return { path, id, weight, src }\n}\n\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n  return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n\n  const deepGet = (obj, path, index) => {\n    if (!isDefined(obj)) {\n      return\n    }\n    if (!path[index]) {\n      // If there's no path left, we've arrived at the object we care about.\n      list.push(obj);\n    } else {\n      let key = path[index];\n\n      const value = obj[key];\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      // If we're at the last value in the path, and if it's a string/number/bool,\n      // add it to the list\n      if (\n        index === path.length - 1 &&\n        (isString(value) || isNumber(value) || isBoolean(value))\n      ) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        // Search each item in the array.\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path, index + 1);\n        }\n      } else if (path.length) {\n        // An object. Recurse further.\n        deepGet(value, path, index + 1);\n      }\n    }\n  };\n\n  // Backwards compatibility (since path used to be a string)\n  deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n  return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) =>\n    a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\n\nconst AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\n\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = new Map();\n  const m = Math.pow(10, mantissa);\n\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens)\n      }\n\n      // Default function is 1/sqrt(x), weight makes that variable\n      const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n      // In place of `toFixed(mantissa)`, for faster computation\n      const n = parseFloat(Math.round(norm * m) / m);\n\n      cache.set(numTokens, n);\n\n      return n\n    },\n    clear() {\n      cache.clear();\n    }\n  }\n}\n\nclass FuseIndex {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return\n    }\n\n    this.isCreated = true;\n\n    // List is Array<String>\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      // List is Array<Object>\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n\n    // Change ref index of every subsquent doc\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]]\n  }\n  size() {\n    return this.records.length\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return\n    }\n\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n\n    // Iterate over every key (i.e, path), and fetch the value at that key\n    this.keys.forEach((key, keyIndex) => {\n      // console.log(key)\n      let value = this.getFn(doc, key.path);\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n\n        while (stack.length) {\n          const { nestedArrIndex, value } = stack.pop();\n\n          if (!isDefined(value)) {\n            continue\n          }\n\n          if (isString(value) && !isBlank(value)) {\n            let subRecord = {\n              v: value,\n              i: nestedArrIndex,\n              n: this.norm.get(value)\n            };\n\n            subRecords.push(subRecord);\n          } else if (isArray(value)) {\n            value.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (!isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n\n        record.$[keyIndex] = subRecord;\n      }\n    });\n\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    }\n  }\n}\n\nfunction createIndex(\n  keys,\n  docs,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex\n}\n\nfunction parseIndex(\n  data,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex\n}\n\nfunction computeScore$1(\n  pattern,\n  {\n    errors = 0,\n    currentLocation = 0,\n    expectedLocation = 0,\n    distance = Config.distance,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  const accuracy = errors / pattern.length;\n\n  if (ignoreLocation) {\n    return accuracy\n  }\n\n  const proximity = Math.abs(expectedLocation - currentLocation);\n\n  if (!distance) {\n    // Dodge divide by zero error.\n    return proximity ? 1.0 : accuracy\n  }\n\n  return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n  matchmask = [],\n  minMatchCharLength = Config.minMatchCharLength\n) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n\n  // (i-1 - start) + 1 => i - start\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n\n  return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n  text,\n  pattern,\n  patternAlphabet,\n  {\n    location = Config.location,\n    distance = Config.distance,\n    threshold = Config.threshold,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    includeMatches = Config.includeMatches,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n  }\n\n  const patternLen = pattern.length;\n  // Set starting location at beginning text and initialize the alphabet.\n  const textLen = text.length;\n  // Handle the case when location > text.length\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  // Highest score beyond which we give up.\n  let currentThreshold = threshold;\n  // Is there a nearby exact match? (speedup)\n  let bestLocation = expectedLocation;\n\n  // Performance: only computer matches when the minMatchCharLength > 1\n  // OR if `includeMatches` is true.\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  // A mask of the matches, used for building the indices\n  const matchMask = computeMatches ? Array(textLen) : [];\n\n  let index;\n\n  // Get all exact matches, here for speed up\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n\n  // Reset the best location\n  bestLocation = -1;\n\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n\n  const mask = 1 << (patternLen - 1);\n\n  for (let i = 0; i < patternLen; i += 1) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from the match location we can stray\n    // at this error level.\n    let binMin = 0;\n    let binMid = binMax;\n\n    while (binMin < binMid) {\n      const score = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n\n      if (score <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n\n    // Use the result from this iteration as the maximum for the next.\n    binMax = binMid;\n\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches\n      ? textLen\n      : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n    // Initialize the bit array\n    let bitArr = Array(finish + 2);\n\n    bitArr[finish + 1] = (1 << i) - 1;\n\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n      if (computeMatches) {\n        // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n        matchMask[currentLocation] = +!!charMatch;\n      }\n\n      // First pass: exact match\n      bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n      // Subsequent passes: fuzzy match\n      if (i) {\n        bitArr[j] |=\n          ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n      }\n\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (finalScore <= currentThreshold) {\n          // Indeed it is\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n\n          // Already passed `loc`, downhill from here on in.\n          if (bestLocation <= expectedLocation) {\n            break\n          }\n\n          // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n\n    // No hope for a (better) match at greater error levels.\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    if (score > currentThreshold) {\n      break\n    }\n\n    lastBitArr = bitArr;\n  }\n\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(0.001, finalScore)\n  };\n\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n\n  return result\n}\n\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n  }\n\n  return mask\n}\n\nclass BitapSearch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n    this.chunks = [];\n\n    if (!this.pattern.length) {\n      return\n    }\n\n    const addChunk = (pattern, startIndex) => {\n      this.chunks.push({\n        pattern,\n        alphabet: createPatternAlphabet(pattern),\n        startIndex\n      });\n    };\n\n    const len = this.pattern.length;\n\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n\n    // Exact match\n    if (this.pattern === text) {\n      let result = {\n        isMatch: true,\n        score: 0\n      };\n\n      if (includeMatches) {\n        result.indices = [[0, text.length - 1]];\n      }\n\n      return result\n    }\n\n    // Otherwise, use Bitap algorithm\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n\n      if (isMatch) {\n        hasMatches = true;\n      }\n\n      totalScore += score;\n\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n\n    return result\n  }\n}\n\nclass BaseMatch {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex)\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex)\n  }\n  search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'exact'\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^=(.*)$/\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!(.*)$/\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'prefix-exact'\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-prefix-exact'\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'suffix-exact'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    }\n  }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-suffix-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\nclass FuzzyMatch extends BaseMatch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return 'fuzzy'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^(.*)$/\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text)\n  }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'include'\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^'(.*)$/\n  }\n  search(text) {\n    let location = 0;\n    let index;\n\n    const indices = [];\n    const patternLen = this.pattern.length;\n\n    // Get all exact matches\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n\n    const isMatch = !!indices.length;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    }\n  }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item\n      .trim()\n      .split(SPACE_RE)\n      .filter((item) => item && !!item.trim());\n\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n\n      // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n\n      if (found) {\n        continue\n      }\n\n      // 2. Handle single query matches (i.e, once that are *not* quoted)\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break\n        }\n      }\n    }\n\n    return results\n  })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token       | Match type                 | Description                            |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript`   | fuzzy-match                | Items that fuzzy match `jscript`       |\n * | `=scheme`   | exact-match                | Items that are `scheme`                |\n * | `'python`   | include-match              | Items that include `python`            |\n * | `!ruby`     | inverse-exact-match        | Items that do not include `ruby`       |\n * | `^java`     | prefix-exact-match         | Items that start with `java`           |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$`      | suffix-exact-match         | Items that end with `.js`              |\n * | `!.go$`     | inverse-suffix-exact-match | Items that do not end with `.go`       |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n  constructor(\n    pattern,\n    {\n      isCaseSensitive = Config.isCaseSensitive,\n      includeMatches = Config.includeMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      ignoreLocation = Config.ignoreLocation,\n      findAllMatches = Config.findAllMatches,\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance\n    } = {}\n  ) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n\n  static condition(_, options) {\n    return options.useExtendedSearch\n  }\n\n  searchIn(text) {\n    const query = this.query;\n\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      }\n    }\n\n    const { includeMatches, isCaseSensitive } = this.options;\n\n    text = isCaseSensitive ? text : text.toLowerCase();\n\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n\n    // ORs\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers = query[i];\n\n      // Reset indices\n      allIndices.length = 0;\n      numMatches = 0;\n\n      // ANDs\n      for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n        const searcher = searchers[j];\n        const { isMatch, indices, score } = searcher.search(text);\n\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break\n        }\n      }\n\n      // OR condition, so if TRUE, return\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n\n        return result\n      }\n    }\n\n    // Nothing was matched\n    return {\n      isMatch: false,\n      score: 1\n    }\n  }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options)\n    }\n  }\n\n  return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n  AND: '$and',\n  OR: '$or'\n};\n\nconst KeyType = {\n  PATH: '$path',\n  PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n  !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n  !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query) => {\n    let keys = Object.keys(query);\n\n    const isQueryPath = isPath(query);\n\n    if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n      return next(convertToExplicit(query))\n    }\n\n    if (isLeaf(query)) {\n      const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n      const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n      }\n\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n\n      return obj\n    }\n\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n\n    keys.forEach((key) => {\n      const value = query[key];\n\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n\n    return node\n  };\n\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n\n  return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n  results,\n  { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n  results.forEach((result) => {\n    let totalScore = 1;\n\n    result.matches.forEach(({ key, norm, score }) => {\n      const weight = key ? key.weight : null;\n\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n      );\n    });\n\n    result.score = totalScore;\n  });\n}\n\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n\n  if (!isDefined(matches)) {\n    return\n  }\n\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return\n    }\n\n    const { indices, value } = match;\n\n    let obj = {\n      indices,\n      value\n    };\n\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n\n    data.matches.push(obj);\n  });\n}\n\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\n\nfunction format(\n  results,\n  docs,\n  {\n    includeMatches = Config.includeMatches,\n    includeScore = Config.includeScore\n  } = {}\n) {\n  const transformers = [];\n\n  if (includeMatches) transformers.push(transformMatches);\n  if (includeScore) transformers.push(transformScore);\n\n  return results.map((result) => {\n    const { idx } = result;\n\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n\n    return data\n  })\n}\n\nclass Fuse {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n\n    if (\n      this.options.useExtendedSearch &&\n      !true\n    ) {}\n\n    this._keyStore = new KeyStore(this.options.keys);\n\n    this.setCollection(docs, index);\n  }\n\n  setCollection(docs, index) {\n    this._docs = docs;\n\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE)\n    }\n\n    this._myIndex =\n      index ||\n      createIndex(this.options.keys, this._docs, {\n        getFn: this.options.getFn,\n        fieldNormWeight: this.options.fieldNormWeight\n      });\n  }\n\n  add(doc) {\n    if (!isDefined(doc)) {\n      return\n    }\n\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n\n  remove(predicate = (/* doc, idx */) => false) {\n    const results = [];\n\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n\n        results.push(doc);\n      }\n    }\n\n    return results\n  }\n\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n\n  getIndex() {\n    return this._myIndex\n  }\n\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n\n    let results = isString(query)\n      ? isString(this._docs[0])\n        ? this._searchStringList(query)\n        : this._searchObjectList(query)\n      : this._searchLogical(query);\n\n    computeScore(results, { ignoreFieldNorm });\n\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    })\n  }\n\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n\n    // Iterate over every string in the index\n    records.forEach(({ v: text, i: idx, n: norm }) => {\n      if (!isDefined(text)) {\n        return\n      }\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm, indices }]\n        });\n      }\n    });\n\n    return results\n  }\n\n  _searchLogical(query) {\n\n    const expression = parse(query, this.options);\n\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ]\n        }\n\n        return []\n      }\n\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return []\n        }\n      }\n      return res\n    };\n\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n\n        if (expResults.length) {\n          // Dedupe when adding\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n\n    return results\n  }\n\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n\n    // List is Array<Object>\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return\n      }\n\n      let matches = [];\n\n      // Iterate over every key (i.e, path), and fetch the value at that key\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n\n    return results\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return []\n    }\n\n    let matches = [];\n\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm }) => {\n        if (!isDefined(text)) {\n          return\n        }\n\n        const { isMatch, score, indices } = searcher.searchIn(text);\n\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm } = value;\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm, indices });\n      }\n    }\n\n    return matches\n  }\n}\n\nFuse.version = '6.5.3';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n  Fuse.parseQuery = parse;\n}\n\n{\n  register(ExtendedSearch);\n}\n\n\n\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n  \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n  \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n  \"combineReducers\": function() { return /* binding */ combineReducers; },\n  \"compose\": function() { return /* binding */ compose; },\n  \"createStore\": function() { return /* binding */ createStore; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n;// CONCATENATED MODULE: ./node_modules/redux/es/redux.js\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (false) {}\n\n  return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error( true ? formatProdErrorMessage(0) : 0);\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error( true ? formatProdErrorMessage(1) : 0);\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error( true ? formatProdErrorMessage(2) : 0);\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error( true ? formatProdErrorMessage(3) : 0);\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error( true ? formatProdErrorMessage(4) : 0);\n    }\n\n    if (isDispatching) {\n      throw new Error( true ? formatProdErrorMessage(5) : 0);\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error( true ? formatProdErrorMessage(6) : 0);\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error( true ? formatProdErrorMessage(7) : 0);\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error( true ? formatProdErrorMessage(8) : 0);\n    }\n\n    if (isDispatching) {\n      throw new Error( true ? formatProdErrorMessage(9) : 0);\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error( true ? formatProdErrorMessage(10) : 0);\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error( true ? formatProdErrorMessage(11) : 0);\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error( true ? formatProdErrorMessage(12) : 0);\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error( true ? formatProdErrorMessage(13) : 0);\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (false) {}\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (false) {}\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (false) { var warningMessage; }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error( true ? formatProdErrorMessage(14) : 0);\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error( true ? formatProdErrorMessage(16) : 0);\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error( true ? formatProdErrorMessage(15) : 0);\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread2(_objectSpread2({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373);\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scripts_choices__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _scripts_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(883);\n/* harmony import */ var _scripts_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(789);\n/* harmony import */ var _scripts_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(686);\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default()));\n\n}();\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","var t=function(){return t=Object.assign||function(t){for(var i,n=1,s=arguments.length;n<s;n++)for(var a in i=arguments[n])Object.prototype.hasOwnProperty.call(i,a)&&(t[a]=i[a]);return t},t.apply(this,arguments)},i=function(){function i(i,n,s){var a=this;this.endVal=n,this.options=s,this.version=\"2.8.0\",this.defaults={startVal:0,decimalPlaces:0,duration:2,useEasing:!0,useGrouping:!0,useIndianSeparators:!1,smartEasingThreshold:999,smartEasingAmount:333,separator:\",\",decimal:\".\",prefix:\"\",suffix:\"\",enableScrollSpy:!1,scrollSpyDelay:200,scrollSpyOnce:!1},this.finalEndVal=null,this.useEasing=!0,this.countDown=!1,this.error=\"\",this.startVal=0,this.paused=!0,this.once=!1,this.count=function(t){a.startTime||(a.startTime=t);var i=t-a.startTime;a.remaining=a.duration-i,a.useEasing?a.countDown?a.frameVal=a.startVal-a.easingFn(i,0,a.startVal-a.endVal,a.duration):a.frameVal=a.easingFn(i,a.startVal,a.endVal-a.startVal,a.duration):a.frameVal=a.startVal+(a.endVal-a.startVal)*(i/a.duration);var n=a.countDown?a.frameVal<a.endVal:a.frameVal>a.endVal;a.frameVal=n?a.endVal:a.frameVal,a.frameVal=Number(a.frameVal.toFixed(a.options.decimalPlaces)),a.printValue(a.frameVal),i<a.duration?a.rAF=requestAnimationFrame(a.count):null!==a.finalEndVal?a.update(a.finalEndVal):a.options.onCompleteCallback&&a.options.onCompleteCallback()},this.formatNumber=function(t){var i,n,s,e,o=t<0?\"-\":\"\";i=Math.abs(t).toFixed(a.options.decimalPlaces);var r=(i+=\"\").split(\".\");if(n=r[0],s=r.length>1?a.options.decimal+r[1]:\"\",a.options.useGrouping){e=\"\";for(var l=3,h=0,u=0,p=n.length;u<p;++u)a.options.useIndianSeparators&&4===u&&(l=2,h=1),0!==u&&h%l==0&&(e=a.options.separator+e),h++,e=n[p-u-1]+e;n=e}return a.options.numerals&&a.options.numerals.length&&(n=n.replace(/[0-9]/g,(function(t){return a.options.numerals[+t]})),s=s.replace(/[0-9]/g,(function(t){return a.options.numerals[+t]}))),o+a.options.prefix+n+s+a.options.suffix},this.easeOutExpo=function(t,i,n,s){return n*(1-Math.pow(2,-10*t/s))*1024/1023+i},this.options=t(t({},this.defaults),s),this.formattingFn=this.options.formattingFn?this.options.formattingFn:this.formatNumber,this.easingFn=this.options.easingFn?this.options.easingFn:this.easeOutExpo,this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.endVal=this.validateValue(n),this.options.decimalPlaces=Math.max(this.options.decimalPlaces),this.resetDuration(),this.options.separator=String(this.options.separator),this.useEasing=this.options.useEasing,\"\"===this.options.separator&&(this.options.useGrouping=!1),this.el=\"string\"==typeof i?document.getElementById(i):i,this.el?this.printValue(this.startVal):this.error=\"[CountUp] target is null or undefined\",\"undefined\"!=typeof window&&this.options.enableScrollSpy&&(this.error?console.error(this.error,i):(window.onScrollFns=window.onScrollFns||[],window.onScrollFns.push((function(){return a.handleScroll(a)})),window.onscroll=function(){window.onScrollFns.forEach((function(t){return t()}))},this.handleScroll(this)))}return i.prototype.handleScroll=function(t){if(t&&window&&!t.once){var i=window.innerHeight+window.scrollY,n=t.el.getBoundingClientRect(),s=n.top+window.pageYOffset,a=n.top+n.height+window.pageYOffset;a<i&&a>window.scrollY&&t.paused?(t.paused=!1,setTimeout((function(){return t.start()}),t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):(window.scrollY>a||s>i)&&!t.paused&&t.reset()}},i.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},i.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},i.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},i.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},i.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},i.prototype.printValue=function(t){var i;if(this.el){var n=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,n);else if(\"INPUT\"===this.el.tagName)this.el.value=n;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=n:this.el.innerHTML=n}},i.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},i.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},i.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},i}();export{i as CountUp};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:\\\"\\\";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/tippy.js/dist/tippy.css\"],\"names\":[],\"mappings\":\"AAAA,mDAAmD,SAAS,CAAC,kBAAkB,4BAA4B,CAAC,WAAW,iBAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,gDAAgD,CAAC,6CAA6C,QAAQ,CAAC,oDAAoD,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,2BAA2B,CAAC,gDAAgD,KAAK,CAAC,uDAAuD,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,8BAA8B,CAAC,8CAA8C,OAAO,CAAC,qDAAqD,0BAA0B,CAAC,yBAAyB,CAAC,UAAU,CAAC,4BAA4B,CAAC,+CAA+C,MAAM,CAAC,sDAAsD,SAAS,CAAC,0BAA0B,CAAC,0BAA0B,CAAC,6BAA6B,CAAC,6CAA6C,yDAAyD,CAAC,aAAa,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,UAAU,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,eAAe,iBAAiB,CAAC,eAAe,CAAC,SAAS\",\"sourcesContent\":[\".tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:\\\"\\\";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join(\"\");\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === \"string\") {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, \"\"]];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n  var _item = _slicedToArray(item, 4),\n      content = _item[1],\n      cssMapping = _item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (typeof btoa === \"function\") {\n    // eslint-disable-next-line no-undef\n    var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n    var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n    var sourceMapping = \"/*# \".concat(data, \" */\");\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n  }\n\n  return [content].join(\"\\n\");\n};","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self).GLightbox=t()}(this,(function(){\"use strict\";function e(t){return(e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}var s=Date.now();function l(){var e={},t=!0,i=0,n=arguments.length;\"[object Boolean]\"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],i++);for(var s=function(i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t&&\"[object Object]\"===Object.prototype.toString.call(i[n])?e[n]=l(!0,e[n],i[n]):e[n]=i[n])};i<n;i++){var o=arguments[i];s(o)}return e}function o(e,t){if((k(e)||e===window||e===document)&&(e=[e]),A(e)||L(e)||(e=[e]),0!=P(e))if(A(e)&&!L(e))for(var i=e.length,n=0;n<i&&!1!==t.call(e[n],e[n],n,e);n++);else if(L(e))for(var s in e)if(O(e,s)&&!1===t.call(e[s],e[s],s,e))break}function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[s]=e[s]||[],l={all:n,evt:null,found:null};return t&&i&&P(n)>0&&o(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return l.found=!0,l.evt=n,!1})),l}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,a=t.once,h=void 0!==a&&a,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){T(n)&&n.call(u,e,this),h&&v.destroy()}return C(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){o(g,(function(t){var i=r(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},o(g,(function(t){var i=r(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function h(e,t){o(t.split(\" \"),(function(t){return e.classList.add(t)}))}function d(e,t){o(t.split(\" \"),(function(t){return e.classList.remove(t)}))}function c(e,t){return e.classList.contains(t)}function u(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if(\"function\"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||\"\"===t)return!1;if(\"none\"==t)return T(i)&&i(),!1;var n=x(),s=t.split(\" \");o(s,(function(t){h(e,\"g\"+t)})),a(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){o(s,(function(e){d(t,\"g\"+e)})),T(i)&&i()}})}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\";if(\"\"==t)return e.style.webkitTransform=\"\",e.style.MozTransform=\"\",e.style.msTransform=\"\",e.style.OTransform=\"\",e.style.transform=\"\",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function f(e){e.style.display=\"block\"}function p(e){e.style.display=\"none\"}function m(e){var t=document.createDocumentFragment(),i=document.createElement(\"div\");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function y(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function x(){var e,t=document.createElement(\"fakeelement\"),i={animation:\"animationend\",OAnimation:\"oAnimationEnd\",MozAnimation:\"animationend\",WebkitAnimation:\"webkitAnimationEnd\"};for(e in i)if(void 0!==t.style[e])return i[e]}function b(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function S(e,t,i){if(I(e))console.error(\"Inject assets error\");else if(T(t)&&(i=t,t=!1),C(t)&&t in window)T(i)&&i();else{var n;if(-1!==e.indexOf(\".css\")){if((n=document.querySelectorAll('link[href=\"'+e+'\"]'))&&n.length>0)return void(T(i)&&i());var s=document.getElementsByTagName(\"head\")[0],l=s.querySelectorAll('link[rel=\"stylesheet\"]'),o=document.createElement(\"link\");return o.rel=\"stylesheet\",o.type=\"text/css\",o.href=e,o.media=\"all\",l?s.insertBefore(o,l[0]):s.appendChild(o),void(T(i)&&i())}if((n=document.querySelectorAll('script[src=\"'+e+'\"]'))&&n.length>0){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement(\"script\");r.type=\"text/javascript\",r.src=e,r.onload=function(){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function w(){return\"navigator\"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function T(e){return\"function\"==typeof e}function C(e){return\"string\"==typeof e}function k(e){return!(!e||!e.nodeType||1!=e.nodeType)}function E(e){return Array.isArray(e)}function A(e){return e&&e.length&&isFinite(e.length)}function L(t){return\"object\"===e(t)&&null!=t&&!T(t)&&!E(t)}function I(e){return null==e}function O(e,t){return null!==e&&hasOwnProperty.call(e,t)}function P(e){if(L(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)O(e,i)&&t++;return t}return e.length}function z(e){return!isNaN(parseFloat(e))&&isFinite(e)}function M(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(\".gbtn[data-taborder]:not(.disabled)\");if(!t.length)return!1;if(1==t.length)return t[0];\"string\"==typeof e&&(e=parseInt(e));var i=e<0?1:e+1;i>t.length&&(i=\"1\");var n=[];o(t,(function(e){n.push(e.getAttribute(\"data-taborder\"))}));var s=n.filter((function(e){return e>=parseInt(i)})),l=s.sort()[0];return document.querySelector('.gbtn[data-taborder=\"'.concat(l,'\"]'))}function X(e){if(e.events.hasOwnProperty(\"keyboard\"))return!1;e.events.keyboard=a(\"keydown\",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(\".gbtn.focused\");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if(\"input\"==l||\"textarea\"==l||\"button\"==l)return}t.preventDefault();var o=document.querySelectorAll(\".gbtn[data-taborder]\");if(!o||o.length<=0)return;if(!s){var r=M();return void(r&&(r.focus(),h(r,\"focused\")))}var a=M(s.getAttribute(\"data-taborder\"));d(s,\"focused\"),a&&(a.focus(),h(a,\"focused\"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}function Y(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function q(e,t){var i=function(e,t){var i=Y(e)*Y(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var N=function(){function e(i){t(this,e),this.handlers=[],this.el=i}return n(e,[{key:\"add\",value:function(e){this.handlers.push(e)}},{key:\"del\",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:\"dispatch\",value:function(){for(var e=0,t=this.handlers.length;e<t;e++){var i=this.handlers[e];\"function\"==typeof i&&i.apply(this.el,arguments)}}}]),e}();function D(e,t){var i=new N(e);return i.add(t),i}var _=function(){function e(i,n){t(this,e),this.element=\"string\"==typeof i?document.querySelector(i):i,this.start=this.start.bind(this),this.move=this.move.bind(this),this.end=this.end.bind(this),this.cancel=this.cancel.bind(this),this.element.addEventListener(\"touchstart\",this.start,!1),this.element.addEventListener(\"touchmove\",this.move,!1),this.element.addEventListener(\"touchend\",this.end,!1),this.element.addEventListener(\"touchcancel\",this.cancel,!1),this.preV={x:null,y:null},this.pinchStartLen=null,this.zoom=1,this.isDoubleTap=!1;var s=function(){};this.rotate=D(this.element,n.rotate||s),this.touchStart=D(this.element,n.touchStart||s),this.multipointStart=D(this.element,n.multipointStart||s),this.multipointEnd=D(this.element,n.multipointEnd||s),this.pinch=D(this.element,n.pinch||s),this.swipe=D(this.element,n.swipe||s),this.tap=D(this.element,n.tap||s),this.doubleTap=D(this.element,n.doubleTap||s),this.longTap=D(this.element,n.longTap||s),this.singleTap=D(this.element,n.singleTap||s),this.pressMove=D(this.element,n.pressMove||s),this.twoFingerPressMove=D(this.element,n.twoFingerPressMove||s),this.touchMove=D(this.element,n.touchMove||s),this.touchEnd=D(this.element,n.touchEnd||s),this.touchCancel=D(this.element,n.touchCancel||s),this.translateContainer=this.element,this._cancelAllHandler=this.cancelAll.bind(this),window.addEventListener(\"scroll\",this._cancelAllHandler),this.delta=null,this.last=null,this.now=null,this.tapTimeout=null,this.singleTapTimeout=null,this.longTapTimeout=null,this.swipeTimeout=null,this.x1=this.x2=this.y1=this.y2=null,this.preTapPosition={x:null,y:null}}return n(e,[{key:\"start\",value:function(e){if(e.touches){if(e.target&&e.target.nodeName&&[\"a\",\"button\",\"input\"].indexOf(e.target.nodeName.toLowerCase())>=0)console.log(\"ignore drag for this touched element\",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=Y(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}}},{key:\"move\",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=Y(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=q(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:\"end\",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:\"cancelAll\",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:\"cancel\",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:\"_cancelLongTap\",value:function(){clearTimeout(this.longTapTimeout)}},{key:\"_cancelSingleTap\",value:function(){clearTimeout(this.singleTapTimeout)}},{key:\"_swipeDirection\",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?\"Left\":\"Right\":i-n>0?\"Up\":\"Down\"}},{key:\"on\",value:function(e,t){this[e]&&this[e].add(t)}},{key:\"off\",value:function(e,t){this[e]&&this[e].del(t)}},{key:\"destroy\",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener(\"touchstart\",this.start),this.element.removeEventListener(\"touchmove\",this.move),this.element.removeEventListener(\"touchend\",this.end),this.element.removeEventListener(\"touchcancel\",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener(\"scroll\",this._cancelAllHandler),null}}]),e}();function W(e){var t=function(){var e,t=document.createElement(\"fakeelement\"),i={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=c(e,\"gslide-media\")?e:e.querySelector(\".gslide-media\"),s=u(n,\".ginner-container\"),l=e.querySelector(\".gslide-description\");i>769&&(n=s),h(n,\"greset\"),v(n,\"translate3d(0, 0, 0)\"),a(t,{onElement:n,once:!0,withCallback:function(e,t){d(n,\"greset\")}}),n.style.opacity=\"\",l&&(l.style.opacity=\"\")}function B(e){if(e.events.hasOwnProperty(\"touch\"))return!1;var t,i,n,s=y(),l=s.width,o=s.height,r=!1,a=null,g=null,f=null,p=!1,m=1,x=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},z=0,M=0,X=document.getElementById(\"glightbox-slider\"),Y=document.querySelector(\".goverlay\"),q=new _(X,{touchStart:function(t){if(r=!0,(c(t.targetTouches[0].target,\"ginner-container\")||u(t.targetTouches[0].target,\".gslide-desc\")||\"a\"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),u(t.targetTouches[0].target,\".gslide-inline\")&&!c(t.targetTouches[0].target.parentNode,\"gslide-inline\")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,z=t.targetTouches[0].clientX,M=t.targetTouches[0].clientY,a=e.activeSlide,g=a.querySelector(\".gslide-media\"),n=a.querySelector(\".gslide-inline\"),f=null,c(g,\"gslide-image\")&&(f=g.querySelector(\"img\")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(g=a.querySelector(\".ginner-container\")),d(Y,\"greset\"),t.pageX>20&&t.pageX<window.innerWidth-20)return;t.preventDefault()}},touchMove:function(s){if(r&&(P=s.targetTouches[0],!b&&!S)){if(n&&n.offsetHeight>o){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var h,d=s.targetTouches[0].clientX,c=s.targetTouches[0].clientY,u=z-d,m=M-c;if(Math.abs(u)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&f&&(h=1-Math.abs(i)/o,Y.style.opacity=h,e.settings.touchFollowAxis&&(E=0)),I&&(h=1-Math.abs(t)/l,g.style.opacity=h,e.settings.touchFollowAxis&&(A=0)),!f)return v(g,\"translate3d(\".concat(E,\"%, 0, 0)\"));v(g,\"translate3d(\".concat(E,\"%, \").concat(A,\"%, 0)\"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&f))return t<29&&i<25?(h(Y,\"greset\"),Y.style.opacity=1,W(g)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=x||1},pinch:function(e){if(!f||p)return!1;b=!0,f.scaleX=f.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void f.setAttribute(\"style\",\"\");t>4.5&&(t=4.5),f.style.transform=\"scale3d(\".concat(t,\", \").concat(t,\", 1)\"),x=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n=\"translate3d(\".concat(t,\"px, \").concat(i,\"px, 0)\");x&&(n+=\" scale3d(\".concat(x,\", \").concat(x,\", 1)\")),v(f,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if(\"Left\"==t.direction){if(e.index==e.elements.length-1)return W(g);e.nextSlide()}if(\"Right\"==t.direction){if(0==e.index)return W(g);e.prevSlide()}}}});e.events.touch=q}var H=function(){function e(i,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(t(this,e),this.img=i,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener(\"mousedown\",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener(\"mouseup\",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener(\"mousemove\",(function(e){return s.drag(e)}),!1),this.img.addEventListener(\"click\",(function(e){return s.slide.classList.contains(\"dragging-nav\")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}return n(e,[{key:\"zoomIn\",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute(\"data-style\",t.getAttribute(\"style\")),t.style.maxWidth=t.naturalWidth+\"px\",t.style.maxHeight=t.naturalHeight+\"px\",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add(\"zoomed\"),this.zoomedIn=!0}}},{key:\"zoomOut\",value:function(){this.img.parentNode.setAttribute(\"style\",\"\"),this.img.setAttribute(\"style\",this.img.getAttribute(\"data-style\")),this.slide.classList.remove(\"zoomed\"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&\"function\"==typeof this.onclose&&this.onclose()}},{key:\"dragStart\",value:function(e){e.preventDefault(),this.zoomedIn?(\"touchstart\"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add(\"dragging\"))):this.active=!1}},{key:\"dragEnd\",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove(\"dragging\")}),100)}},{key:\"drag\",value:function(e){this.active&&(e.preventDefault(),\"touchmove\"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:\"onMove\",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:\"setTranslate\",value:function(e,t,i){e.style.transform=\"translate3d(\"+t+\"px, \"+i+\"px, 0)\"}},{key:\"widowWidth\",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),e}(),V=function(){function e(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener(\"mousedown\",(function(e){return i.dragStart(e)}),!1),this.el.addEventListener(\"mouseup\",(function(e){return i.dragEnd(e)}),!1),this.el.addEventListener(\"mousemove\",(function(e){return i.drag(e)}),!1)}return n(e,[{key:\"dragStart\",value:function(e){if(this.slide.classList.contains(\"zoomed\"))this.active=!1;else{\"touchstart\"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains(\"nodrag\")||u(e.target,\".nodrag\")||-1!==[\"input\",\"select\",\"textarea\",\"button\",\"a\"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||\"img\"!==t&&u(e.target,\".gslide-inline\"))&&(this.active=!0,this.el.classList.add(\"dragging\"),this.dragContainer=u(e.target,\".ginner-container\")))}}},{key:\"dragEnd\",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,\"right\"==this.doSlideChange&&this.instance.prevSlide(),\"left\"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove(\"dragging\"),t.slide.classList.remove(\"dragging-nav\"),t.dragContainer.style.transform=\"\",t.dragContainer.style.transition=\"\"}),100)}},{key:\"drag\",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add(\"dragging-nav\"),\"touchmove\"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||\"x\"==this.lastDirection)){this.yOffset=0,this.lastDirection=\"x\",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),\"right\"==n&&this.instance.prevSlide(),void(\"left\"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||\"y\"==this.lastDirection)){this.xOffset=0,this.lastDirection=\"y\",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:\"shouldChange\",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?\"right\":\"left\";(\"left\"==t&&this.slide!==this.slide.parentNode.lastChild||\"right\"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:\"shouldClose\",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:\"setTranslate\",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?\"all .2s ease\":\"\",e.style.transform=\"translate3d(\".concat(t,\"px, \").concat(i,\"px, 0)\")}}]),e}();function j(e,t,i,n){var s=e.querySelector(\".gslide-media\"),l=new Image,o=\"gSlideTitle_\"+i,r=\"gSlideDesc_\"+i;l.addEventListener(\"load\",(function(){T(n)&&n()}),!1),l.src=t.href,\"\"!=t.sizes&&\"\"!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt=\"\",I(t.alt)||\"\"===t.alt||(l.alt=t.alt),\"\"!==t.title&&l.setAttribute(\"aria-labelledby\",o),\"\"!==t.description&&l.setAttribute(\"aria-describedby\",r),t.hasOwnProperty(\"_hasCustomWidth\")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty(\"_hasCustomHeight\")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function F(e,t,i,n){var s=this,l=e.querySelector(\".ginner-container\"),o=\"gvideo\"+i,r=e.querySelector(\".gslide-media\"),a=this.getAllPlayers();h(l,\"gvideo-container\"),r.insertBefore(m('<div class=\"gvideo-wrapper\"></div>'),r.firstChild);var d=e.querySelector(\".gvideo-wrapper\");S(this.settings.plyr.css,\"Plyr\");var c=t.href,u=location.protocol.replace(\":\",\"\"),g=\"\",v=\"\",f=!1;\"file\"==u&&(u=\"http\"),r.style.maxWidth=t.width,S(this.settings.plyr.js,\"Plyr\",(function(){if(c.match(/vimeo\\.com\\/([0-9]*)/)){var l=/vimeo.*\\/(\\d+)/i.exec(c);g=\"vimeo\",v=l[1]}if(c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/)||c.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/)||c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)){var r=function(e){var t=\"\";t=void 0!==(e=e.replace(/(>|<)/gi,\"\").split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/))[2]?(t=e[2].split(/[^0-9a-z_\\-]/i))[0]:e;return t}(c);g=\"youtube\",v=r}if(null!==c.match(/\\.(mp4|ogg|webm|mov)$/)){g=\"local\";var u='<video id=\"'+o+'\" ';u+='style=\"background:#000; max-width: '.concat(t.width,';\" '),u+='preload=\"metadata\" ',u+='x-webkit-airplay=\"allow\" ',u+=\"playsinline \",u+=\"controls \",u+='class=\"gvideo-local\">';var p=c.toLowerCase().split(\".\").pop(),y={mp4:\"\",ogg:\"\",webm:\"\"};for(var x in y[p=\"mov\"==p?\"mp4\":p]=c,y)if(y.hasOwnProperty(x)){var S=y[x];t.hasOwnProperty(x)&&(S=t[x]),\"\"!==S&&(u+='<source src=\"'.concat(S,'\" type=\"video/').concat(x,'\">'))}f=m(u+=\"</video>\")}var w=f||m('<div id=\"'.concat(o,'\" data-plyr-provider=\"').concat(g,'\" data-plyr-embed-id=\"').concat(v,'\"></div>'));h(d,\"\".concat(g,\"-video gvideo\")),d.appendChild(w),d.setAttribute(\"data-id\",o),d.setAttribute(\"data-index\",i);var C=O(s.settings.plyr,\"config\")?s.settings.plyr.config:{},k=new Plyr(\"#\"+o,C);k.on(\"ready\",(function(e){var t=e.detail.plyr;a[o]=t,T(n)&&n()})),b((function(){return e.querySelector(\"iframe\")&&\"true\"==e.querySelector(\"iframe\").dataset.ready}),(function(){s.resize(e)})),k.on(\"enterfullscreen\",R),k.on(\"exitfullscreen\",R)}))}function R(e){var t=u(e.target,\".gslide-media\");\"enterfullscreen\"==e.type&&h(t,\"fullscreen\"),\"exitfullscreen\"==e.type&&d(t,\"fullscreen\")}function G(e,t,i,n){var s,l=this,o=e.querySelector(\".gslide-media\"),r=!(!O(t,\"href\")||!t.href)&&t.href.split(\"#\").pop().trim(),d=!(!O(t,\"content\")||!t.content)&&t.content;if(d&&(C(d)&&(s=m('<div class=\"ginlined-content\">'.concat(d,\"</div>\"))),k(d))){\"none\"==d.style.display&&(d.style.display=\"block\");var c=document.createElement(\"div\");c.className=\"ginlined-content\",c.appendChild(d),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,h(g,\"ginlined-content\"),s=g}if(!s)return console.error(\"Unable to append inline slide content\",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events[\"inlineclose\"+r]=a(\"click\",{onElement:o.querySelectorAll(\".gtrigger-close\"),withCallback:function(e){e.preventDefault(),l.close()}}),T(n)&&n()}function Z(e,t,i,n){var s=e.querySelector(\".gslide-media\"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement(\"iframe\");return l.className=\"vimeo-video gvideo\",l.src=t,l.style.width=\"100%\",l.style.height=\"100%\",i&&l.setAttribute(\"allow\",i),l.onload=function(){h(l,\"node-ready\"),T(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var $=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.defaults={href:\"\",sizes:\"\",srcset:\"\",title:\"\",type:\"\",description:\"\",alt:\"\",descPosition:\"bottom\",effect:\"\",width:\"\",height:\"\",content:!1,zoomable:!0,draggable:!0},L(i)&&(this.defaults=l(this.defaults,i))}return n(e,[{key:\"sourceType\",value:function(e){var t=e;if(null!==(e=e.toLowerCase()).match(/\\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/))return\"image\";if(e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/)||e.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/)||e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/))return\"video\";if(e.match(/vimeo\\.com\\/([0-9]*)/))return\"video\";if(null!==e.match(/\\.(mp4|ogg|webm|mov)/))return\"video\";if(null!==e.match(/\\.(mp3|wav|wma|aac|ogg)/))return\"audio\";if(e.indexOf(\"#\")>-1&&\"\"!==t.split(\"#\").pop().trim())return\"inline\";return e.indexOf(\"goajax=true\")>-1?\"ajax\":\"external\"}},{key:\"parseConfig\",value:function(e,t){var i=this,n=l({descPosition:t.descPosition},this.defaults);if(L(e)&&!k(e)){O(e,\"type\")||(O(e,\"content\")&&e.content?e.type=\"inline\":O(e,\"href\")&&(e.type=this.sourceType(e.href)));var s=l(n,e);return this.setSize(s,t),s}var r=\"\",a=e.getAttribute(\"data-glightbox\"),h=e.nodeName.toLowerCase();if(\"a\"===h&&(r=e.href),\"img\"===h&&(r=e.src,n.alt=e.alt),n.href=r,o(n,(function(s,l){O(t,l)&&\"width\"!==l&&(n[l]=t[l]);var o=e.dataset[l];I(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type=\"inline\"),!n.type&&r&&(n.type=this.sourceType(r)),I(a)){if(!n.title&&\"a\"==h){var d=e.title;I(d)||\"\"===d||(n.title=d)}if(!n.title&&\"img\"==h){var c=e.alt;I(c)||\"\"===c||(n.title=c)}}else{var u=[];o(n,(function(e,t){u.push(\";\\\\s?\"+t)})),u=u.join(\"\\\\s?:|\"),\"\"!==a.trim()&&o(n,(function(e,t){var s=a,l=new RegExp(\"s?\"+t+\"s?:s?(.*?)(\"+u+\"s?:|$)\"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\\s*$/,\"\");n[t]=i.sanitizeValue(r)}}))}if(n.description&&\".\"===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(\".glightbox-desc\");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:\"setSize\",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=\"video\"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=O(e,\"width\")&&\"\"!==e.width?this.checkSize(e.width):n,e.height=O(e,\"height\")&&\"\"!==e.height?this.checkSize(e.height):s,i&&\"image\"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:\"checkSize\",value:function(e){return z(e)?\"\".concat(e,\"px\"):e}},{key:\"sanitizeValue\",value:function(e){return\"true\"!==e&&\"false\"!==e?e:\"true\"===e}}]),e}(),U=function(){function e(i,n,s){t(this,e),this.element=i,this.instance=n,this.index=s}return n(e,[{key:\"setContent\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(c(t,\"loaded\"))return!1;var n=this.instance.settings,s=this.slideConfig,l=w();T(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(\".gslide-media\"),d=t.querySelector(\".gslide-title\"),u=t.querySelector(\".gslide-desc\"),g=t.querySelector(\".gdesc-inner\"),v=i,f=\"gSlideTitle_\"+this.index,p=\"gSlideDesc_\"+this.index;if(T(n.afterSlideLoad)&&(v=function(){T(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),\"\"==s.title&&\"\"==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(d&&\"\"!==s.title?(d.id=f,d.innerHTML=s.title):d.parentNode.removeChild(d),u&&\"\"!==s.description?(u.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),u.innerHTML=s.smallDescription,this.descriptionEvents(u,s)):u.innerHTML=s.description):u.parentNode.removeChild(u),h(a.parentNode,\"desc-\".concat(r)),h(g.parentNode,\"description-\".concat(r))),h(a,\"gslide-\".concat(o)),h(t,\"loaded\"),\"video\"!==o){if(\"external\"!==o)return\"inline\"===o?(G.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new V({dragEl:t.querySelector(\".gslide-inline\"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void(\"image\"!==o?T(v)&&v():j(t,s,this.index,(function(){var i=t.querySelector(\"img\");s.draggable&&new V({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(h(i,\"zoomable\"),new H(i,t,(function(){e.instance.resize()}))),T(v)&&v()})));Z.apply(this,[t,s,this.index,v])}else F.apply(this.instance,[t,s,this.index,v])}},{key:\"slideShortDesc\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement(\"div\");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... <a href=\"#\" class=\"desc-more\">'+i+\"</a>\"):o}},{key:\"descriptionEvents\",value:function(e,t){var i=this,n=e.querySelector(\".desc-more\");if(!n)return!1;a(\"click\",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=u(n,\".gslide-desc\");if(!l)return!1;l.innerHTML=t.description,h(s,\"gdesc-open\");var o=a(\"click\",{onElement:[s,u(l,\".gslide-description\")],withCallback:function(e,n){\"a\"!==e.target.nodeName.toLowerCase()&&(d(s,\"gdesc-open\"),h(s,\"gdesc-closed\"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){d(s,\"gdesc-closed\")}),400),o.destroy())}})}})}},{key:\"create\",value:function(){return m(this.instance.settings.slideHTML)}},{key:\"getConfig\",value:function(){k(this.element)||this.element.hasOwnProperty(\"draggable\")||(this.element.draggable=this.instance.settings.draggable);var e=new $(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]),e}(),J=w(),K=null!==w()||void 0!==document.createTouch||\"ontouchstart\"in window||\"onmsgesturechange\"in window||navigator.msMaxTouchPoints,Q=document.getElementsByTagName(\"html\")[0],ee={selector:\".glightbox\",elements:null,skin:\"clean\",theme:\"clean\",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:\"bottom\",width:\"900px\",height:\"506px\",videosWidth:\"960px\",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:\"https://cdn.plyr.io/3.6.8/plyr.css\",js:\"https://cdn.plyr.io/3.6.8/plyr.js\",config:{ratio:\"16:9\",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:\"zoom\",closeEffect:\"zoom\",slideEffect:\"slide\",moreText:\"See more\",moreLength:60,cssEfects:{fade:{in:\"fadeIn\",out:\"fadeOut\"},zoom:{in:\"zoomIn\",out:\"zoomOut\"},slide:{in:\"slideInRight\",out:\"slideOutLeft\"},slideBack:{in:\"slideInLeft\",out:\"slideOutRight\"},none:{in:\"none\",out:\"none\"}},svg:{close:'<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 512 512\" xml:space=\"preserve\"><g><g><path d=\"M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z\"/></g></g><g><g><path d=\"M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z\"/></g></g></svg>',next:'<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 477.175 477.175\" xml:space=\"preserve\"> <g><path d=\"M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z\"/></g></svg>',prev:'<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 477.175 477.175\" xml:space=\"preserve\"><g><path d=\"M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z\"/></g></svg>'},slideHTML:'<div class=\"gslide\">\\n    <div class=\"gslide-inner-content\">\\n        <div class=\"ginner-container\">\\n            <div class=\"gslide-media\">\\n            </div>\\n            <div class=\"gslide-description\">\\n                <div class=\"gdesc-inner\">\\n                    <h4 class=\"gslide-title\"></h4>\\n                    <div class=\"gslide-desc\"></div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>',lightboxHTML:'<div id=\"glightbox-body\" class=\"glightbox-container\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"false\">\\n    <div class=\"gloader visible\"></div>\\n    <div class=\"goverlay\"></div>\\n    <div class=\"gcontainer\">\\n    <div id=\"glightbox-slider\" class=\"gslider\"></div>\\n    <button class=\"gclose gbtn\" aria-label=\"Close\" data-taborder=\"3\">{closeSVG}</button>\\n    <button class=\"gprev gbtn\" aria-label=\"Previous\" data-taborder=\"2\">{prevSVG}</button>\\n    <button class=\"gnext gbtn\" aria-label=\"Next\" data-taborder=\"1\">{nextSVG}</button>\\n</div>\\n</div>'},te=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.customOptions=i,this.settings=l(ee,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}return n(e,[{key:\"init\",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=a(\"click\",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:\"open\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0==this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=z(t)?t:this.settings.startAt;if(k(e)){var n=e.getAttribute(\"data-gallery\");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),I(i)&&(i=this.getElementIndex(e))<0&&(i=0)}z(i)||(i=0),this.build(),g(this.overlay,\"none\"==this.settings.openEffect?\"none\":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement(\"style\");o.type=\"text/css\",o.className=\"gcss-styles\",o.innerText=\".gscrollbar-fixer {margin-right: \".concat(l,\"px}\"),document.head.appendChild(o),h(s,\"gscrollbar-fixer\")}h(s,\"glightbox-open\"),h(Q,\"glightbox-open\"),J&&(h(document.body,\"glightbox-mobile\"),this.settings.slideEffect=\"slide\"),this.showSlide(i,!0),1==this.elements.length?(h(this.prevButton,\"glightbox-button-hidden\"),h(this.nextButton,\"glightbox-button-hidden\")):(d(this.prevButton,\"glightbox-button-hidden\"),d(this.nextButton,\"glightbox-button-hidden\")),this.lightboxOpen=!0,this.trigger(\"open\"),T(this.settings.onOpen)&&this.settings.onOpen(),K&&this.settings.touchNavigation&&B(this),this.settings.keyboardNavigation&&X(this)}},{key:\"openAt\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:\"showSlide\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];f(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(\".current\");n&&d(n,\"current\"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(\".gslide\")[t];if(c(s,\"loaded\"))this.slideAnimateIn(s,i),p(this.loader);else{f(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger(\"slide_before_load\",o),l.instance.setContent(s,(function(){p(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger(\"slide_after_load\",o)}))}this.slideDescription=s.querySelector(\".gslide-description\"),this.slideDescriptionContained=this.slideDescription&&c(this.slideDescription.parentNode,\"gslide-media\"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:\"preloadSlide\",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(I(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(\".gslide\")[e];if(c(i,\"loaded\"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger(\"slide_before_load\",l),\"video\"==s||\"external\"==s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger(\"slide_after_load\",l)}))}),200):n.instance.setContent(i,(function(){t.trigger(\"slide_after_load\",l)}))}},{key:\"prevSlide\",value:function(){this.goToSlide(this.index-1)}},{key:\"nextSlide\",value:function(){this.goToSlide(this.index+1)}},{key:\"goToSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:\"insertSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new U(e,this,t),n=i.getConfig(),s=l({},n),o=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(o);else{var d=this.slidesContainer.querySelectorAll(\".gslide\")[t];this.slidesContainer.insertBefore(o,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0==this.index&&0==t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(\".gslide\")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger(\"slide_inserted\",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),T(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:\"removeSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(\".gslide\")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger(\"slide_removed\",e),T(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:\"slideAnimateIn\",value:function(e,t){var i=this,n=e.querySelector(\".gslide-media\"),s=e.querySelector(\".gslide-description\"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(p(s),s.style.display=\"\"),d(e,this.effectsClasses),t)g(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger(\"slide_changed\",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a=\"none\"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&\"slide\"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),g(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger(\"slide_changed\",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),h(e,\"current\")}},{key:\"slideAnimateOut\",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;d(e,this.effectsClasses),h(e,\"prev\");var t=this.settings.slideEffect,i=\"none\"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger(\"slide_before_change\",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),T(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&\"slide\"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),g(e,i,(function(){var t=e.querySelector(\".ginner-container\"),i=e.querySelector(\".gslide-media\"),n=e.querySelector(\".gslide-description\");t.style.transform=\"\",i.style.transform=\"\",d(i,\"greset\"),i.style.opacity=\"\",n&&(n.style.opacity=\"\"),d(e,\"prev\")}))}},{key:\"getAllPlayers\",value:function(){return this.videoPlayers}},{key:\"getSlidePlayerInstance\",value:function(e){var t=\"gvideo\"+e,i=this.getAllPlayers();return!(!O(i,t)||!i[t])&&i[t]}},{key:\"stopSlideVideo\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}console.log(\"stopSlideVideo is deprecated, use slidePlayerPause\");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:\"slidePlayerPause\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:\"playSlideVideo\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}console.log(\"playSlideVideo is deprecated, use slidePlayerPlay\");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:\"slidePlayerPlay\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}var i=this.getSlidePlayerInstance(e);i&&!i.playing&&(i.play(),this.settings.autofocusVideos&&i.elements.container.focus())}},{key:\"setElements\",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&o(e,(function(e,n){var s=new U(e,t,n),o=s.getConfig(),r=l({},o);r.slideConfig=o,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML=\"\",this.elements.length&&(o(this.elements,(function(){var e=m(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:\"getElementIndex\",value:function(e){var t=!1;return o(this.elements,(function(i,n){if(O(i,\"node\")&&i.node==e)return t=n,!0})),t}},{key:\"getElements\",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!I(this.settings.elements)&&E(this.settings.elements)&&this.settings.elements.length&&o(this.settings.elements,(function(i,n){var s=new U(i,e,n),o=s.getConfig(),r=l({},o);r.node=!1,r.index=n,r.instance=s,r.slideConfig=o,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(o(i,(function(i,n){var s=new U(i,e,n),o=s.getConfig(),r=l({},o);r.node=i,r.index=n,r.instance=s,r.slideConfig=o,r.gallery=i.getAttribute(\"data-gallery\"),t.push(r)})),t):t}},{key:\"getGalleryElements\",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:\"getSelector\",value:function(){return!this.settings.elements&&(this.settings.selector&&\"data-\"==this.settings.selector.substring(0,5)?\"*[\".concat(this.settings.selector,\"]\"):this.settings.selector)}},{key:\"getActiveSlide\",value:function(){return this.slidesContainer.querySelectorAll(\".gslide\")[this.index]}},{key:\"getActiveSlideIndex\",value:function(){return this.index}},{key:\"getAnimationClasses\",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push(\"g\".concat(i.in)),e.push(\"g\".concat(i.out))}return e.join(\" \")}},{key:\"build\",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];o(t,(function(e){e.parentNode==document.body&&\"#\"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute(\"aria-hidden\")&&(i.push(e),e.setAttribute(\"aria-hidden\",\"true\"))}));var n=O(this.settings.svg,\"next\")?this.settings.svg.next:\"\",s=O(this.settings.svg,\"prev\")?this.settings.svg.prev:\"\",l=O(this.settings.svg,\"close\")?this.settings.svg.close:\"\",r=this.settings.lightboxHTML;r=m(r=(r=(r=r.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(r);var d=document.getElementById(\"glightbox-body\");this.modal=d;var g=d.querySelector(\".gclose\");this.prevButton=d.querySelector(\".gprev\"),this.nextButton=d.querySelector(\".gnext\"),this.overlay=d.querySelector(\".goverlay\"),this.loader=d.querySelector(\".gloader\"),this.slidesContainer=document.getElementById(\"glightbox-slider\"),this.bodyHiddenChildElms=i,this.events={},h(this.modal,\"glightbox-\"+this.settings.skin),this.settings.closeButton&&g&&(this.events.close=a(\"click\",{onElement:g,withCallback:function(t,i){t.preventDefault(),e.close()}})),g&&!this.settings.closeButton&&g.parentNode.removeChild(g),this.nextButton&&(this.events.next=a(\"click\",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=a(\"click\",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=a(\"click\",{onElement:d,withCallback:function(t,i){e.preventOutsideClick||c(document.body,\"glightbox-mobile\")||u(t.target,\".ginner-container\")||u(t.target,\".gbtn\")||c(t.target,\"gnext\")||c(t.target,\"gprev\")||e.close()}})),o(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(\".gslide\")[i]})),K&&h(document.body,\"glightbox-touch\"),this.events.resize=a(\"resize\",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:\"resize\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!c(e,\"zoomed\")){var t=y(),i=e.querySelector(\".gvideo-wrapper\"),n=e.querySelector(\".gslide-image\"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?h(document.body,\"glightbox-mobile\"):d(document.body,\"glightbox-mobile\"),i||n){var r=!1;if(s&&(c(s,\"description-bottom\")||c(s,\"description-top\"))&&!c(s,\"gabsolute\")&&(r=!0),n)if(l<=768)n.querySelector(\"img\");else if(r){var a=s.offsetHeight,u=n.querySelector(\"img\");u.setAttribute(\"style\",\"max-height: calc(100vh - \".concat(a,\"px)\")),s.setAttribute(\"style\",\"max-width: \".concat(u.offsetWidth,\"px;\"))}if(i){var g=O(this.settings.plyr.config,\"ratio\")?this.settings.plyr.config.ratio:\"\";if(!g){var v=i.clientWidth,f=i.clientHeight,p=v/f;g=\"\".concat(v/p,\":\").concat(f/p)}var m=g.split(\":\"),x=this.settings.videosWidth,b=this.settings.videosWidth,S=(b=z(x)||-1!==x.indexOf(\"px\")?parseInt(x):-1!==x.indexOf(\"vw\")?l*parseInt(x)/100:-1!==x.indexOf(\"vh\")?o*parseInt(x)/100:-1!==x.indexOf(\"%\")?l*parseInt(x)/100:parseInt(i.clientWidth))/(parseInt(m[0])/parseInt(m[1]));if(S=Math.floor(S),r&&(o-=s.offsetHeight),b>l||S>o||o<S&&l>b){var w=i.offsetWidth,T=i.offsetHeight,C=o/T,k={width:w*C,height:T*C};i.parentNode.setAttribute(\"style\",\"max-width: \".concat(k.width,\"px\")),r&&s.setAttribute(\"style\",\"max-width: \".concat(k.width,\"px;\"))}else i.parentNode.style.maxWidth=\"\".concat(x),r&&s.setAttribute(\"style\",\"max-width: \".concat(x,\";\"))}}}}},{key:\"reload\",value:function(){this.init()}},{key:\"updateNavigationClasses\",value:function(){var e=this.loop();d(this.nextButton,\"disabled\"),d(this.prevButton,\"disabled\"),0==this.index&&this.elements.length-1==0?(h(this.prevButton,\"disabled\"),h(this.nextButton,\"disabled\")):0!==this.index||e?this.index!==this.elements.length-1||e||h(this.nextButton,\"disabled\"):h(this.prevButton,\"disabled\")}},{key:\"loop\",value:function(){var e=O(this.settings,\"loopAtEnd\")?this.settings.loopAtEnd:null;return e=O(this.settings,\"loop\")?this.settings.loop:e,e}},{key:\"close\",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&o(this.bodyHiddenChildElms,(function(e){e.removeAttribute(\"aria-hidden\")})),h(this.modal,\"glightbox-closing\"),g(this.overlay,\"none\"==this.settings.openEffect?\"none\":this.settings.cssEfects.fade.out),g(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;d(Q,\"glightbox-open\"),d(i,\"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer\"),e.modal.parentNode.removeChild(e.modal),e.trigger(\"close\"),T(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(\".gcss-styles\");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:\"destroy\",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:\"on\",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!T(t))throw new TypeError(\"Event name and callback must be defined\");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:\"once\",value:function(e,t){this.on(e,t,!0)}},{key:\"trigger\",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];o(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&o(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:\"clearAllEvents\",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:\"version\",value:function(){return\"3.1.1\"}}]),e}();return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new te(e);return t.init(),t}}));","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory(global.window = global.window || {}));\n}(this, (function (exports) { 'use strict';\n\n\t/*!\n\t * ScrollTrigger 3.9.1\n\t * https://greensock.com\n\t *\n\t * @license Copyright 2008-2021, GreenSock. All rights reserved.\n\t * Subject to the terms at https://greensock.com/standard-license or for\n\t * Club GreenSock members, the agreement issued with that membership.\n\t * @author: Jack Doyle, jack@greensock.com\n\t*/\n\tvar gsap,\n\t    _coreInitted,\n\t    _win,\n\t    _doc,\n\t    _docEl,\n\t    _body,\n\t    _root,\n\t    _resizeDelay,\n\t    _toArray,\n\t    _clamp,\n\t    _time2,\n\t    _syncInterval,\n\t    _refreshing,\n\t    _pointerIsDown,\n\t    _transformProp,\n\t    _i,\n\t    _prevWidth,\n\t    _prevHeight,\n\t    _autoRefresh,\n\t    _sort,\n\t    _suppressOverwrites,\n\t    _ignoreResize,\n\t    _limitCallbacks,\n\t    _startup = 1,\n\t    _proxies = [],\n\t    _scrollers = [],\n\t    _getTime = Date.now,\n\t    _time1 = _getTime(),\n\t    _lastScrollTime = 0,\n\t    _enabled = 1,\n\t    _passThrough = function _passThrough(v) {\n\t  return v;\n\t},\n\t    _getTarget = function _getTarget(t) {\n\t  return _toArray(t)[0] || (_isString(t) && gsap.config().nullTargetWarn !== false ? console.warn(\"Element not found:\", t) : null);\n\t},\n\t    _round = function _round(value) {\n\t  return Math.round(value * 100000) / 100000 || 0;\n\t},\n\t    _windowExists = function _windowExists() {\n\t  return typeof window !== \"undefined\";\n\t},\n\t    _getGSAP = function _getGSAP() {\n\t  return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n\t},\n\t    _isViewport = function _isViewport(e) {\n\t  return !!~_root.indexOf(e);\n\t},\n\t    _getProxyProp = function _getProxyProp(element, property) {\n\t  return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n\t},\n\t    _getScrollFunc = function _getScrollFunc(element, _ref) {\n\t  var s = _ref.s,\n\t      sc = _ref.sc;\n\n\t  var i = _scrollers.indexOf(element),\n\t      offset = sc === _vertical.sc ? 1 : 2;\n\n\t  !~i && (i = _scrollers.push(element) - 1);\n\t  return _scrollers[i + offset] || (_scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : function (value) {\n\t    return arguments.length ? element[s] = value : element[s];\n\t  }));\n\t},\n\t    _getBoundsFunc = function _getBoundsFunc(element) {\n\t  return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? function () {\n\t    _winOffsets.width = _win.innerWidth;\n\t    _winOffsets.height = _win.innerHeight;\n\t    return _winOffsets;\n\t  } : function () {\n\t    return _getBounds(element);\n\t  });\n\t},\n\t    _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref2) {\n\t  var d = _ref2.d,\n\t      d2 = _ref2.d2,\n\t      a = _ref2.a;\n\t  return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n\t    return a()[d];\n\t  } : function () {\n\t    return (isViewport ? _win[\"inner\" + d2] : scroller[\"client\" + d2]) || 0;\n\t  };\n\t},\n\t    _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n\t  return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n\t    return _winOffsets;\n\t  };\n\t},\n\t    _maxScroll = function _maxScroll(element, _ref3) {\n\t  var s = _ref3.s,\n\t      d2 = _ref3.d2,\n\t      d = _ref3.d,\n\t      a = _ref3.a;\n\t  return (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_body[s] || _docEl[s]) - (_win[\"inner\" + d2] || _docEl[\"client\" + d2] || _body[\"client\" + d2]) : element[s] - element[\"offset\" + d2];\n\t},\n\t    _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n\t  for (var i = 0; i < _autoRefresh.length; i += 3) {\n\t    (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n\t  }\n\t},\n\t    _isString = function _isString(value) {\n\t  return typeof value === \"string\";\n\t},\n\t    _isFunction = function _isFunction(value) {\n\t  return typeof value === \"function\";\n\t},\n\t    _isNumber = function _isNumber(value) {\n\t  return typeof value === \"number\";\n\t},\n\t    _isObject = function _isObject(value) {\n\t  return typeof value === \"object\";\n\t},\n\t    _callIfFunc = function _callIfFunc(value) {\n\t  return _isFunction(value) && value();\n\t},\n\t    _combineFunc = function _combineFunc(f1, f2) {\n\t  return function () {\n\t    var result1 = _callIfFunc(f1),\n\t        result2 = _callIfFunc(f2);\n\n\t    return function () {\n\t      _callIfFunc(result1);\n\n\t      _callIfFunc(result2);\n\t    };\n\t  };\n\t},\n\t    _endAnimation = function _endAnimation(animation, reversed, pause) {\n\t  return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();\n\t},\n\t    _callback = function _callback(self, func) {\n\t  if (self.enabled) {\n\t    var result = func(self);\n\t    result && result.totalTime && (self.callbackAnimation = result);\n\t  }\n\t},\n\t    _abs = Math.abs,\n\t    _scrollLeft = \"scrollLeft\",\n\t    _scrollTop = \"scrollTop\",\n\t    _left = \"left\",\n\t    _top = \"top\",\n\t    _right = \"right\",\n\t    _bottom = \"bottom\",\n\t    _width = \"width\",\n\t    _height = \"height\",\n\t    _Right = \"Right\",\n\t    _Left = \"Left\",\n\t    _Top = \"Top\",\n\t    _Bottom = \"Bottom\",\n\t    _padding = \"padding\",\n\t    _margin = \"margin\",\n\t    _Width = \"Width\",\n\t    _Height = \"Height\",\n\t    _px = \"px\",\n\t    _horizontal = {\n\t  s: _scrollLeft,\n\t  p: _left,\n\t  p2: _Left,\n\t  os: _right,\n\t  os2: _Right,\n\t  d: _width,\n\t  d2: _Width,\n\t  a: \"x\",\n\t  sc: function sc(value) {\n\t    return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n\t  }\n\t},\n\t    _vertical = {\n\t  s: _scrollTop,\n\t  p: _top,\n\t  p2: _Top,\n\t  os: _bottom,\n\t  os2: _Bottom,\n\t  d: _height,\n\t  d2: _Height,\n\t  a: \"y\",\n\t  op: _horizontal,\n\t  sc: function sc(value) {\n\t    return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n\t  }\n\t},\n\t    _getComputedStyle = function _getComputedStyle(element) {\n\t  return _win.getComputedStyle(element);\n\t},\n\t    _makePositionable = function _makePositionable(element) {\n\t  var position = _getComputedStyle(element).position;\n\n\t  element.style.position = position === \"absolute\" || position === \"fixed\" ? position : \"relative\";\n\t},\n\t    _setDefaults = function _setDefaults(obj, defaults) {\n\t  for (var p in defaults) {\n\t    p in obj || (obj[p] = defaults[p]);\n\t  }\n\n\t  return obj;\n\t},\n\t    _getBounds = function _getBounds(element, withoutTransforms) {\n\t  var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {\n\t    x: 0,\n\t    y: 0,\n\t    xPercent: 0,\n\t    yPercent: 0,\n\t    rotation: 0,\n\t    rotationX: 0,\n\t    rotationY: 0,\n\t    scale: 1,\n\t    skewX: 0,\n\t    skewY: 0\n\t  }).progress(1),\n\t      bounds = element.getBoundingClientRect();\n\t  tween && tween.progress(0).kill();\n\t  return bounds;\n\t},\n\t    _getSize = function _getSize(element, _ref4) {\n\t  var d2 = _ref4.d2;\n\t  return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n\t},\n\t    _getLabelRatioArray = function _getLabelRatioArray(timeline) {\n\t  var a = [],\n\t      labels = timeline.labels,\n\t      duration = timeline.duration(),\n\t      p;\n\n\t  for (p in labels) {\n\t    a.push(labels[p] / duration);\n\t  }\n\n\t  return a;\n\t},\n\t    _getClosestLabel = function _getClosestLabel(animation) {\n\t  return function (value) {\n\t    return gsap.utils.snap(_getLabelRatioArray(animation), value);\n\t  };\n\t},\n\t    _snapDirectional = function _snapDirectional(snapIncrementOrArray) {\n\t  var snap = gsap.utils.snap(snapIncrementOrArray),\n\t      a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {\n\t    return a - b;\n\t  });\n\t  return a ? function (value, direction, threshold) {\n\t    if (threshold === void 0) {\n\t      threshold = 1e-3;\n\t    }\n\n\t    var i;\n\n\t    if (!direction) {\n\t      return snap(value);\n\t    }\n\n\t    if (direction > 0) {\n\t      value -= threshold;\n\n\t      for (i = 0; i < a.length; i++) {\n\t        if (a[i] >= value) {\n\t          return a[i];\n\t        }\n\t      }\n\n\t      return a[i - 1];\n\t    } else {\n\t      i = a.length;\n\t      value += threshold;\n\n\t      while (i--) {\n\t        if (a[i] <= value) {\n\t          return a[i];\n\t        }\n\t      }\n\t    }\n\n\t    return a[0];\n\t  } : function (value, direction, threshold) {\n\t    if (threshold === void 0) {\n\t      threshold = 1e-3;\n\t    }\n\n\t    var snapped = snap(value);\n\t    return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);\n\t  };\n\t},\n\t    _getLabelAtDirection = function _getLabelAtDirection(timeline) {\n\t  return function (value, st) {\n\t    return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);\n\t  };\n\t},\n\t    _multiListener = function _multiListener(func, element, types, callback) {\n\t  return types.split(\",\").forEach(function (type) {\n\t    return func(element, type, callback);\n\t  });\n\t},\n\t    _addListener = function _addListener(element, type, func) {\n\t  return element.addEventListener(type, func, {\n\t    passive: true\n\t  });\n\t},\n\t    _removeListener = function _removeListener(element, type, func) {\n\t  return element.removeEventListener(type, func);\n\t},\n\t    _markerDefaults = {\n\t  startColor: \"green\",\n\t  endColor: \"red\",\n\t  indent: 0,\n\t  fontSize: \"16px\",\n\t  fontWeight: \"normal\"\n\t},\n\t    _defaults = {\n\t  toggleActions: \"play\",\n\t  anticipatePin: 0\n\t},\n\t    _keywords = {\n\t  top: 0,\n\t  left: 0,\n\t  center: 0.5,\n\t  bottom: 1,\n\t  right: 1\n\t},\n\t    _offsetToPx = function _offsetToPx(value, size) {\n\t  if (_isString(value)) {\n\t    var eqIndex = value.indexOf(\"=\"),\n\t        relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n\t    if (~eqIndex) {\n\t      value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n\t      value = value.substr(0, eqIndex - 1);\n\t    }\n\n\t    value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n\t  }\n\n\t  return value;\n\t},\n\t    _createMarker = function _createMarker(type, name, container, direction, _ref5, offset, matchWidthEl, containerAnimation) {\n\t  var startColor = _ref5.startColor,\n\t      endColor = _ref5.endColor,\n\t      fontSize = _ref5.fontSize,\n\t      indent = _ref5.indent,\n\t      fontWeight = _ref5.fontWeight;\n\n\t  var e = _doc.createElement(\"div\"),\n\t      useFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n\t      isScroller = type.indexOf(\"scroller\") !== -1,\n\t      parent = useFixedPosition ? _body : container,\n\t      isStart = type.indexOf(\"start\") !== -1,\n\t      color = isStart ? startColor : endColor,\n\t      css = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\n\t  css += \"position:\" + ((isScroller || containerAnimation) && useFixedPosition ? \"fixed;\" : \"absolute;\");\n\t  (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n\t  matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n\t  e._isStart = isStart;\n\t  e.setAttribute(\"class\", \"gsap-marker-\" + type + (name ? \" marker-\" + name : \"\"));\n\t  e.style.cssText = css;\n\t  e.innerText = name || name === 0 ? type + \"-\" + name : type;\n\t  parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);\n\t  e._offset = e[\"offset\" + direction.op.d2];\n\n\t  _positionMarker(e, 0, direction, isStart);\n\n\t  return e;\n\t},\n\t    _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n\t  var vars = {\n\t    display: \"block\"\n\t  },\n\t      side = direction[flipped ? \"os2\" : \"p2\"],\n\t      oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n\t  marker._isFlipped = flipped;\n\t  vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n\t  vars[direction.a] = flipped ? \"1px\" : 0;\n\t  vars[\"border\" + side + _Width] = 1;\n\t  vars[\"border\" + oppositeSide + _Width] = 0;\n\t  vars[direction.p] = start + \"px\";\n\t  gsap.set(marker, vars);\n\t},\n\t    _triggers = [],\n\t    _ids = {},\n\t    _sync = function _sync() {\n\t  return _getTime() - _lastScrollTime > 34 && _updateAll();\n\t},\n\t    _onScroll = function _onScroll() {\n\t  _updateAll();\n\n\t  _lastScrollTime || _dispatch(\"scrollStart\");\n\t  _lastScrollTime = _getTime();\n\t},\n\t    _onResize = function _onResize() {\n\t  return !_refreshing && !_ignoreResize && !_doc.fullscreenElement && _resizeDelay.restart(true);\n\t},\n\t    _listeners = {},\n\t    _emptyArray = [],\n\t    _media = [],\n\t    _creatingMedia,\n\t    _lastMediaTick,\n\t    _onMediaChange = function _onMediaChange(e) {\n\t  var tick = gsap.ticker.frame,\n\t      matches = [],\n\t      i = 0,\n\t      index;\n\n\t  if (_lastMediaTick !== tick || _startup) {\n\t    _revertAll();\n\n\t    for (; i < _media.length; i += 4) {\n\t      index = _win.matchMedia(_media[i]).matches;\n\n\t      if (index !== _media[i + 3]) {\n\t        _media[i + 3] = index;\n\t        index ? matches.push(i) : _revertAll(1, _media[i]) || _isFunction(_media[i + 2]) && _media[i + 2]();\n\t      }\n\t    }\n\n\t    _revertRecorded();\n\n\t    for (i = 0; i < matches.length; i++) {\n\t      index = matches[i];\n\t      _creatingMedia = _media[index];\n\t      _media[index + 2] = _media[index + 1](e);\n\t    }\n\n\t    _creatingMedia = 0;\n\t    _coreInitted && _refreshAll(0, 1);\n\t    _lastMediaTick = tick;\n\n\t    _dispatch(\"matchMedia\");\n\t  }\n\t},\n\t    _softRefresh = function _softRefresh() {\n\t  return _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n\t},\n\t    _dispatch = function _dispatch(type) {\n\t  return _listeners[type] && _listeners[type].map(function (f) {\n\t    return f();\n\t  }) || _emptyArray;\n\t},\n\t    _savedStyles = [],\n\t    _revertRecorded = function _revertRecorded(media) {\n\t  for (var i = 0; i < _savedStyles.length; i += 5) {\n\t    if (!media || _savedStyles[i + 4] === media) {\n\t      _savedStyles[i].style.cssText = _savedStyles[i + 1];\n\t      _savedStyles[i].getBBox && _savedStyles[i].setAttribute(\"transform\", _savedStyles[i + 2] || \"\");\n\t      _savedStyles[i + 3].uncache = 1;\n\t    }\n\t  }\n\t},\n\t    _revertAll = function _revertAll(kill, media) {\n\t  var trigger;\n\n\t  for (_i = 0; _i < _triggers.length; _i++) {\n\t    trigger = _triggers[_i];\n\n\t    if (!media || trigger.media === media) {\n\t      if (kill) {\n\t        trigger.kill(1);\n\t      } else {\n\t        trigger.revert();\n\t      }\n\t    }\n\t  }\n\n\t  media && _revertRecorded(media);\n\t  media || _dispatch(\"revert\");\n\t},\n\t    _clearScrollMemory = function _clearScrollMemory() {\n\t  return _scrollers.forEach(function (obj) {\n\t    return typeof obj === \"function\" && (obj.rec = 0);\n\t  });\n\t},\n\t    _refreshingAll,\n\t    _refreshAll = function _refreshAll(force, skipRevert) {\n\t  if (_lastScrollTime && !force) {\n\t    _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n\t    return;\n\t  }\n\n\t  _refreshingAll = true;\n\n\t  var refreshInits = _dispatch(\"refreshInit\");\n\n\t  _sort && ScrollTrigger.sort();\n\t  skipRevert || _revertAll();\n\n\t  _triggers.forEach(function (t) {\n\t    return t.refresh();\n\t  });\n\n\t  _triggers.forEach(function (t) {\n\t    return t.vars.end === \"max\" && t.setPositions(t.start, _maxScroll(t.scroller, t._dir));\n\t  });\n\n\t  refreshInits.forEach(function (result) {\n\t    return result && result.render && result.render(-1);\n\t  });\n\n\t  _clearScrollMemory();\n\n\t  _resizeDelay.pause();\n\n\t  _refreshingAll = false;\n\n\t  _dispatch(\"refresh\");\n\t},\n\t    _lastScroll = 0,\n\t    _direction = 1,\n\t    _updateAll = function _updateAll() {\n\t  if (!_refreshingAll) {\n\t    var l = _triggers.length,\n\t        time = _getTime(),\n\t        recordVelocity = time - _time1 >= 50,\n\t        scroll = l && _triggers[0].scroll();\n\n\t    _direction = _lastScroll > scroll ? -1 : 1;\n\t    _lastScroll = scroll;\n\n\t    if (recordVelocity) {\n\t      if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n\t        _lastScrollTime = 0;\n\n\t        _dispatch(\"scrollEnd\");\n\t      }\n\n\t      _time2 = _time1;\n\t      _time1 = time;\n\t    }\n\n\t    if (_direction < 0) {\n\t      _i = l;\n\n\t      while (_i-- > 0) {\n\t        _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n\t      }\n\n\t      _direction = 1;\n\t    } else {\n\t      for (_i = 0; _i < l; _i++) {\n\t        _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n\t      }\n\t    }\n\t  }\n\t},\n\t    _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\", \"zIndex\", \"gridColumnStart\", \"gridColumnEnd\", \"gridRowStart\", \"gridRowEnd\", \"gridArea\", \"justifySelf\", \"alignSelf\", \"placeSelf\", \"order\"],\n\t    _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n\t    _swapPinOut = function _swapPinOut(pin, spacer, state) {\n\t  _setState(state);\n\n\t  var cache = pin._gsap;\n\n\t  if (cache.spacerIsNative) {\n\t    _setState(cache.spacerState);\n\t  } else if (pin.parentNode === spacer) {\n\t    var parent = spacer.parentNode;\n\n\t    if (parent) {\n\t      parent.insertBefore(pin, spacer);\n\t      parent.removeChild(spacer);\n\t    }\n\t  }\n\t},\n\t    _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n\t  if (pin.parentNode !== spacer) {\n\t    var i = _propNamesToCopy.length,\n\t        spacerStyle = spacer.style,\n\t        pinStyle = pin.style,\n\t        p;\n\n\t    while (i--) {\n\t      p = _propNamesToCopy[i];\n\t      spacerStyle[p] = cs[p];\n\t    }\n\n\t    spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n\t    cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n\t    pinStyle[_bottom] = pinStyle[_right] = spacerStyle.flexBasis = \"auto\";\n\t    spacerStyle.overflow = \"visible\";\n\t    spacerStyle.boxSizing = \"border-box\";\n\t    spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n\t    spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n\t    spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n\t    _setState(spacerState);\n\n\t    pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n\t    pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n\t    pinStyle[_padding] = cs[_padding];\n\t    pin.parentNode.insertBefore(spacer, pin);\n\t    spacer.appendChild(pin);\n\t  }\n\t},\n\t    _capsExp = /([A-Z])/g,\n\t    _setState = function _setState(state) {\n\t  if (state) {\n\t    var style = state.t.style,\n\t        l = state.length,\n\t        i = 0,\n\t        p,\n\t        value;\n\t    (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1;\n\n\t    for (; i < l; i += 2) {\n\t      value = state[i + 1];\n\t      p = state[i];\n\n\t      if (value) {\n\t        style[p] = value;\n\t      } else if (style[p]) {\n\t        style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n\t      }\n\t    }\n\t  }\n\t},\n\t    _getState = function _getState(element) {\n\t  var l = _stateProps.length,\n\t      style = element.style,\n\t      state = [],\n\t      i = 0;\n\n\t  for (; i < l; i++) {\n\t    state.push(_stateProps[i], style[_stateProps[i]]);\n\t  }\n\n\t  state.t = element;\n\t  return state;\n\t},\n\t    _copyState = function _copyState(state, override, omitOffsets) {\n\t  var result = [],\n\t      l = state.length,\n\t      i = omitOffsets ? 8 : 0,\n\t      p;\n\n\t  for (; i < l; i += 2) {\n\t    p = state[i];\n\t    result.push(p, p in override ? override[p] : state[i + 1]);\n\t  }\n\n\t  result.t = state.t;\n\t  return result;\n\t},\n\t    _winOffsets = {\n\t  left: 0,\n\t  top: 0\n\t},\n\t    _parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation) {\n\t  _isFunction(value) && (value = value(self));\n\n\t  if (_isString(value) && value.substr(0, 3) === \"max\") {\n\t    value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n\t  }\n\n\t  var time = containerAnimation ? containerAnimation.time() : 0,\n\t      p1,\n\t      p2,\n\t      element;\n\t  containerAnimation && containerAnimation.seek(0);\n\n\t  if (!_isNumber(value)) {\n\t    _isFunction(trigger) && (trigger = trigger(self));\n\t    var offsets = value.split(\" \"),\n\t        bounds,\n\t        localOffset,\n\t        globalOffset,\n\t        display;\n\t    element = _getTarget(trigger) || _body;\n\t    bounds = _getBounds(element) || {};\n\n\t    if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n\t      display = element.style.display;\n\t      element.style.display = \"block\";\n\t      bounds = _getBounds(element);\n\t      display ? element.style.display = display : element.style.removeProperty(\"display\");\n\t    }\n\n\t    localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n\t    globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n\t    value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n\t    markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n\t    scrollerSize -= scrollerSize - globalOffset;\n\t  } else if (markerScroller) {\n\t    _positionMarker(markerScroller, scrollerSize, direction, true);\n\t  }\n\n\t  if (marker) {\n\t    var position = value + scrollerSize,\n\t        isStart = marker._isStart;\n\t    p1 = \"scroll\" + direction.d2;\n\n\t    _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);\n\n\t    if (useFixedPosition) {\n\t      scrollerBounds = _getBounds(markerScroller);\n\t      useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n\t    }\n\t  }\n\n\t  if (containerAnimation && element) {\n\t    p1 = _getBounds(element);\n\t    containerAnimation.seek(scrollerMax);\n\t    p2 = _getBounds(element);\n\t    containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];\n\t    value = value / containerAnimation._caScrollDist * scrollerMax;\n\t  }\n\n\t  containerAnimation && containerAnimation.seek(time);\n\t  return containerAnimation ? value : Math.round(value);\n\t},\n\t    _prefixExp = /(?:webkit|moz|length|cssText|inset)/i,\n\t    _reparent = function _reparent(element, parent, top, left) {\n\t  if (element.parentNode !== parent) {\n\t    var style = element.style,\n\t        p,\n\t        cs;\n\n\t    if (parent === _body) {\n\t      element._stOrig = style.cssText;\n\t      cs = _getComputedStyle(element);\n\n\t      for (p in cs) {\n\t        if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n\t          style[p] = cs[p];\n\t        }\n\t      }\n\n\t      style.top = top;\n\t      style.left = left;\n\t    } else {\n\t      style.cssText = element._stOrig;\n\t    }\n\n\t    gsap.core.getCache(element).uncache = 1;\n\t    parent.appendChild(element);\n\t  }\n\t},\n\t    _getTweenCreator = function _getTweenCreator(scroller, direction) {\n\t  var getScroll = _getScrollFunc(scroller, direction),\n\t      prop = \"_scroll\" + direction.p2,\n\t      lastScroll1,\n\t      lastScroll2,\n\t      getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n\t    var tween = getTween.tween,\n\t        onComplete = vars.onComplete,\n\t        modifiers = {};\n\t    tween && tween.kill();\n\t    lastScroll1 = Math.round(initialValue);\n\t    vars[prop] = scrollTo;\n\t    vars.modifiers = modifiers;\n\n\t    modifiers[prop] = function (value) {\n\t      value = _round(getScroll());\n\n\t      if (value !== lastScroll1 && value !== lastScroll2 && Math.abs(value - lastScroll1) > 2 && Math.abs(value - lastScroll2) > 2) {\n\t        tween.kill();\n\t        getTween.tween = 0;\n\t      } else {\n\t        value = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio;\n\t      }\n\n\t      lastScroll2 = lastScroll1;\n\t      return lastScroll1 = _round(value);\n\t    };\n\n\t    vars.onComplete = function () {\n\t      getTween.tween = 0;\n\t      onComplete && onComplete.call(tween);\n\t    };\n\n\t    tween = getTween.tween = gsap.to(scroller, vars);\n\t    return tween;\n\t  };\n\n\t  scroller[prop] = getScroll;\n\n\t  _addListener(scroller, \"wheel\", function () {\n\t    return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);\n\t  });\n\n\t  return getTween;\n\t};\n\n\t_horizontal.op = _vertical;\n\tvar ScrollTrigger = function () {\n\t  function ScrollTrigger(vars, animation) {\n\t    _coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n\t    this.init(vars, animation);\n\t  }\n\n\t  var _proto = ScrollTrigger.prototype;\n\n\t  _proto.init = function init(vars, animation) {\n\t    this.progress = this.start = 0;\n\t    this.vars && this.kill(1);\n\n\t    if (!_enabled) {\n\t      this.update = this.refresh = this.kill = _passThrough;\n\t      return;\n\t    }\n\n\t    vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n\t      trigger: vars\n\t    } : vars, _defaults);\n\n\t    var _vars = vars,\n\t        onUpdate = _vars.onUpdate,\n\t        toggleClass = _vars.toggleClass,\n\t        id = _vars.id,\n\t        onToggle = _vars.onToggle,\n\t        onRefresh = _vars.onRefresh,\n\t        scrub = _vars.scrub,\n\t        trigger = _vars.trigger,\n\t        pin = _vars.pin,\n\t        pinSpacing = _vars.pinSpacing,\n\t        invalidateOnRefresh = _vars.invalidateOnRefresh,\n\t        anticipatePin = _vars.anticipatePin,\n\t        onScrubComplete = _vars.onScrubComplete,\n\t        onSnapComplete = _vars.onSnapComplete,\n\t        once = _vars.once,\n\t        snap = _vars.snap,\n\t        pinReparent = _vars.pinReparent,\n\t        pinSpacer = _vars.pinSpacer,\n\t        containerAnimation = _vars.containerAnimation,\n\t        fastScrollEnd = _vars.fastScrollEnd,\n\t        preventOverlaps = _vars.preventOverlaps,\n\t        direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical,\n\t        isToggle = !scrub && scrub !== 0,\n\t        scroller = _getTarget(vars.scroller || _win),\n\t        scrollerCache = gsap.core.getCache(scroller),\n\t        isViewport = _isViewport(scroller),\n\t        useFixedPosition = (\"pinType\" in vars ? vars.pinType : _getProxyProp(scroller, \"pinType\") || isViewport && \"fixed\") === \"fixed\",\n\t        callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n\t        toggleActions = isToggle && vars.toggleActions.split(\" \"),\n\t        markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n\t        borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n\t        self = this,\n\t        onRefreshInit = vars.onRefreshInit && function () {\n\t      return vars.onRefreshInit(self);\n\t    },\n\t        getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n\t        getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n\t        lastSnap = 0,\n\t        scrollFunc = _getScrollFunc(scroller, direction),\n\t        tweenTo,\n\t        pinCache,\n\t        snapFunc,\n\t        scroll1,\n\t        scroll2,\n\t        start,\n\t        end,\n\t        markerStart,\n\t        markerEnd,\n\t        markerStartTrigger,\n\t        markerEndTrigger,\n\t        markerVars,\n\t        change,\n\t        pinOriginalState,\n\t        pinActiveState,\n\t        pinState,\n\t        spacer,\n\t        offset,\n\t        pinGetter,\n\t        pinSetter,\n\t        pinStart,\n\t        pinChange,\n\t        spacingStart,\n\t        spacerState,\n\t        markerStartSetter,\n\t        markerEndSetter,\n\t        cs,\n\t        snap1,\n\t        snap2,\n\t        scrubTween,\n\t        scrubSmooth,\n\t        snapDurClamp,\n\t        snapDelayedCall,\n\t        prevProgress,\n\t        prevScroll,\n\t        prevAnimProgress,\n\t        caMarkerSetter;\n\n\t    self.media = _creatingMedia;\n\t    self._dir = direction;\n\t    anticipatePin *= 45;\n\t    self.scroller = scroller;\n\t    self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;\n\t    scroll1 = scrollFunc();\n\t    self.vars = vars;\n\t    animation = animation || vars.animation;\n\t    \"refreshPriority\" in vars && (_sort = 1);\n\t    scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n\t      top: _getTweenCreator(scroller, _vertical),\n\t      left: _getTweenCreator(scroller, _horizontal)\n\t    };\n\t    self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n\t    if (animation) {\n\t      animation.vars.lazy = false;\n\t      animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true);\n\t      self.animation = animation.pause();\n\t      animation.scrollTrigger = self;\n\t      scrubSmooth = _isNumber(scrub) && scrub;\n\t      scrubSmooth && (scrubTween = gsap.to(animation, {\n\t        ease: \"power3\",\n\t        duration: scrubSmooth,\n\t        onComplete: function onComplete() {\n\t          return onScrubComplete && onScrubComplete(self);\n\t        }\n\t      }));\n\t      snap1 = 0;\n\t      id || (id = animation.vars.id);\n\t    }\n\n\t    _triggers.push(self);\n\n\t    if (snap) {\n\t      if (!_isObject(snap) || snap.push) {\n\t        snap = {\n\t          snapTo: snap\n\t        };\n\t      }\n\n\t      \"scrollBehavior\" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {\n\t        scrollBehavior: \"auto\"\n\t      });\n\t      snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getClosestLabel(animation) : snap.snapTo === \"labelsDirectional\" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {\n\t        return _snapDirectional(snap.snapTo)(value, st.direction);\n\t      } : gsap.utils.snap(snap.snapTo);\n\t      snapDurClamp = snap.duration || {\n\t        min: 0.1,\n\t        max: 2\n\t      };\n\t      snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n\t      snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n\t        if (Math.abs(self.getVelocity()) < 10 && !_pointerIsDown && lastSnap !== scrollFunc()) {\n\t          var totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress,\n\t              velocity = (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,\n\t              change1 = gsap.utils.clamp(-self.progress, 1 - self.progress, _abs(velocity / 2) * velocity / 0.185),\n\t              naturalEnd = self.progress + (snap.inertia === false ? 0 : change1),\n\t              endValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n\t              scroll = scrollFunc(),\n\t              endScroll = Math.round(start + endValue * change),\n\t              _snap = snap,\n\t              onStart = _snap.onStart,\n\t              _onInterrupt = _snap.onInterrupt,\n\t              _onComplete = _snap.onComplete,\n\t              tween = tweenTo.tween;\n\n\t          if (scroll <= end && scroll >= start && endScroll !== scroll) {\n\t            if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {\n\t              return;\n\t            }\n\n\t            if (snap.inertia === false) {\n\t              change1 = endValue - self.progress;\n\t            }\n\n\t            tweenTo(endScroll, {\n\t              duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n\t              ease: snap.ease || \"power3\",\n\t              data: _abs(endScroll - scroll),\n\t              onInterrupt: function onInterrupt() {\n\t                return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);\n\t              },\n\t              onComplete: function onComplete() {\n\t                self.update();\n\t                lastSnap = scrollFunc();\n\t                snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n\t                onSnapComplete && onSnapComplete(self);\n\t                _onComplete && _onComplete(self);\n\t              }\n\t            }, scroll, change1 * change, endScroll - scroll - change1 * change);\n\t            onStart && onStart(self, tweenTo.tween);\n\t          }\n\t        } else if (self.isActive) {\n\t          snapDelayedCall.restart(true);\n\t        }\n\t      }).pause();\n\t    }\n\n\t    id && (_ids[id] = self);\n\t    trigger = self.trigger = _getTarget(trigger || pin);\n\t    pin = pin === true ? trigger : _getTarget(pin);\n\t    _isString(toggleClass) && (toggleClass = {\n\t      targets: trigger,\n\t      className: toggleClass\n\t    });\n\n\t    if (pin) {\n\t      pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding);\n\t      self.pin = pin;\n\t      vars.force3D !== false && gsap.set(pin, {\n\t        force3D: true\n\t      });\n\t      pinCache = gsap.core.getCache(pin);\n\n\t      if (!pinCache.spacer) {\n\t        if (pinSpacer) {\n\t          pinSpacer = _getTarget(pinSpacer);\n\t          pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement);\n\t          pinCache.spacerIsNative = !!pinSpacer;\n\t          pinSpacer && (pinCache.spacerState = _getState(pinSpacer));\n\t        }\n\n\t        pinCache.spacer = spacer = pinSpacer || _doc.createElement(\"div\");\n\t        spacer.classList.add(\"pin-spacer\");\n\t        id && spacer.classList.add(\"pin-spacer-\" + id);\n\t        pinCache.pinState = pinOriginalState = _getState(pin);\n\t      } else {\n\t        pinOriginalState = pinCache.pinState;\n\t      }\n\n\t      self.spacer = spacer = pinCache.spacer;\n\t      cs = _getComputedStyle(pin);\n\t      spacingStart = cs[pinSpacing + direction.os2];\n\t      pinGetter = gsap.getProperty(pin);\n\t      pinSetter = gsap.quickSetter(pin, direction.a, _px);\n\n\t      _swapPinIn(pin, spacer, cs);\n\n\t      pinState = _getState(pin);\n\t    }\n\n\t    if (markers) {\n\t      markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n\t      markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n\t      markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n\t      offset = markerStartTrigger[\"offset\" + direction.op.d2];\n\t      markerStart = _createMarker(\"start\", id, scroller, direction, markerVars, offset, 0, containerAnimation);\n\t      markerEnd = _createMarker(\"end\", id, scroller, direction, markerVars, offset, 0, containerAnimation);\n\t      containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));\n\n\t      if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, \"fixedMarkers\") === true)) {\n\t        _makePositionable(isViewport ? _body : scroller);\n\n\t        gsap.set([markerStartTrigger, markerEndTrigger], {\n\t          force3D: true\n\t        });\n\t        markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n\t        markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n\t      }\n\t    }\n\n\t    if (containerAnimation) {\n\t      var oldOnUpdate = containerAnimation.vars.onUpdate,\n\t          oldParams = containerAnimation.vars.onUpdateParams;\n\t      containerAnimation.eventCallback(\"onUpdate\", function () {\n\t        self.update(0, 0, 1);\n\t        oldOnUpdate && oldOnUpdate.apply(oldParams || []);\n\t      });\n\t    }\n\n\t    self.previous = function () {\n\t      return _triggers[_triggers.indexOf(self) - 1];\n\t    };\n\n\t    self.next = function () {\n\t      return _triggers[_triggers.indexOf(self) + 1];\n\t    };\n\n\t    self.revert = function (revert) {\n\t      var r = revert !== false || !self.enabled,\n\t          prevRefreshing = _refreshing;\n\n\t      if (r !== self.isReverted) {\n\t        if (r) {\n\t          self.scroll.rec || (self.scroll.rec = scrollFunc());\n\t          prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0);\n\t          prevProgress = self.progress;\n\t          prevAnimProgress = animation && animation.progress();\n\t        }\n\n\t        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n\t          return m.style.display = r ? \"none\" : \"block\";\n\t        });\n\t        r && (_refreshing = 1);\n\t        self.update(r);\n\t        _refreshing = prevRefreshing;\n\t        pin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState));\n\t        self.isReverted = r;\n\t      }\n\t    };\n\n\t    self.refresh = function (soft, force) {\n\t      if ((_refreshing || !self.enabled) && !force) {\n\t        return;\n\t      }\n\n\t      if (pin && soft && _lastScrollTime) {\n\t        _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n\t        return;\n\t      }\n\n\t      _refreshing = 1;\n\t      scrubTween && scrubTween.pause();\n\t      invalidateOnRefresh && animation && animation.time(-0.01, true).invalidate();\n\t      self.isReverted || self.revert();\n\n\t      var size = getScrollerSize(),\n\t          scrollerBounds = getScrollerOffsets(),\n\t          max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),\n\t          offset = 0,\n\t          otherPinOffset = 0,\n\t          parsedEnd = vars.end,\n\t          parsedEndTrigger = vars.endTrigger || trigger,\n\t          parsedStart = vars.start || (vars.start === 0 || !trigger ? 0 : pin ? \"0 0\" : \"0 100%\"),\n\t          pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer),\n\t          triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n\t          i = triggerIndex,\n\t          cs,\n\t          bounds,\n\t          scroll,\n\t          isVertical,\n\t          override,\n\t          curTrigger,\n\t          curPin,\n\t          oppositeScroll,\n\t          initted,\n\t          revertedPins;\n\n\t      while (i--) {\n\t        curTrigger = _triggers[i];\n\t        curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = 1);\n\t        curPin = curTrigger.pin;\n\n\t        if (curPin && (curPin === trigger || curPin === pin) && !curTrigger.isReverted) {\n\t          revertedPins || (revertedPins = []);\n\t          revertedPins.unshift(curTrigger);\n\t          curTrigger.revert();\n\t        }\n\t      }\n\n\t      _isFunction(parsedStart) && (parsedStart = parsedStart(self));\n\t      start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation) || (pin ? -0.001 : 0);\n\t      _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n\t      if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n\t        if (~parsedEnd.indexOf(\" \")) {\n\t          parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n\t        } else {\n\t          offset = _offsetToPx(parsedEnd.substr(2), size);\n\t          parsedEnd = _isString(parsedStart) ? parsedStart : start + offset;\n\t          parsedEndTrigger = trigger;\n\t        }\n\t      }\n\n\t      end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation)) || -0.001;\n\t      change = end - start || (start -= 0.01) && 0.001;\n\t      offset = 0;\n\t      i = triggerIndex;\n\n\t      while (i--) {\n\t        curTrigger = _triggers[i];\n\t        curPin = curTrigger.pin;\n\n\t        if (curPin && curTrigger.start - curTrigger._pinPush < start && !containerAnimation) {\n\t          cs = curTrigger.end - curTrigger.start;\n\n\t          if ((curPin === trigger || curPin === pinnedContainer) && !_isNumber(parsedStart)) {\n\t            offset += cs * (1 - curTrigger.progress);\n\t          }\n\n\t          curPin === pin && (otherPinOffset += cs);\n\t        }\n\t      }\n\n\t      start += offset;\n\t      end += offset;\n\t      self._pinPush = otherPinOffset;\n\n\t      if (markerStart && offset) {\n\t        cs = {};\n\t        cs[direction.a] = \"+=\" + offset;\n\t        pinnedContainer && (cs[direction.p] = \"-=\" + scrollFunc());\n\t        gsap.set([markerStart, markerEnd], cs);\n\t      }\n\n\t      if (pin) {\n\t        cs = _getComputedStyle(pin);\n\t        isVertical = direction === _vertical;\n\t        scroll = scrollFunc();\n\t        pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\t        !max && end > 1 && ((isViewport ? _body : scroller).style[\"overflow-\" + direction.a] = \"scroll\");\n\n\t        _swapPinIn(pin, spacer, cs);\n\n\t        pinState = _getState(pin);\n\t        bounds = _getBounds(pin, true);\n\t        oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n\t        if (pinSpacing) {\n\t          spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n\t          spacerState.t = spacer;\n\t          i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n\t          i && spacerState.push(direction.d, i + _px);\n\n\t          _setState(spacerState);\n\n\t          useFixedPosition && scrollFunc(prevScroll);\n\t        }\n\n\t        if (useFixedPosition) {\n\t          override = {\n\t            top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n\t            left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n\t            boxSizing: \"border-box\",\n\t            position: \"fixed\"\n\t          };\n\t          override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n\t          override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n\t          override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n\t          override[_padding] = cs[_padding];\n\t          override[_padding + _Top] = cs[_padding + _Top];\n\t          override[_padding + _Right] = cs[_padding + _Right];\n\t          override[_padding + _Bottom] = cs[_padding + _Bottom];\n\t          override[_padding + _Left] = cs[_padding + _Left];\n\t          pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n\t        }\n\n\t        if (animation) {\n\t          initted = animation._initted;\n\n\t          _suppressOverwrites(1);\n\n\t          animation.render(animation.duration(), true, true);\n\t          pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n\t          change !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2);\n\t          animation.render(0, true, true);\n\t          initted || animation.invalidate();\n\n\t          _suppressOverwrites(0);\n\t        } else {\n\t          pinChange = change;\n\t        }\n\t      } else if (trigger && scrollFunc() && !containerAnimation) {\n\t        bounds = trigger.parentNode;\n\n\t        while (bounds && bounds !== _body) {\n\t          if (bounds._pinOffset) {\n\t            start -= bounds._pinOffset;\n\t            end -= bounds._pinOffset;\n\t          }\n\n\t          bounds = bounds.parentNode;\n\t        }\n\t      }\n\n\t      revertedPins && revertedPins.forEach(function (t) {\n\t        return t.revert(false);\n\t      });\n\t      self.start = start;\n\t      self.end = end;\n\t      scroll1 = scroll2 = scrollFunc();\n\n\t      if (!containerAnimation) {\n\t        scroll1 < prevScroll && scrollFunc(prevScroll);\n\t        self.scroll.rec = 0;\n\t      }\n\n\t      self.revert(false);\n\t      _refreshing = 0;\n\t      animation && isToggle && animation._initted && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress, true).render(animation.time(), true, true);\n\n\t      if (prevProgress !== self.progress || containerAnimation) {\n\t        animation && !isToggle && animation.totalProgress(prevProgress, true);\n\t        self.progress = prevProgress;\n\t        self.update(0, 0, 1);\n\t      }\n\n\t      pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n\t      onRefresh && onRefresh(self);\n\t    };\n\n\t    self.getVelocity = function () {\n\t      return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0;\n\t    };\n\n\t    self.endAnimation = function () {\n\t      _endAnimation(self.callbackAnimation);\n\n\t      if (animation) {\n\t        scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);\n\t      }\n\t    };\n\n\t    self.labelToScroll = function (label) {\n\t      return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;\n\t    };\n\n\t    self.getTrailing = function (name) {\n\t      var i = _triggers.indexOf(self),\n\t          a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);\n\n\t      return _isString(name) ? a.filter(function (t) {\n\t        return t.vars.preventOverlaps === name;\n\t      }) : a;\n\t    };\n\n\t    self.update = function (reset, recordVelocity, forceFake) {\n\t      if (containerAnimation && !forceFake && !reset) {\n\t        return;\n\t      }\n\n\t      var scroll = self.scroll(),\n\t          p = reset ? 0 : (scroll - start) / change,\n\t          clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n\t          prevProgress = self.progress,\n\t          isActive,\n\t          wasActive,\n\t          toggleState,\n\t          action,\n\t          stateChanged,\n\t          toggled,\n\t          isAtMax,\n\t          isTakingAction;\n\n\t      if (recordVelocity) {\n\t        scroll2 = scroll1;\n\t        scroll1 = containerAnimation ? scrollFunc() : scroll;\n\n\t        if (snap) {\n\t          snap2 = snap1;\n\t          snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n\t        }\n\t      }\n\n\t      anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001);\n\n\t      if (clipped !== prevProgress && self.enabled) {\n\t        isActive = self.isActive = !!clipped && clipped < 1;\n\t        wasActive = !!prevProgress && prevProgress < 1;\n\t        toggled = isActive !== wasActive;\n\t        stateChanged = toggled || !!clipped !== !!prevProgress;\n\t        self.direction = clipped > prevProgress ? 1 : -1;\n\t        self.progress = clipped;\n\n\t        if (stateChanged && !_refreshing) {\n\t          toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3;\n\n\t          if (isToggle) {\n\t            action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState];\n\t            isTakingAction = animation && (action === \"complete\" || action === \"reset\" || action in animation);\n\t          }\n\t        }\n\n\t        preventOverlaps && toggled && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {\n\t          return t.endAnimation();\n\t        }));\n\n\t        if (!isToggle) {\n\t          if (scrubTween && !_refreshing && !_startup) {\n\t            scrubTween.vars.totalProgress = clipped;\n\t            scrubTween.invalidate().restart();\n\t          } else if (animation) {\n\t            animation.totalProgress(clipped, !!_refreshing);\n\t          }\n\t        }\n\n\t        if (pin) {\n\t          reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n\t          if (!useFixedPosition) {\n\t            pinSetter(pinStart + pinChange * clipped);\n\t          } else if (stateChanged) {\n\t            isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction);\n\n\t            if (pinReparent) {\n\t              if (!reset && (isActive || isAtMax)) {\n\t                var bounds = _getBounds(pin, true),\n\t                    _offset = scroll - start;\n\n\t                _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n\t              } else {\n\t                _reparent(pin, spacer);\n\t              }\n\t            }\n\n\t            _setState(isActive || isAtMax ? pinActiveState : pinState);\n\n\t            pinChange !== change && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));\n\t          }\n\t        }\n\n\t        snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n\t        toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n\t          return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n\t        });\n\t        onUpdate && !isToggle && !reset && onUpdate(self);\n\n\t        if (stateChanged && !_refreshing) {\n\t          if (isToggle) {\n\t            if (isTakingAction) {\n\t              if (action === \"complete\") {\n\t                animation.pause().totalProgress(1);\n\t              } else if (action === \"reset\") {\n\t                animation.restart(true).pause();\n\t              } else if (action === \"restart\") {\n\t                animation.restart(true);\n\t              } else {\n\t                animation[action]();\n\t              }\n\t            }\n\n\t            onUpdate && onUpdate(self);\n\t          }\n\n\t          if (toggled || !_limitCallbacks) {\n\t            onToggle && toggled && _callback(self, onToggle);\n\t            callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n\t            once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0);\n\n\t            if (!toggled) {\n\t              toggleState = clipped === 1 ? 1 : 3;\n\t              callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n\t            }\n\t          }\n\n\t          if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {\n\t            _endAnimation(self.callbackAnimation);\n\n\t            scrubTween ? scrubTween.progress(1) : _endAnimation(animation, !clipped, 1);\n\t          }\n\t        } else if (isToggle && onUpdate && !_refreshing) {\n\t          onUpdate(self);\n\t        }\n\t      }\n\n\t      if (markerEndSetter) {\n\t        var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;\n\t        markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));\n\t        markerEndSetter(n);\n\t      }\n\n\t      caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));\n\t    };\n\n\t    self.enable = function (reset, refresh) {\n\t      if (!self.enabled) {\n\t        self.enabled = true;\n\n\t        _addListener(scroller, \"resize\", _onResize);\n\n\t        _addListener(scroller, \"scroll\", _onScroll);\n\n\t        onRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n\t        if (reset !== false) {\n\t          self.progress = prevProgress = 0;\n\t          scroll1 = scroll2 = lastSnap = scrollFunc();\n\t        }\n\n\t        refresh !== false && self.refresh();\n\t      }\n\t    };\n\n\t    self.getTween = function (snap) {\n\t      return snap && tweenTo ? tweenTo.tween : scrubTween;\n\t    };\n\n\t    self.setPositions = function (newStart, newEnd) {\n\t      if (pin) {\n\t        pinStart += newStart - start;\n\t        pinChange += newEnd - newStart - change;\n\t      }\n\n\t      self.start = start = newStart;\n\t      self.end = end = newEnd;\n\t      change = newEnd - newStart;\n\t      self.update();\n\t    };\n\n\t    self.disable = function (reset, allowAnimation) {\n\t      if (self.enabled) {\n\t        reset !== false && self.revert();\n\t        self.enabled = self.isActive = false;\n\t        allowAnimation || scrubTween && scrubTween.pause();\n\t        prevScroll = 0;\n\t        pinCache && (pinCache.uncache = 1);\n\t        onRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n\t        if (snapDelayedCall) {\n\t          snapDelayedCall.pause();\n\t          tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n\t        }\n\n\t        if (!isViewport) {\n\t          var i = _triggers.length;\n\n\t          while (i--) {\n\t            if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n\t              return;\n\t            }\n\t          }\n\n\t          _removeListener(scroller, \"resize\", _onResize);\n\n\t          _removeListener(scroller, \"scroll\", _onScroll);\n\t        }\n\t      }\n\t    };\n\n\t    self.kill = function (revert, allowAnimation) {\n\t      self.disable(revert, allowAnimation);\n\t      scrubTween && scrubTween.kill();\n\t      id && delete _ids[id];\n\n\t      var i = _triggers.indexOf(self);\n\n\t      i >= 0 && _triggers.splice(i, 1);\n\t      i === _i && _direction > 0 && _i--;\n\t      i = 0;\n\n\t      _triggers.forEach(function (t) {\n\t        return t.scroller === self.scroller && (i = 1);\n\t      });\n\n\t      i || (self.scroll.rec = 0);\n\n\t      if (animation) {\n\t        animation.scrollTrigger = null;\n\t        revert && animation.render(-1);\n\t        allowAnimation || animation.kill();\n\t      }\n\n\t      markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n\t        return m.parentNode && m.parentNode.removeChild(m);\n\t      });\n\n\t      if (pin) {\n\t        pinCache && (pinCache.uncache = 1);\n\t        i = 0;\n\n\t        _triggers.forEach(function (t) {\n\t          return t.pin === pin && i++;\n\t        });\n\n\t        i || (pinCache.spacer = 0);\n\t      }\n\t    };\n\n\t    self.enable(false, false);\n\t    !animation || !animation.add || change ? self.refresh() : gsap.delayedCall(0.01, function () {\n\t      return start || end || self.refresh();\n\t    }) && (change = 0.01) && (start = end = 0);\n\t  };\n\n\t  ScrollTrigger.register = function register(core) {\n\t    if (!_coreInitted) {\n\t      gsap = core || _getGSAP();\n\n\t      if (_windowExists() && window.document) {\n\t        _win = window;\n\t        _doc = document;\n\t        _docEl = _doc.documentElement;\n\t        _body = _doc.body;\n\t      }\n\n\t      if (gsap) {\n\t        _toArray = gsap.utils.toArray;\n\t        _clamp = gsap.utils.clamp;\n\t        _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;\n\t        gsap.core.globals(\"ScrollTrigger\", ScrollTrigger);\n\n\t        if (_body) {\n\t          _addListener(_win, \"wheel\", _onScroll);\n\n\t          _root = [_win, _doc, _docEl, _body];\n\n\t          _addListener(_doc, \"scroll\", _onScroll);\n\n\t          var bodyStyle = _body.style,\n\t              border = bodyStyle.borderTopStyle,\n\t              bounds;\n\t          bodyStyle.borderTopStyle = \"solid\";\n\t          bounds = _getBounds(_body);\n\t          _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0;\n\t          _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n\t          border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty(\"border-top-style\");\n\t          _syncInterval = setInterval(_sync, 200);\n\t          gsap.delayedCall(0.5, function () {\n\t            return _startup = 0;\n\t          });\n\n\t          _addListener(_doc, \"touchcancel\", _passThrough);\n\n\t          _addListener(_body, \"touchstart\", _passThrough);\n\n\t          _multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", function () {\n\t            return _pointerIsDown = 1;\n\t          });\n\n\t          _multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", function () {\n\t            return _pointerIsDown = 0;\n\t          });\n\n\t          _transformProp = gsap.utils.checkPrefix(\"transform\");\n\n\t          _stateProps.push(_transformProp);\n\n\t          _coreInitted = _getTime();\n\t          _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n\t          _autoRefresh = [_doc, \"visibilitychange\", function () {\n\t            var w = _win.innerWidth,\n\t                h = _win.innerHeight;\n\n\t            if (_doc.hidden) {\n\t              _prevWidth = w;\n\t              _prevHeight = h;\n\t            } else if (_prevWidth !== w || _prevHeight !== h) {\n\t              _onResize();\n\t            }\n\t          }, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", function () {\n\t            return _lastScrollTime || _refreshAll();\n\t          }, _win, \"resize\", _onResize];\n\n\t          _iterateAutoRefresh(_addListener);\n\t        }\n\t      }\n\t    }\n\n\t    return _coreInitted;\n\t  };\n\n\t  ScrollTrigger.defaults = function defaults(config) {\n\t    if (config) {\n\t      for (var p in config) {\n\t        _defaults[p] = config[p];\n\t      }\n\t    }\n\n\t    return _defaults;\n\t  };\n\n\t  ScrollTrigger.kill = function kill() {\n\t    _enabled = 0;\n\n\t    _triggers.slice(0).forEach(function (trigger) {\n\t      return trigger.kill(1);\n\t    });\n\t  };\n\n\t  ScrollTrigger.config = function config(vars) {\n\t    \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n\t    var ms = vars.syncInterval;\n\t    ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n\n\t    if (\"autoRefreshEvents\" in vars) {\n\t      _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\");\n\t      _ignoreResize = (vars.autoRefreshEvents + \"\").indexOf(\"resize\") === -1;\n\t    }\n\t  };\n\n\t  ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n\t    var t = _getTarget(target),\n\t        i = _scrollers.indexOf(t),\n\t        isViewport = _isViewport(t);\n\n\t    if (~i) {\n\t      _scrollers.splice(i, isViewport ? 6 : 2);\n\t    }\n\n\t    if (vars) {\n\t      isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n\t    }\n\t  };\n\n\t  ScrollTrigger.matchMedia = function matchMedia(vars) {\n\t    var mq, p, i, func, result;\n\n\t    for (p in vars) {\n\t      i = _media.indexOf(p);\n\t      func = vars[p];\n\t      _creatingMedia = p;\n\n\t      if (p === \"all\") {\n\t        func();\n\t      } else {\n\t        mq = _win.matchMedia(p);\n\n\t        if (mq) {\n\t          mq.matches && (result = func());\n\n\t          if (~i) {\n\t            _media[i + 1] = _combineFunc(_media[i + 1], func);\n\t            _media[i + 2] = _combineFunc(_media[i + 2], result);\n\t          } else {\n\t            i = _media.length;\n\n\t            _media.push(p, func, result);\n\n\t            mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n\t          }\n\n\t          _media[i + 3] = mq.matches;\n\t        }\n\t      }\n\n\t      _creatingMedia = 0;\n\t    }\n\n\t    return _media;\n\t  };\n\n\t  ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n\t    query || (_media.length = 0);\n\t    query = _media.indexOf(query);\n\t    query >= 0 && _media.splice(query, 4);\n\t  };\n\n\t  ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {\n\t    var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(),\n\t        offset = bounds[horizontal ? _width : _height] * ratio || 0;\n\t    return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;\n\t  };\n\n\t  ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {\n\t    _isString(element) && (element = _getTarget(element));\n\t    var bounds = element.getBoundingClientRect(),\n\t        size = bounds[horizontal ? _width : _height],\n\t        offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf(\"%\") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;\n\t    return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;\n\t  };\n\n\t  return ScrollTrigger;\n\t}();\n\tScrollTrigger.version = \"3.9.1\";\n\n\tScrollTrigger.saveStyles = function (targets) {\n\t  return targets ? _toArray(targets).forEach(function (target) {\n\t    if (target && target.style) {\n\t      var i = _savedStyles.indexOf(target);\n\n\t      i >= 0 && _savedStyles.splice(i, 5);\n\n\t      _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute(\"transform\"), gsap.core.getCache(target), _creatingMedia);\n\t    }\n\t  }) : _savedStyles;\n\t};\n\n\tScrollTrigger.revert = function (soft, media) {\n\t  return _revertAll(!soft, media);\n\t};\n\n\tScrollTrigger.create = function (vars, animation) {\n\t  return new ScrollTrigger(vars, animation);\n\t};\n\n\tScrollTrigger.refresh = function (safe) {\n\t  return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);\n\t};\n\n\tScrollTrigger.update = _updateAll;\n\tScrollTrigger.clearScrollMemory = _clearScrollMemory;\n\n\tScrollTrigger.maxScroll = function (element, horizontal) {\n\t  return _maxScroll(element, horizontal ? _horizontal : _vertical);\n\t};\n\n\tScrollTrigger.getScrollFunc = function (element, horizontal) {\n\t  return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);\n\t};\n\n\tScrollTrigger.getById = function (id) {\n\t  return _ids[id];\n\t};\n\n\tScrollTrigger.getAll = function () {\n\t  return _triggers.slice(0);\n\t};\n\n\tScrollTrigger.isScrolling = function () {\n\t  return !!_lastScrollTime;\n\t};\n\n\tScrollTrigger.snapDirectional = _snapDirectional;\n\n\tScrollTrigger.addEventListener = function (type, callback) {\n\t  var a = _listeners[type] || (_listeners[type] = []);\n\t  ~a.indexOf(callback) || a.push(callback);\n\t};\n\n\tScrollTrigger.removeEventListener = function (type, callback) {\n\t  var a = _listeners[type],\n\t      i = a && a.indexOf(callback);\n\t  i >= 0 && a.splice(i, 1);\n\t};\n\n\tScrollTrigger.batch = function (targets, vars) {\n\t  var result = [],\n\t      varsCopy = {},\n\t      interval = vars.interval || 0.016,\n\t      batchMax = vars.batchMax || 1e9,\n\t      proxyCallback = function proxyCallback(type, callback) {\n\t    var elements = [],\n\t        triggers = [],\n\t        delay = gsap.delayedCall(interval, function () {\n\t      callback(elements, triggers);\n\t      elements = [];\n\t      triggers = [];\n\t    }).pause();\n\t    return function (self) {\n\t      elements.length || delay.restart(true);\n\t      elements.push(self.trigger);\n\t      triggers.push(self);\n\t      batchMax <= elements.length && delay.progress(1);\n\t    };\n\t  },\n\t      p;\n\n\t  for (p in vars) {\n\t    varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n\t  }\n\n\t  if (_isFunction(batchMax)) {\n\t    batchMax = batchMax();\n\n\t    _addListener(ScrollTrigger, \"refresh\", function () {\n\t      return batchMax = vars.batchMax();\n\t    });\n\t  }\n\n\t  _toArray(targets).forEach(function (target) {\n\t    var config = {};\n\n\t    for (p in varsCopy) {\n\t      config[p] = varsCopy[p];\n\t    }\n\n\t    config.trigger = target;\n\t    result.push(ScrollTrigger.create(config));\n\t  });\n\n\t  return result;\n\t};\n\n\tScrollTrigger.sort = function (func) {\n\t  return _triggers.sort(func || function (a, b) {\n\t    return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n\t  });\n\t};\n\n\t_getGSAP() && gsap.registerPlugin(ScrollTrigger);\n\n\texports.ScrollTrigger = ScrollTrigger;\n\texports.default = ScrollTrigger;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = global || self, factory(global.window = global.window || {}));\n}(this, (function (exports) { 'use strict';\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    subClass.__proto__ = superClass;\n  }\n\n  function _assertThisInitialized(self) {\n    if (self === void 0) {\n      throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    }\n\n    return self;\n  }\n\n  /*!\n   * GSAP 3.9.1\n   * https://greensock.com\n   *\n   * @license Copyright 2008-2021, GreenSock. All rights reserved.\n   * Subject to the terms at https://greensock.com/standard-license or for\n   * Club GreenSock members, the agreement issued with that membership.\n   * @author: Jack Doyle, jack@greensock.com\n  */\n  var _config = {\n    autoSleep: 120,\n    force3D: \"auto\",\n    nullTargetWarn: 1,\n    units: {\n      lineHeight: \"\"\n    }\n  },\n      _defaults = {\n    duration: .5,\n    overwrite: false,\n    delay: 0\n  },\n      _suppressOverwrites,\n      _bigNum = 1e8,\n      _tinyNum = 1 / _bigNum,\n      _2PI = Math.PI * 2,\n      _HALF_PI = _2PI / 4,\n      _gsID = 0,\n      _sqrt = Math.sqrt,\n      _cos = Math.cos,\n      _sin = Math.sin,\n      _isString = function _isString(value) {\n    return typeof value === \"string\";\n  },\n      _isFunction = function _isFunction(value) {\n    return typeof value === \"function\";\n  },\n      _isNumber = function _isNumber(value) {\n    return typeof value === \"number\";\n  },\n      _isUndefined = function _isUndefined(value) {\n    return typeof value === \"undefined\";\n  },\n      _isObject = function _isObject(value) {\n    return typeof value === \"object\";\n  },\n      _isNotFalse = function _isNotFalse(value) {\n    return value !== false;\n  },\n      _windowExists = function _windowExists() {\n    return typeof window !== \"undefined\";\n  },\n      _isFuncOrString = function _isFuncOrString(value) {\n    return _isFunction(value) || _isString(value);\n  },\n      _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n      _isArray = Array.isArray,\n      _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n      _numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n      _numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n      _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n      _relExp = /[+-]=-?[.\\d]+/,\n      _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n      _unitExp = /[\\d.+\\-=]+(?:e[-+]\\d*)*/i,\n      _globalTimeline,\n      _win,\n      _coreInitted,\n      _doc,\n      _globals = {},\n      _installScope = {},\n      _coreReady,\n      _install = function _install(scope) {\n    return (_installScope = _merge(scope, _globals)) && gsap;\n  },\n      _missingPlugin = function _missingPlugin(property, value) {\n    return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n  },\n      _warn = function _warn(message, suppress) {\n    return !suppress && console.warn(message);\n  },\n      _addGlobal = function _addGlobal(name, obj) {\n    return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n  },\n      _emptyFunc = function _emptyFunc() {\n    return 0;\n  },\n      _reservedProps = {},\n      _lazyTweens = [],\n      _lazyLookup = {},\n      _lastRenderedFrame,\n      _plugins = {},\n      _effects = {},\n      _nextGCFrame = 30,\n      _harnessPlugins = [],\n      _callbackNames = \"\",\n      _harness = function _harness(targets) {\n    var target = targets[0],\n        harnessPlugin,\n        i;\n    _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n    if (!(harnessPlugin = (target._gsap || {}).harness)) {\n      i = _harnessPlugins.length;\n\n      while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n      harnessPlugin = _harnessPlugins[i];\n    }\n\n    i = targets.length;\n\n    while (i--) {\n      targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n    }\n\n    return targets;\n  },\n      _getCache = function _getCache(target) {\n    return target._gsap || _harness(toArray(target))[0]._gsap;\n  },\n      _getProperty = function _getProperty(target, property, v) {\n    return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n  },\n      _forEachName = function _forEachName(names, func) {\n    return (names = names.split(\",\")).forEach(func) || names;\n  },\n      _round = function _round(value) {\n    return Math.round(value * 100000) / 100000 || 0;\n  },\n      _roundPrecise = function _roundPrecise(value) {\n    return Math.round(value * 10000000) / 10000000 || 0;\n  },\n      _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n    var l = toFind.length,\n        i = 0;\n\n    for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n    return i < l;\n  },\n      _lazyRender = function _lazyRender() {\n    var l = _lazyTweens.length,\n        a = _lazyTweens.slice(0),\n        i,\n        tween;\n\n    _lazyLookup = {};\n    _lazyTweens.length = 0;\n\n    for (i = 0; i < l; i++) {\n      tween = a[i];\n      tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n    }\n  },\n      _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n    _lazyTweens.length && _lazyRender();\n    animation.render(time, suppressEvents, force);\n    _lazyTweens.length && _lazyRender();\n  },\n      _numericIfPossible = function _numericIfPossible(value) {\n    var n = parseFloat(value);\n    return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n  },\n      _passThrough = function _passThrough(p) {\n    return p;\n  },\n      _setDefaults = function _setDefaults(obj, defaults) {\n    for (var p in defaults) {\n      p in obj || (obj[p] = defaults[p]);\n    }\n\n    return obj;\n  },\n      _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n    return function (obj, defaults) {\n      for (var p in defaults) {\n        p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n      }\n    };\n  },\n      _merge = function _merge(base, toMerge) {\n    for (var p in toMerge) {\n      base[p] = toMerge[p];\n    }\n\n    return base;\n  },\n      _mergeDeep = function _mergeDeep(base, toMerge) {\n    for (var p in toMerge) {\n      p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n    }\n\n    return base;\n  },\n      _copyExcluding = function _copyExcluding(obj, excluding) {\n    var copy = {},\n        p;\n\n    for (p in obj) {\n      p in excluding || (copy[p] = obj[p]);\n    }\n\n    return copy;\n  },\n      _inheritDefaults = function _inheritDefaults(vars) {\n    var parent = vars.parent || _globalTimeline,\n        func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n    if (_isNotFalse(vars.inherit)) {\n      while (parent) {\n        func(vars, parent.vars.defaults);\n        parent = parent.parent || parent._dp;\n      }\n    }\n\n    return vars;\n  },\n      _arraysMatch = function _arraysMatch(a1, a2) {\n    var i = a1.length,\n        match = i === a2.length;\n\n    while (match && i-- && a1[i] === a2[i]) {}\n\n    return i < 0;\n  },\n      _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n    if (firstProp === void 0) {\n      firstProp = \"_first\";\n    }\n\n    if (lastProp === void 0) {\n      lastProp = \"_last\";\n    }\n\n    var prev = parent[lastProp],\n        t;\n\n    if (sortBy) {\n      t = child[sortBy];\n\n      while (prev && prev[sortBy] > t) {\n        prev = prev._prev;\n      }\n    }\n\n    if (prev) {\n      child._next = prev._next;\n      prev._next = child;\n    } else {\n      child._next = parent[firstProp];\n      parent[firstProp] = child;\n    }\n\n    if (child._next) {\n      child._next._prev = child;\n    } else {\n      parent[lastProp] = child;\n    }\n\n    child._prev = prev;\n    child.parent = child._dp = parent;\n    return child;\n  },\n      _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n    if (firstProp === void 0) {\n      firstProp = \"_first\";\n    }\n\n    if (lastProp === void 0) {\n      lastProp = \"_last\";\n    }\n\n    var prev = child._prev,\n        next = child._next;\n\n    if (prev) {\n      prev._next = next;\n    } else if (parent[firstProp] === child) {\n      parent[firstProp] = next;\n    }\n\n    if (next) {\n      next._prev = prev;\n    } else if (parent[lastProp] === child) {\n      parent[lastProp] = prev;\n    }\n\n    child._next = child._prev = child.parent = null;\n  },\n      _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n    child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);\n    child._act = 0;\n  },\n      _uncache = function _uncache(animation, child) {\n    if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n      var a = animation;\n\n      while (a) {\n        a._dirty = 1;\n        a = a.parent;\n      }\n    }\n\n    return animation;\n  },\n      _recacheAncestors = function _recacheAncestors(animation) {\n    var parent = animation.parent;\n\n    while (parent && parent.parent) {\n      parent._dirty = 1;\n      parent.totalDuration();\n      parent = parent.parent;\n    }\n\n    return animation;\n  },\n      _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n    return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n  },\n      _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n    return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n  },\n      _animationCycle = function _animationCycle(tTime, cycleDuration) {\n    var whole = Math.floor(tTime /= cycleDuration);\n    return tTime && whole === tTime ? whole - 1 : whole;\n  },\n      _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n    return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n  },\n      _setEnd = function _setEnd(animation) {\n    return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n  },\n      _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n    var parent = animation._dp;\n\n    if (parent && parent.smoothChildTiming && animation._ts) {\n      animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n      _setEnd(animation);\n\n      parent._dirty || _uncache(parent, animation);\n    }\n\n    return animation;\n  },\n      _postAddChecks = function _postAddChecks(timeline, child) {\n    var t;\n\n    if (child._time || child._initted && !child._dur) {\n      t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n      if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n        child.render(t, true);\n      }\n    }\n\n    if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n      if (timeline._dur < timeline.duration()) {\n        t = timeline;\n\n        while (t._dp) {\n          t.rawTime() >= 0 && t.totalTime(t._tTime);\n          t = t._dp;\n        }\n      }\n\n      timeline._zTime = -_tinyNum;\n    }\n  },\n      _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n    child.parent && _removeFromParent(child);\n    child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n    child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n    _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n    _isFromOrFromStart(child) || (timeline._recent = child);\n    skipChecks || _postAddChecks(timeline, child);\n    return timeline;\n  },\n      _scrollTrigger = function _scrollTrigger(animation, trigger) {\n    return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n  },\n      _attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) {\n    _initTween(tween, totalTime);\n\n    if (!tween._initted) {\n      return 1;\n    }\n\n    if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n      _lazyTweens.push(tween);\n\n      tween._lazy = [totalTime, suppressEvents];\n      return 1;\n    }\n  },\n      _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n    var parent = _ref.parent;\n    return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n  },\n      _isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n    var data = _ref2.data;\n    return data === \"isFromStart\" || data === \"isStart\";\n  },\n      _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n    var prevRatio = tween.ratio,\n        ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n        repeatDelay = tween._rDelay,\n        tTime = 0,\n        pt,\n        iteration,\n        prevIteration;\n\n    if (repeatDelay && tween._repeat) {\n      tTime = _clamp(0, tween._tDur, totalTime);\n      iteration = _animationCycle(tTime, repeatDelay);\n      tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n      if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n        prevRatio = 1 - ratio;\n        tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n      }\n    }\n\n    if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n      if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {\n        return;\n      }\n\n      prevIteration = tween._zTime;\n      tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0);\n      suppressEvents || (suppressEvents = totalTime && !prevIteration);\n      tween.ratio = ratio;\n      tween._from && (ratio = 1 - ratio);\n      tween._time = 0;\n      tween._tTime = tTime;\n      pt = tween._pt;\n\n      while (pt) {\n        pt.r(ratio, pt.d);\n        pt = pt._next;\n      }\n\n      tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);\n      tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n      tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n      if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n        ratio && _removeFromParent(tween, 1);\n\n        if (!suppressEvents) {\n          _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n          tween._prom && tween._prom();\n        }\n      }\n    } else if (!tween._zTime) {\n      tween._zTime = totalTime;\n    }\n  },\n      _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n    var child;\n\n    if (time > prevTime) {\n      child = animation._first;\n\n      while (child && child._start <= time) {\n        if (child.data === \"isPause\" && child._start > prevTime) {\n          return child;\n        }\n\n        child = child._next;\n      }\n    } else {\n      child = animation._last;\n\n      while (child && child._start >= time) {\n        if (child.data === \"isPause\" && child._start < prevTime) {\n          return child;\n        }\n\n        child = child._prev;\n      }\n    }\n  },\n      _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n    var repeat = animation._repeat,\n        dur = _roundPrecise(duration) || 0,\n        totalProgress = animation._tTime / animation._tDur;\n    totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n    animation._dur = dur;\n    animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n    totalProgress > 0 && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation);\n    skipUncache || _uncache(animation.parent, animation);\n    return animation;\n  },\n      _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n    return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n  },\n      _zeroPosition = {\n    _start: 0,\n    endTime: _emptyFunc,\n    totalDuration: _emptyFunc\n  },\n      _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n    var labels = animation.labels,\n        recent = animation._recent || _zeroPosition,\n        clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n        i,\n        offset,\n        isPercent;\n\n    if (_isString(position) && (isNaN(position) || position in labels)) {\n      offset = position.charAt(0);\n      isPercent = position.substr(-1) === \"%\";\n      i = position.indexOf(\"=\");\n\n      if (offset === \"<\" || offset === \">\") {\n        i >= 0 && (position = position.replace(/=/, \"\"));\n        return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n      }\n\n      if (i < 0) {\n        position in labels || (labels[position] = clippedDuration);\n        return labels[position];\n      }\n\n      offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n      if (isPercent && percentAnimation) {\n        offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n      }\n\n      return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n    }\n\n    return position == null ? clippedDuration : +position;\n  },\n      _createTweenType = function _createTweenType(type, params, timeline) {\n    var isLegacy = _isNumber(params[1]),\n        varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n        vars = params[varsIndex],\n        irVars,\n        parent;\n\n    isLegacy && (vars.duration = params[1]);\n    vars.parent = timeline;\n\n    if (type) {\n      irVars = vars;\n      parent = timeline;\n\n      while (parent && !(\"immediateRender\" in irVars)) {\n        irVars = parent.vars.defaults || {};\n        parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n      }\n\n      vars.immediateRender = _isNotFalse(irVars.immediateRender);\n      type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1];\n    }\n\n    return new Tween(params[0], vars, params[varsIndex + 1]);\n  },\n      _conditionalReturn = function _conditionalReturn(value, func) {\n    return value || value === 0 ? func(value) : func;\n  },\n      _clamp = function _clamp(min, max, value) {\n    return value < min ? min : value > max ? max : value;\n  },\n      getUnit = function getUnit(value, v) {\n    return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : value.substr(v.index + v[0].length);\n  },\n      clamp = function clamp(min, max, value) {\n    return _conditionalReturn(value, function (v) {\n      return _clamp(min, max, v);\n    });\n  },\n      _slice = [].slice,\n      _isArrayLike = function _isArrayLike(value, nonEmpty) {\n    return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n  },\n      _flatten = function _flatten(ar, leaveStrings, accumulator) {\n    if (accumulator === void 0) {\n      accumulator = [];\n    }\n\n    return ar.forEach(function (value) {\n      var _accumulator;\n\n      return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n    }) || accumulator;\n  },\n      toArray = function toArray(value, scope, leaveStrings) {\n    return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n  },\n      selector = function selector(value) {\n    value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n    return function (v) {\n      var el = value.current || value.nativeElement || value;\n      return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n    };\n  },\n      shuffle = function shuffle(a) {\n    return a.sort(function () {\n      return .5 - Math.random();\n    });\n  },\n      distribute = function distribute(v) {\n    if (_isFunction(v)) {\n      return v;\n    }\n\n    var vars = _isObject(v) ? v : {\n      each: v\n    },\n        ease = _parseEase(vars.ease),\n        from = vars.from || 0,\n        base = parseFloat(vars.base) || 0,\n        cache = {},\n        isDecimal = from > 0 && from < 1,\n        ratios = isNaN(from) || isDecimal,\n        axis = vars.axis,\n        ratioX = from,\n        ratioY = from;\n\n    if (_isString(from)) {\n      ratioX = ratioY = {\n        center: .5,\n        edges: .5,\n        end: 1\n      }[from] || 0;\n    } else if (!isDecimal && ratios) {\n      ratioX = from[0];\n      ratioY = from[1];\n    }\n\n    return function (i, target, a) {\n      var l = (a || vars).length,\n          distances = cache[l],\n          originX,\n          originY,\n          x,\n          y,\n          d,\n          j,\n          max,\n          min,\n          wrapAt;\n\n      if (!distances) {\n        wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n        if (!wrapAt) {\n          max = -_bigNum;\n\n          while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n          wrapAt--;\n        }\n\n        distances = cache[l] = [];\n        originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n        originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n        max = 0;\n        min = _bigNum;\n\n        for (j = 0; j < l; j++) {\n          x = j % wrapAt - originX;\n          y = originY - (j / wrapAt | 0);\n          distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n          d > max && (max = d);\n          d < min && (min = d);\n        }\n\n        from === \"random\" && shuffle(distances);\n        distances.max = max - min;\n        distances.min = min;\n        distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n        distances.b = l < 0 ? base - l : base;\n        distances.u = getUnit(vars.amount || vars.each) || 0;\n        ease = ease && l < 0 ? _invertEase(ease) : ease;\n      }\n\n      l = (distances[i] - distances.min) / distances.max || 0;\n      return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u;\n    };\n  },\n      _roundModifier = function _roundModifier(v) {\n    var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length);\n    return function (raw) {\n      var n = Math.round(parseFloat(raw) / v) * v * p;\n      return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw));\n    };\n  },\n      snap = function snap(snapTo, value) {\n    var isArray = _isArray(snapTo),\n        radius,\n        is2D;\n\n    if (!isArray && _isObject(snapTo)) {\n      radius = isArray = snapTo.radius || _bigNum;\n\n      if (snapTo.values) {\n        snapTo = toArray(snapTo.values);\n\n        if (is2D = !_isNumber(snapTo[0])) {\n          radius *= radius;\n        }\n      } else {\n        snapTo = _roundModifier(snapTo.increment);\n      }\n    }\n\n    return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n      is2D = snapTo(raw);\n      return Math.abs(is2D - raw) <= radius ? is2D : raw;\n    } : function (raw) {\n      var x = parseFloat(is2D ? raw.x : raw),\n          y = parseFloat(is2D ? raw.y : 0),\n          min = _bigNum,\n          closest = 0,\n          i = snapTo.length,\n          dx,\n          dy;\n\n      while (i--) {\n        if (is2D) {\n          dx = snapTo[i].x - x;\n          dy = snapTo[i].y - y;\n          dx = dx * dx + dy * dy;\n        } else {\n          dx = Math.abs(snapTo[i] - x);\n        }\n\n        if (dx < min) {\n          min = dx;\n          closest = i;\n        }\n      }\n\n      closest = !radius || min <= radius ? snapTo[closest] : raw;\n      return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n    });\n  },\n      random = function random(min, max, roundingIncrement, returnFunction) {\n    return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n      return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n    });\n  },\n      pipe = function pipe() {\n    for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n      functions[_key] = arguments[_key];\n    }\n\n    return function (value) {\n      return functions.reduce(function (v, f) {\n        return f(v);\n      }, value);\n    };\n  },\n      unitize = function unitize(func, unit) {\n    return function (value) {\n      return func(parseFloat(value)) + (unit || getUnit(value));\n    };\n  },\n      normalize = function normalize(min, max, value) {\n    return mapRange(min, max, 0, 1, value);\n  },\n      _wrapArray = function _wrapArray(a, wrapper, value) {\n    return _conditionalReturn(value, function (index) {\n      return a[~~wrapper(index)];\n    });\n  },\n      wrap = function wrap(min, max, value) {\n    var range = max - min;\n    return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n      return (range + (value - min) % range) % range + min;\n    });\n  },\n      wrapYoyo = function wrapYoyo(min, max, value) {\n    var range = max - min,\n        total = range * 2;\n    return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n      value = (total + (value - min) % total) % total || 0;\n      return min + (value > range ? total - value : value);\n    });\n  },\n      _replaceRandom = function _replaceRandom(value) {\n    var prev = 0,\n        s = \"\",\n        i,\n        nums,\n        end,\n        isArray;\n\n    while (~(i = value.indexOf(\"random(\", prev))) {\n      end = value.indexOf(\")\", i);\n      isArray = value.charAt(i + 7) === \"[\";\n      nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n      s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n      prev = end + 1;\n    }\n\n    return s + value.substr(prev, value.length - prev);\n  },\n      mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n    var inRange = inMax - inMin,\n        outRange = outMax - outMin;\n    return _conditionalReturn(value, function (value) {\n      return outMin + ((value - inMin) / inRange * outRange || 0);\n    });\n  },\n      interpolate = function interpolate(start, end, progress, mutate) {\n    var func = isNaN(start + end) ? 0 : function (p) {\n      return (1 - p) * start + p * end;\n    };\n\n    if (!func) {\n      var isString = _isString(start),\n          master = {},\n          p,\n          i,\n          interpolators,\n          l,\n          il;\n\n      progress === true && (mutate = 1) && (progress = null);\n\n      if (isString) {\n        start = {\n          p: start\n        };\n        end = {\n          p: end\n        };\n      } else if (_isArray(start) && !_isArray(end)) {\n        interpolators = [];\n        l = start.length;\n        il = l - 2;\n\n        for (i = 1; i < l; i++) {\n          interpolators.push(interpolate(start[i - 1], start[i]));\n        }\n\n        l--;\n\n        func = function func(p) {\n          p *= l;\n          var i = Math.min(il, ~~p);\n          return interpolators[i](p - i);\n        };\n\n        progress = end;\n      } else if (!mutate) {\n        start = _merge(_isArray(start) ? [] : {}, start);\n      }\n\n      if (!interpolators) {\n        for (p in end) {\n          _addPropTween.call(master, start, p, \"get\", end[p]);\n        }\n\n        func = function func(p) {\n          return _renderPropTweens(p, master) || (isString ? start.p : start);\n        };\n      }\n    }\n\n    return _conditionalReturn(progress, func);\n  },\n      _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n    var labels = timeline.labels,\n        min = _bigNum,\n        p,\n        distance,\n        label;\n\n    for (p in labels) {\n      distance = labels[p] - fromTime;\n\n      if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n        label = p;\n        min = distance;\n      }\n    }\n\n    return label;\n  },\n      _callback = function _callback(animation, type, executeLazyFirst) {\n    var v = animation.vars,\n        callback = v[type],\n        params,\n        scope;\n\n    if (!callback) {\n      return;\n    }\n\n    params = v[type + \"Params\"];\n    scope = v.callbackScope || animation;\n    executeLazyFirst && _lazyTweens.length && _lazyRender();\n    return params ? callback.apply(scope, params) : callback.call(scope);\n  },\n      _interrupt = function _interrupt(animation) {\n    _removeFromParent(animation);\n\n    animation.scrollTrigger && animation.scrollTrigger.kill(false);\n    animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n    return animation;\n  },\n      _quickTween,\n      _createPlugin = function _createPlugin(config) {\n    config = !config.name && config[\"default\"] || config;\n\n    var name = config.name,\n        isFunc = _isFunction(config),\n        Plugin = name && !isFunc && config.init ? function () {\n      this._props = [];\n    } : config,\n        instanceDefaults = {\n      init: _emptyFunc,\n      render: _renderPropTweens,\n      add: _addPropTween,\n      kill: _killPropTweensOf,\n      modifier: _addPluginModifier,\n      rawVars: 0\n    },\n        statics = {\n      targetTest: 0,\n      get: 0,\n      getSetter: _getSetter,\n      aliases: {},\n      register: 0\n    };\n\n    _wake();\n\n    if (config !== Plugin) {\n      if (_plugins[name]) {\n        return;\n      }\n\n      _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics));\n\n      _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics)));\n\n      _plugins[Plugin.prop = name] = Plugin;\n\n      if (config.targetTest) {\n        _harnessPlugins.push(Plugin);\n\n        _reservedProps[name] = 1;\n      }\n\n      name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\";\n    }\n\n    _addGlobal(name, Plugin);\n\n    config.register && config.register(gsap, Plugin, PropTween);\n  },\n      _255 = 255,\n      _colorLookup = {\n    aqua: [0, _255, _255],\n    lime: [0, _255, 0],\n    silver: [192, 192, 192],\n    black: [0, 0, 0],\n    maroon: [128, 0, 0],\n    teal: [0, 128, 128],\n    blue: [0, 0, _255],\n    navy: [0, 0, 128],\n    white: [_255, _255, _255],\n    olive: [128, 128, 0],\n    yellow: [_255, _255, 0],\n    orange: [_255, 165, 0],\n    gray: [128, 128, 128],\n    purple: [128, 0, 128],\n    green: [0, 128, 0],\n    red: [_255, 0, 0],\n    pink: [_255, 192, 203],\n    cyan: [0, _255, _255],\n    transparent: [_255, _255, _255, 0]\n  },\n      _hue = function _hue(h, m1, m2) {\n    h += h < 0 ? 1 : h > 1 ? -1 : 0;\n    return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n  },\n      splitColor = function splitColor(v, toHSL, forceAlpha) {\n    var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n        r,\n        g,\n        b,\n        h,\n        s,\n        l,\n        max,\n        min,\n        d,\n        wasHSL;\n\n    if (!a) {\n      if (v.substr(-1) === \",\") {\n        v = v.substr(0, v.length - 1);\n      }\n\n      if (_colorLookup[v]) {\n        a = _colorLookup[v];\n      } else if (v.charAt(0) === \"#\") {\n        if (v.length < 6) {\n          r = v.charAt(1);\n          g = v.charAt(2);\n          b = v.charAt(3);\n          v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n        }\n\n        if (v.length === 9) {\n          a = parseInt(v.substr(1, 6), 16);\n          return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n        }\n\n        v = parseInt(v.substr(1), 16);\n        a = [v >> 16, v >> 8 & _255, v & _255];\n      } else if (v.substr(0, 3) === \"hsl\") {\n        a = wasHSL = v.match(_strictNumExp);\n\n        if (!toHSL) {\n          h = +a[0] % 360 / 360;\n          s = +a[1] / 100;\n          l = +a[2] / 100;\n          g = l <= .5 ? l * (s + 1) : l + s - l * s;\n          r = l * 2 - g;\n          a.length > 3 && (a[3] *= 1);\n          a[0] = _hue(h + 1 / 3, r, g);\n          a[1] = _hue(h, r, g);\n          a[2] = _hue(h - 1 / 3, r, g);\n        } else if (~v.indexOf(\"=\")) {\n          a = v.match(_numExp);\n          forceAlpha && a.length < 4 && (a[3] = 1);\n          return a;\n        }\n      } else {\n        a = v.match(_strictNumExp) || _colorLookup.transparent;\n      }\n\n      a = a.map(Number);\n    }\n\n    if (toHSL && !wasHSL) {\n      r = a[0] / _255;\n      g = a[1] / _255;\n      b = a[2] / _255;\n      max = Math.max(r, g, b);\n      min = Math.min(r, g, b);\n      l = (max + min) / 2;\n\n      if (max === min) {\n        h = s = 0;\n      } else {\n        d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n        h *= 60;\n      }\n\n      a[0] = ~~(h + .5);\n      a[1] = ~~(s * 100 + .5);\n      a[2] = ~~(l * 100 + .5);\n    }\n\n    forceAlpha && a.length < 4 && (a[3] = 1);\n    return a;\n  },\n      _colorOrderData = function _colorOrderData(v) {\n    var values = [],\n        c = [],\n        i = -1;\n    v.split(_colorExp).forEach(function (v) {\n      var a = v.match(_numWithUnitExp) || [];\n      values.push.apply(values, a);\n      c.push(i += a.length + 1);\n    });\n    values.c = c;\n    return values;\n  },\n      _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n    var result = \"\",\n        colors = (s + result).match(_colorExp),\n        type = toHSL ? \"hsla(\" : \"rgba(\",\n        i = 0,\n        c,\n        shell,\n        d,\n        l;\n\n    if (!colors) {\n      return s;\n    }\n\n    colors = colors.map(function (color) {\n      return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n    });\n\n    if (orderMatchData) {\n      d = _colorOrderData(s);\n      c = orderMatchData.c;\n\n      if (c.join(result) !== d.c.join(result)) {\n        shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n        l = shell.length - 1;\n\n        for (; i < l; i++) {\n          result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n        }\n      }\n    }\n\n    if (!shell) {\n      shell = s.split(_colorExp);\n      l = shell.length - 1;\n\n      for (; i < l; i++) {\n        result += shell[i] + colors[i];\n      }\n    }\n\n    return result + shell[l];\n  },\n      _colorExp = function () {\n    var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n        p;\n\n    for (p in _colorLookup) {\n      s += \"|\" + p + \"\\\\b\";\n    }\n\n    return new RegExp(s + \")\", \"gi\");\n  }(),\n      _hslExp = /hsl[a]?\\(/,\n      _colorStringFilter = function _colorStringFilter(a) {\n    var combined = a.join(\" \"),\n        toHSL;\n    _colorExp.lastIndex = 0;\n\n    if (_colorExp.test(combined)) {\n      toHSL = _hslExp.test(combined);\n      a[1] = _formatColors(a[1], toHSL);\n      a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1]));\n      return true;\n    }\n  },\n      _tickerActive,\n      _ticker = function () {\n    var _getTime = Date.now,\n        _lagThreshold = 500,\n        _adjustedLag = 33,\n        _startTime = _getTime(),\n        _lastUpdate = _startTime,\n        _gap = 1000 / 240,\n        _nextTime = _gap,\n        _listeners = [],\n        _id,\n        _req,\n        _raf,\n        _self,\n        _delta,\n        _i,\n        _tick = function _tick(v) {\n      var elapsed = _getTime() - _lastUpdate,\n          manual = v === true,\n          overlap,\n          dispatch,\n          time,\n          frame;\n\n      elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n      _lastUpdate += elapsed;\n      time = _lastUpdate - _startTime;\n      overlap = time - _nextTime;\n\n      if (overlap > 0 || manual) {\n        frame = ++_self.frame;\n        _delta = time - _self.time * 1000;\n        _self.time = time = time / 1000;\n        _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n        dispatch = 1;\n      }\n\n      manual || (_id = _req(_tick));\n\n      if (dispatch) {\n        for (_i = 0; _i < _listeners.length; _i++) {\n          _listeners[_i](time, _delta, frame, v);\n        }\n      }\n    };\n\n    _self = {\n      time: 0,\n      frame: 0,\n      tick: function tick() {\n        _tick(true);\n      },\n      deltaRatio: function deltaRatio(fps) {\n        return _delta / (1000 / (fps || 60));\n      },\n      wake: function wake() {\n        if (_coreReady) {\n          if (!_coreInitted && _windowExists()) {\n            _win = _coreInitted = window;\n            _doc = _win.document || {};\n            _globals.gsap = gsap;\n            (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n            _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n            _raf = _win.requestAnimationFrame;\n          }\n\n          _id && _self.sleep();\n\n          _req = _raf || function (f) {\n            return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n          };\n\n          _tickerActive = 1;\n\n          _tick(2);\n        }\n      },\n      sleep: function sleep() {\n        (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n        _tickerActive = 0;\n        _req = _emptyFunc;\n      },\n      lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n        _lagThreshold = threshold || 1 / _tinyNum;\n        _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n      },\n      fps: function fps(_fps) {\n        _gap = 1000 / (_fps || 240);\n        _nextTime = _self.time * 1000 + _gap;\n      },\n      add: function add(callback) {\n        _listeners.indexOf(callback) < 0 && _listeners.push(callback);\n\n        _wake();\n      },\n      remove: function remove(callback, i) {\n        ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n      },\n      _listeners: _listeners\n    };\n    return _self;\n  }(),\n      _wake = function _wake() {\n    return !_tickerActive && _ticker.wake();\n  },\n      _easeMap = {},\n      _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n      _quotesExp = /[\"']/g,\n      _parseObjectInString = function _parseObjectInString(value) {\n    var obj = {},\n        split = value.substr(1, value.length - 3).split(\":\"),\n        key = split[0],\n        i = 1,\n        l = split.length,\n        index,\n        val,\n        parsedVal;\n\n    for (; i < l; i++) {\n      val = split[i];\n      index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n      parsedVal = val.substr(0, index);\n      obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n      key = val.substr(index + 1).trim();\n    }\n\n    return obj;\n  },\n      _valueInParentheses = function _valueInParentheses(value) {\n    var open = value.indexOf(\"(\") + 1,\n        close = value.indexOf(\")\"),\n        nested = value.indexOf(\"(\", open);\n    return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n  },\n      _configEaseFromString = function _configEaseFromString(name) {\n    var split = (name + \"\").split(\"(\"),\n        ease = _easeMap[split[0]];\n    return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n  },\n      _invertEase = function _invertEase(ease) {\n    return function (p) {\n      return 1 - ease(1 - p);\n    };\n  },\n      _propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n    var child = timeline._first,\n        ease;\n\n    while (child) {\n      if (child instanceof Timeline) {\n        _propagateYoyoEase(child, isYoyo);\n      } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n        if (child.timeline) {\n          _propagateYoyoEase(child.timeline, isYoyo);\n        } else {\n          ease = child._ease;\n          child._ease = child._yEase;\n          child._yEase = ease;\n          child._yoyo = isYoyo;\n        }\n      }\n\n      child = child._next;\n    }\n  },\n      _parseEase = function _parseEase(ease, defaultEase) {\n    return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n  },\n      _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n    if (easeOut === void 0) {\n      easeOut = function easeOut(p) {\n        return 1 - easeIn(1 - p);\n      };\n    }\n\n    if (easeInOut === void 0) {\n      easeInOut = function easeInOut(p) {\n        return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n      };\n    }\n\n    var ease = {\n      easeIn: easeIn,\n      easeOut: easeOut,\n      easeInOut: easeInOut\n    },\n        lowercaseName;\n\n    _forEachName(names, function (name) {\n      _easeMap[name] = _globals[name] = ease;\n      _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n      for (var p in ease) {\n        _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n      }\n    });\n\n    return ease;\n  },\n      _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n    return function (p) {\n      return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n    };\n  },\n      _configElastic = function _configElastic(type, amplitude, period) {\n    var p1 = amplitude >= 1 ? amplitude : 1,\n        p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n        p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n        easeOut = function easeOut(p) {\n      return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n    },\n        ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n      return 1 - easeOut(1 - p);\n    } : _easeInOutFromOut(easeOut);\n\n    p2 = _2PI / p2;\n\n    ease.config = function (amplitude, period) {\n      return _configElastic(type, amplitude, period);\n    };\n\n    return ease;\n  },\n      _configBack = function _configBack(type, overshoot) {\n    if (overshoot === void 0) {\n      overshoot = 1.70158;\n    }\n\n    var easeOut = function easeOut(p) {\n      return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n    },\n        ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n      return 1 - easeOut(1 - p);\n    } : _easeInOutFromOut(easeOut);\n\n    ease.config = function (overshoot) {\n      return _configBack(type, overshoot);\n    };\n\n    return ease;\n  };\n\n  _forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n    var power = i < 5 ? i + 1 : i;\n\n    _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n      return Math.pow(p, power);\n    } : function (p) {\n      return p;\n    }, function (p) {\n      return 1 - Math.pow(1 - p, power);\n    }, function (p) {\n      return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n    });\n  });\n\n  _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n  _insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n  (function (n, c) {\n    var n1 = 1 / c,\n        n2 = 2 * n1,\n        n3 = 2.5 * n1,\n        easeOut = function easeOut(p) {\n      return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n    };\n\n    _insertEase(\"Bounce\", function (p) {\n      return 1 - easeOut(1 - p);\n    }, easeOut);\n  })(7.5625, 2.75);\n\n  _insertEase(\"Expo\", function (p) {\n    return p ? Math.pow(2, 10 * (p - 1)) : 0;\n  });\n\n  _insertEase(\"Circ\", function (p) {\n    return -(_sqrt(1 - p * p) - 1);\n  });\n\n  _insertEase(\"Sine\", function (p) {\n    return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n  });\n\n  _insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n  _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n    config: function config(steps, immediateStart) {\n      if (steps === void 0) {\n        steps = 1;\n      }\n\n      var p1 = 1 / steps,\n          p2 = steps + (immediateStart ? 0 : 1),\n          p3 = immediateStart ? 1 : 0,\n          max = 1 - _tinyNum;\n      return function (p) {\n        return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n      };\n    }\n  };\n  _defaults.ease = _easeMap[\"quad.out\"];\n\n  _forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n    return _callbackNames += name + \",\" + name + \"Params,\";\n  });\n\n  var GSCache = function GSCache(target, harness) {\n    this.id = _gsID++;\n    target._gsap = this;\n    this.target = target;\n    this.harness = harness;\n    this.get = harness ? harness.get : _getProperty;\n    this.set = harness ? harness.getSetter : _getSetter;\n  };\n  var Animation = function () {\n    function Animation(vars) {\n      this.vars = vars;\n      this._delay = +vars.delay || 0;\n\n      if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n        this._rDelay = vars.repeatDelay || 0;\n        this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n      }\n\n      this._ts = 1;\n\n      _setDuration(this, +vars.duration, 1, 1);\n\n      this.data = vars.data;\n      _tickerActive || _ticker.wake();\n    }\n\n    var _proto = Animation.prototype;\n\n    _proto.delay = function delay(value) {\n      if (value || value === 0) {\n        this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n        this._delay = value;\n        return this;\n      }\n\n      return this._delay;\n    };\n\n    _proto.duration = function duration(value) {\n      return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n    };\n\n    _proto.totalDuration = function totalDuration(value) {\n      if (!arguments.length) {\n        return this._tDur;\n      }\n\n      this._dirty = 0;\n      return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n    };\n\n    _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n      _wake();\n\n      if (!arguments.length) {\n        return this._tTime;\n      }\n\n      var parent = this._dp;\n\n      if (parent && parent.smoothChildTiming && this._ts) {\n        _alignPlayhead(this, _totalTime);\n\n        !parent._dp || parent.parent || _postAddChecks(parent, this);\n\n        while (parent && parent.parent) {\n          if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n            parent.totalTime(parent._tTime, true);\n          }\n\n          parent = parent.parent;\n        }\n\n        if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n          _addToTimeline(this._dp, this, this._start - this._delay);\n        }\n      }\n\n      if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n        this._ts || (this._pTime = _totalTime);\n\n        _lazySafeRender(this, _totalTime, suppressEvents);\n      }\n\n      return this;\n    };\n\n    _proto.time = function time(value, suppressEvents) {\n      return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time;\n    };\n\n    _proto.totalProgress = function totalProgress(value, suppressEvents) {\n      return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;\n    };\n\n    _proto.progress = function progress(value, suppressEvents) {\n      return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio;\n    };\n\n    _proto.iteration = function iteration(value, suppressEvents) {\n      var cycleDuration = this.duration() + this._rDelay;\n\n      return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n    };\n\n    _proto.timeScale = function timeScale(value) {\n      if (!arguments.length) {\n        return this._rts === -_tinyNum ? 0 : this._rts;\n      }\n\n      if (this._rts === value) {\n        return this;\n      }\n\n      var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime;\n      this._rts = +value || 0;\n      this._ts = this._ps || value === -_tinyNum ? 0 : this._rts;\n\n      _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));\n\n      _setEnd(this);\n\n      return this;\n    };\n\n    _proto.paused = function paused(value) {\n      if (!arguments.length) {\n        return this._ps;\n      }\n\n      if (this._ps !== value) {\n        this._ps = value;\n\n        if (value) {\n          this._pTime = this._tTime || Math.max(-this._delay, this.rawTime());\n          this._ts = this._act = 0;\n        } else {\n          _wake();\n\n          this._ts = this._rts;\n          this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum));\n        }\n      }\n\n      return this;\n    };\n\n    _proto.startTime = function startTime(value) {\n      if (arguments.length) {\n        this._start = value;\n        var parent = this.parent || this._dp;\n        parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n        return this;\n      }\n\n      return this._start;\n    };\n\n    _proto.endTime = function endTime(includeRepeats) {\n      return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n    };\n\n    _proto.rawTime = function rawTime(wrapRepeats) {\n      var parent = this.parent || this._dp;\n      return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n    };\n\n    _proto.globalTime = function globalTime(rawTime) {\n      var animation = this,\n          time = arguments.length ? rawTime : animation.rawTime();\n\n      while (animation) {\n        time = animation._start + time / (animation._ts || 1);\n        animation = animation._dp;\n      }\n\n      return time;\n    };\n\n    _proto.repeat = function repeat(value) {\n      if (arguments.length) {\n        this._repeat = value === Infinity ? -2 : value;\n        return _onUpdateTotalDuration(this);\n      }\n\n      return this._repeat === -2 ? Infinity : this._repeat;\n    };\n\n    _proto.repeatDelay = function repeatDelay(value) {\n      if (arguments.length) {\n        var time = this._time;\n        this._rDelay = value;\n\n        _onUpdateTotalDuration(this);\n\n        return time ? this.time(time) : this;\n      }\n\n      return this._rDelay;\n    };\n\n    _proto.yoyo = function yoyo(value) {\n      if (arguments.length) {\n        this._yoyo = value;\n        return this;\n      }\n\n      return this._yoyo;\n    };\n\n    _proto.seek = function seek(position, suppressEvents) {\n      return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n    };\n\n    _proto.restart = function restart(includeDelay, suppressEvents) {\n      return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n    };\n\n    _proto.play = function play(from, suppressEvents) {\n      from != null && this.seek(from, suppressEvents);\n      return this.reversed(false).paused(false);\n    };\n\n    _proto.reverse = function reverse(from, suppressEvents) {\n      from != null && this.seek(from || this.totalDuration(), suppressEvents);\n      return this.reversed(true).paused(false);\n    };\n\n    _proto.pause = function pause(atTime, suppressEvents) {\n      atTime != null && this.seek(atTime, suppressEvents);\n      return this.paused(true);\n    };\n\n    _proto.resume = function resume() {\n      return this.paused(false);\n    };\n\n    _proto.reversed = function reversed(value) {\n      if (arguments.length) {\n        !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0));\n        return this;\n      }\n\n      return this._rts < 0;\n    };\n\n    _proto.invalidate = function invalidate() {\n      this._initted = this._act = 0;\n      this._zTime = -_tinyNum;\n      return this;\n    };\n\n    _proto.isActive = function isActive() {\n      var parent = this.parent || this._dp,\n          start = this._start,\n          rawTime;\n      return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n    };\n\n    _proto.eventCallback = function eventCallback(type, callback, params) {\n      var vars = this.vars;\n\n      if (arguments.length > 1) {\n        if (!callback) {\n          delete vars[type];\n        } else {\n          vars[type] = callback;\n          params && (vars[type + \"Params\"] = params);\n          type === \"onUpdate\" && (this._onUpdate = callback);\n        }\n\n        return this;\n      }\n\n      return vars[type];\n    };\n\n    _proto.then = function then(onFulfilled) {\n      var self = this;\n      return new Promise(function (resolve) {\n        var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n            _resolve = function _resolve() {\n          var _then = self.then;\n          self.then = null;\n          _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n          resolve(f);\n          self.then = _then;\n        };\n\n        if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n          _resolve();\n        } else {\n          self._prom = _resolve;\n        }\n      });\n    };\n\n    _proto.kill = function kill() {\n      _interrupt(this);\n    };\n\n    return Animation;\n  }();\n\n  _setDefaults(Animation.prototype, {\n    _time: 0,\n    _start: 0,\n    _end: 0,\n    _tTime: 0,\n    _tDur: 0,\n    _dirty: 0,\n    _repeat: 0,\n    _yoyo: false,\n    parent: null,\n    _initted: false,\n    _rDelay: 0,\n    _ts: 1,\n    _dp: 0,\n    ratio: 0,\n    _zTime: -_tinyNum,\n    _prom: 0,\n    _ps: false,\n    _rts: 1\n  });\n\n  var Timeline = function (_Animation) {\n    _inheritsLoose(Timeline, _Animation);\n\n    function Timeline(vars, position) {\n      var _this;\n\n      if (vars === void 0) {\n        vars = {};\n      }\n\n      _this = _Animation.call(this, vars) || this;\n      _this.labels = {};\n      _this.smoothChildTiming = !!vars.smoothChildTiming;\n      _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n      _this._sort = _isNotFalse(vars.sortChildren);\n      _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n      vars.reversed && _this.reverse();\n      vars.paused && _this.paused(true);\n      vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n      return _this;\n    }\n\n    var _proto2 = Timeline.prototype;\n\n    _proto2.to = function to(targets, vars, position) {\n      _createTweenType(0, arguments, this);\n\n      return this;\n    };\n\n    _proto2.from = function from(targets, vars, position) {\n      _createTweenType(1, arguments, this);\n\n      return this;\n    };\n\n    _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n      _createTweenType(2, arguments, this);\n\n      return this;\n    };\n\n    _proto2.set = function set(targets, vars, position) {\n      vars.duration = 0;\n      vars.parent = this;\n      _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n      vars.immediateRender = !!vars.immediateRender;\n      new Tween(targets, vars, _parsePosition(this, position), 1);\n      return this;\n    };\n\n    _proto2.call = function call(callback, params, position) {\n      return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n    };\n\n    _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n      vars.duration = duration;\n      vars.stagger = vars.stagger || stagger;\n      vars.onComplete = onCompleteAll;\n      vars.onCompleteParams = onCompleteAllParams;\n      vars.parent = this;\n      new Tween(targets, vars, _parsePosition(this, position));\n      return this;\n    };\n\n    _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n      vars.runBackwards = 1;\n      _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n      return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n    };\n\n    _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n      toVars.startAt = fromVars;\n      _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n      return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n    };\n\n    _proto2.render = function render(totalTime, suppressEvents, force) {\n      var prevTime = this._time,\n          tDur = this._dirty ? this.totalDuration() : this._tDur,\n          dur = this._dur,\n          tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n          crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n          time,\n          child,\n          next,\n          iteration,\n          cycleDuration,\n          prevPaused,\n          pauseTween,\n          timeScale,\n          prevStart,\n          prevIteration,\n          yoyo,\n          isYoyo;\n      this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n      if (tTime !== this._tTime || force || crossingStart) {\n        if (prevTime !== this._time && dur) {\n          tTime += this._time - prevTime;\n          totalTime += this._time - prevTime;\n        }\n\n        time = tTime;\n        prevStart = this._start;\n        timeScale = this._ts;\n        prevPaused = !timeScale;\n\n        if (crossingStart) {\n          dur || (prevTime = this._zTime);\n          (totalTime || !suppressEvents) && (this._zTime = totalTime);\n        }\n\n        if (this._repeat) {\n          yoyo = this._yoyo;\n          cycleDuration = dur + this._rDelay;\n\n          if (this._repeat < -1 && totalTime < 0) {\n            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n          }\n\n          time = _roundPrecise(tTime % cycleDuration);\n\n          if (tTime === tDur) {\n            iteration = this._repeat;\n            time = dur;\n          } else {\n            iteration = ~~(tTime / cycleDuration);\n\n            if (iteration && iteration === tTime / cycleDuration) {\n              time = dur;\n              iteration--;\n            }\n\n            time > dur && (time = dur);\n          }\n\n          prevIteration = _animationCycle(this._tTime, cycleDuration);\n          !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration);\n\n          if (yoyo && iteration & 1) {\n            time = dur - time;\n            isYoyo = 1;\n          }\n\n          if (iteration !== prevIteration && !this._lock) {\n            var rewinding = yoyo && prevIteration & 1,\n                doesWrap = rewinding === (yoyo && iteration & 1);\n            iteration < prevIteration && (rewinding = !rewinding);\n            prevTime = rewinding ? 0 : dur;\n            this._lock = 1;\n            this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n            this._tTime = tTime;\n            !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n            this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n            if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n              return this;\n            }\n\n            dur = this._dur;\n            tDur = this._tDur;\n\n            if (doesWrap) {\n              this._lock = 2;\n              prevTime = rewinding ? dur : -0.0001;\n              this.render(prevTime, true);\n              this.vars.repeatRefresh && !isYoyo && this.invalidate();\n            }\n\n            this._lock = 0;\n\n            if (!this._ts && !prevPaused) {\n              return this;\n            }\n\n            _propagateYoyoEase(this, isYoyo);\n          }\n        }\n\n        if (this._hasPause && !this._forcing && this._lock < 2) {\n          pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n          if (pauseTween) {\n            tTime -= time - (time = pauseTween._start);\n          }\n        }\n\n        this._tTime = tTime;\n        this._time = time;\n        this._act = !timeScale;\n\n        if (!this._initted) {\n          this._onUpdate = this.vars.onUpdate;\n          this._initted = 1;\n          this._zTime = totalTime;\n          prevTime = 0;\n        }\n\n        if (!prevTime && time && !suppressEvents) {\n          _callback(this, \"onStart\");\n\n          if (this._tTime !== tTime) {\n            return this;\n          }\n        }\n\n        if (time >= prevTime && totalTime >= 0) {\n          child = this._first;\n\n          while (child) {\n            next = child._next;\n\n            if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n              if (child.parent !== this) {\n                return this.render(totalTime, suppressEvents, force);\n              }\n\n              child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n              if (time !== this._time || !this._ts && !prevPaused) {\n                pauseTween = 0;\n                next && (tTime += this._zTime = -_tinyNum);\n                break;\n              }\n            }\n\n            child = next;\n          }\n        } else {\n          child = this._last;\n          var adjustedTime = totalTime < 0 ? totalTime : time;\n\n          while (child) {\n            next = child._prev;\n\n            if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n              if (child.parent !== this) {\n                return this.render(totalTime, suppressEvents, force);\n              }\n\n              child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);\n\n              if (time !== this._time || !this._ts && !prevPaused) {\n                pauseTween = 0;\n                next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum);\n                break;\n              }\n            }\n\n            child = next;\n          }\n        }\n\n        if (pauseTween && !suppressEvents) {\n          this.pause();\n          pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n          if (this._ts) {\n            this._start = prevStart;\n\n            _setEnd(this);\n\n            return this.render(totalTime, suppressEvents, force);\n          }\n        }\n\n        this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n        if (tTime === tDur && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n          (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);\n\n          if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n            _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n            this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n          }\n        }\n      }\n\n      return this;\n    };\n\n    _proto2.add = function add(child, position) {\n      var _this2 = this;\n\n      _isNumber(position) || (position = _parsePosition(this, position, child));\n\n      if (!(child instanceof Animation)) {\n        if (_isArray(child)) {\n          child.forEach(function (obj) {\n            return _this2.add(obj, position);\n          });\n          return this;\n        }\n\n        if (_isString(child)) {\n          return this.addLabel(child, position);\n        }\n\n        if (_isFunction(child)) {\n          child = Tween.delayedCall(0, child);\n        } else {\n          return this;\n        }\n      }\n\n      return this !== child ? _addToTimeline(this, child, position) : this;\n    };\n\n    _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n      if (nested === void 0) {\n        nested = true;\n      }\n\n      if (tweens === void 0) {\n        tweens = true;\n      }\n\n      if (timelines === void 0) {\n        timelines = true;\n      }\n\n      if (ignoreBeforeTime === void 0) {\n        ignoreBeforeTime = -_bigNum;\n      }\n\n      var a = [],\n          child = this._first;\n\n      while (child) {\n        if (child._start >= ignoreBeforeTime) {\n          if (child instanceof Tween) {\n            tweens && a.push(child);\n          } else {\n            timelines && a.push(child);\n            nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n          }\n        }\n\n        child = child._next;\n      }\n\n      return a;\n    };\n\n    _proto2.getById = function getById(id) {\n      var animations = this.getChildren(1, 1, 1),\n          i = animations.length;\n\n      while (i--) {\n        if (animations[i].vars.id === id) {\n          return animations[i];\n        }\n      }\n    };\n\n    _proto2.remove = function remove(child) {\n      if (_isString(child)) {\n        return this.removeLabel(child);\n      }\n\n      if (_isFunction(child)) {\n        return this.killTweensOf(child);\n      }\n\n      _removeLinkedListItem(this, child);\n\n      if (child === this._recent) {\n        this._recent = this._last;\n      }\n\n      return _uncache(this);\n    };\n\n    _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n      if (!arguments.length) {\n        return this._tTime;\n      }\n\n      this._forcing = 1;\n\n      if (!this._dp && this._ts) {\n        this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n      }\n\n      _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n      this._forcing = 0;\n      return this;\n    };\n\n    _proto2.addLabel = function addLabel(label, position) {\n      this.labels[label] = _parsePosition(this, position);\n      return this;\n    };\n\n    _proto2.removeLabel = function removeLabel(label) {\n      delete this.labels[label];\n      return this;\n    };\n\n    _proto2.addPause = function addPause(position, callback, params) {\n      var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n      t.data = \"isPause\";\n      this._hasPause = 1;\n      return _addToTimeline(this, t, _parsePosition(this, position));\n    };\n\n    _proto2.removePause = function removePause(position) {\n      var child = this._first;\n      position = _parsePosition(this, position);\n\n      while (child) {\n        if (child._start === position && child.data === \"isPause\") {\n          _removeFromParent(child);\n        }\n\n        child = child._next;\n      }\n    };\n\n    _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n      var tweens = this.getTweensOf(targets, onlyActive),\n          i = tweens.length;\n\n      while (i--) {\n        _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n      }\n\n      return this;\n    };\n\n    _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n      var a = [],\n          parsedTargets = toArray(targets),\n          child = this._first,\n          isGlobalTime = _isNumber(onlyActive),\n          children;\n\n      while (child) {\n        if (child instanceof Tween) {\n          if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n            a.push(child);\n          }\n        } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n          a.push.apply(a, children);\n        }\n\n        child = child._next;\n      }\n\n      return a;\n    };\n\n    _proto2.tweenTo = function tweenTo(position, vars) {\n      vars = vars || {};\n\n      var tl = this,\n          endTime = _parsePosition(tl, position),\n          _vars = vars,\n          startAt = _vars.startAt,\n          _onStart = _vars.onStart,\n          onStartParams = _vars.onStartParams,\n          immediateRender = _vars.immediateRender,\n          initted,\n          tween = Tween.to(tl, _setDefaults({\n        ease: vars.ease || \"none\",\n        lazy: false,\n        immediateRender: false,\n        time: endTime,\n        overwrite: \"auto\",\n        duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n        onStart: function onStart() {\n          tl.pause();\n\n          if (!initted) {\n            var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n            tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n            initted = 1;\n          }\n\n          _onStart && _onStart.apply(tween, onStartParams || []);\n        }\n      }, vars));\n\n      return immediateRender ? tween.render(0) : tween;\n    };\n\n    _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n      return this.tweenTo(toPosition, _setDefaults({\n        startAt: {\n          time: _parsePosition(this, fromPosition)\n        }\n      }, vars));\n    };\n\n    _proto2.recent = function recent() {\n      return this._recent;\n    };\n\n    _proto2.nextLabel = function nextLabel(afterTime) {\n      if (afterTime === void 0) {\n        afterTime = this._time;\n      }\n\n      return _getLabelInDirection(this, _parsePosition(this, afterTime));\n    };\n\n    _proto2.previousLabel = function previousLabel(beforeTime) {\n      if (beforeTime === void 0) {\n        beforeTime = this._time;\n      }\n\n      return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n    };\n\n    _proto2.currentLabel = function currentLabel(value) {\n      return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n    };\n\n    _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n      if (ignoreBeforeTime === void 0) {\n        ignoreBeforeTime = 0;\n      }\n\n      var child = this._first,\n          labels = this.labels,\n          p;\n\n      while (child) {\n        if (child._start >= ignoreBeforeTime) {\n          child._start += amount;\n          child._end += amount;\n        }\n\n        child = child._next;\n      }\n\n      if (adjustLabels) {\n        for (p in labels) {\n          if (labels[p] >= ignoreBeforeTime) {\n            labels[p] += amount;\n          }\n        }\n      }\n\n      return _uncache(this);\n    };\n\n    _proto2.invalidate = function invalidate() {\n      var child = this._first;\n      this._lock = 0;\n\n      while (child) {\n        child.invalidate();\n        child = child._next;\n      }\n\n      return _Animation.prototype.invalidate.call(this);\n    };\n\n    _proto2.clear = function clear(includeLabels) {\n      if (includeLabels === void 0) {\n        includeLabels = true;\n      }\n\n      var child = this._first,\n          next;\n\n      while (child) {\n        next = child._next;\n        this.remove(child);\n        child = next;\n      }\n\n      this._dp && (this._time = this._tTime = this._pTime = 0);\n      includeLabels && (this.labels = {});\n      return _uncache(this);\n    };\n\n    _proto2.totalDuration = function totalDuration(value) {\n      var max = 0,\n          self = this,\n          child = self._last,\n          prevStart = _bigNum,\n          prev,\n          start,\n          parent;\n\n      if (arguments.length) {\n        return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n      }\n\n      if (self._dirty) {\n        parent = self.parent;\n\n        while (child) {\n          prev = child._prev;\n          child._dirty && child.totalDuration();\n          start = child._start;\n\n          if (start > prevStart && self._sort && child._ts && !self._lock) {\n            self._lock = 1;\n            _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n          } else {\n            prevStart = start;\n          }\n\n          if (start < 0 && child._ts) {\n            max -= start;\n\n            if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n              self._start += start / self._ts;\n              self._time -= start;\n              self._tTime -= start;\n            }\n\n            self.shiftChildren(-start, false, -1e999);\n            prevStart = 0;\n          }\n\n          child._end > max && child._ts && (max = child._end);\n          child = prev;\n        }\n\n        _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n        self._dirty = 0;\n      }\n\n      return self._tDur;\n    };\n\n    Timeline.updateRoot = function updateRoot(time) {\n      if (_globalTimeline._ts) {\n        _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n        _lastRenderedFrame = _ticker.frame;\n      }\n\n      if (_ticker.frame >= _nextGCFrame) {\n        _nextGCFrame += _config.autoSleep || 120;\n        var child = _globalTimeline._first;\n        if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n          while (child && !child._ts) {\n            child = child._next;\n          }\n\n          child || _ticker.sleep();\n        }\n      }\n    };\n\n    return Timeline;\n  }(Animation);\n\n  _setDefaults(Timeline.prototype, {\n    _lock: 0,\n    _hasPause: 0,\n    _forcing: 0\n  });\n\n  var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n    var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n        index = 0,\n        matchIndex = 0,\n        result,\n        startNums,\n        color,\n        endNum,\n        chunk,\n        startNum,\n        hasRandom,\n        a;\n    pt.b = start;\n    pt.e = end;\n    start += \"\";\n    end += \"\";\n\n    if (hasRandom = ~end.indexOf(\"random(\")) {\n      end = _replaceRandom(end);\n    }\n\n    if (stringFilter) {\n      a = [start, end];\n      stringFilter(a, target, prop);\n      start = a[0];\n      end = a[1];\n    }\n\n    startNums = start.match(_complexStringNumExp) || [];\n\n    while (result = _complexStringNumExp.exec(end)) {\n      endNum = result[0];\n      chunk = end.substring(index, result.index);\n\n      if (color) {\n        color = (color + 1) % 5;\n      } else if (chunk.substr(-5) === \"rgba(\") {\n        color = 1;\n      }\n\n      if (endNum !== startNums[matchIndex++]) {\n        startNum = parseFloat(startNums[matchIndex - 1]) || 0;\n        pt._pt = {\n          _next: pt._pt,\n          p: chunk || matchIndex === 1 ? chunk : \",\",\n          s: startNum,\n          c: endNum.charAt(1) === \"=\" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === \"-\" ? -1 : 1) : parseFloat(endNum) - startNum,\n          m: color && color < 4 ? Math.round : 0\n        };\n        index = _complexStringNumExp.lastIndex;\n      }\n    }\n\n    pt.c = index < end.length ? end.substring(index, end.length) : \"\";\n    pt.fp = funcParam;\n\n    if (_relExp.test(end) || hasRandom) {\n      pt.e = 0;\n    }\n\n    this._pt = pt;\n    return pt;\n  },\n      _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {\n    _isFunction(end) && (end = end(index || 0, target, targets));\n    var currentValue = target[prop],\n        parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n        setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n        pt;\n\n    if (_isString(end)) {\n      if (~end.indexOf(\"random(\")) {\n        end = _replaceRandom(end);\n      }\n\n      if (end.charAt(1) === \"=\") {\n        pt = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === \"-\" ? -1 : 1) + (getUnit(parsedStart) || 0);\n\n        if (pt || pt === 0) {\n          end = pt;\n        }\n      }\n    }\n\n    if (parsedStart !== end) {\n      if (!isNaN(parsedStart * end) && end !== \"\") {\n        pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n        funcParam && (pt.fp = funcParam);\n        modifier && pt.modifier(modifier, this, target);\n        return this._pt = pt;\n      }\n\n      !currentValue && !(prop in target) && _missingPlugin(prop, end);\n      return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n    }\n  },\n      _processVars = function _processVars(vars, index, target, targets, tween) {\n    _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n    if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n      return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n    }\n\n    var copy = {},\n        p;\n\n    for (p in vars) {\n      copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n    }\n\n    return copy;\n  },\n      _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n    var plugin, pt, ptLookup, i;\n\n    if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n      tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n      if (tween !== _quickTween) {\n        ptLookup = tween._ptLookup[tween._targets.indexOf(target)];\n        i = plugin._props.length;\n\n        while (i--) {\n          ptLookup[plugin._props[i]] = pt;\n        }\n      }\n    }\n\n    return plugin;\n  },\n      _overwritingTween,\n      _initTween = function _initTween(tween, time) {\n    var vars = tween.vars,\n        ease = vars.ease,\n        startAt = vars.startAt,\n        immediateRender = vars.immediateRender,\n        lazy = vars.lazy,\n        onUpdate = vars.onUpdate,\n        onUpdateParams = vars.onUpdateParams,\n        callbackScope = vars.callbackScope,\n        runBackwards = vars.runBackwards,\n        yoyoEase = vars.yoyoEase,\n        keyframes = vars.keyframes,\n        autoRevert = vars.autoRevert,\n        dur = tween._dur,\n        prevStartAt = tween._startAt,\n        targets = tween._targets,\n        parent = tween.parent,\n        fullTargets = parent && parent.data === \"nested\" ? parent.parent._targets : targets,\n        autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n        tl = tween.timeline,\n        cleanVars,\n        i,\n        p,\n        pt,\n        target,\n        hasPriority,\n        gsData,\n        harness,\n        plugin,\n        ptLookup,\n        index,\n        harnessVars,\n        overwritten;\n    tl && (!keyframes || !ease) && (ease = \"none\");\n    tween._ease = _parseEase(ease, _defaults.ease);\n    tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n    if (yoyoEase && tween._yoyo && !tween._repeat) {\n      yoyoEase = tween._yEase;\n      tween._yEase = tween._ease;\n      tween._ease = yoyoEase;\n    }\n\n    tween._from = !tl && !!vars.runBackwards;\n\n    if (!tl || keyframes && !vars.stagger) {\n      harness = targets[0] ? _getCache(targets[0]).harness : 0;\n      harnessVars = harness && vars[harness.prop];\n      cleanVars = _copyExcluding(vars, _reservedProps);\n      prevStartAt && _removeFromParent(prevStartAt.render(-1, true));\n\n      if (startAt) {\n        _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n          data: \"isStart\",\n          overwrite: false,\n          parent: parent,\n          immediateRender: true,\n          lazy: _isNotFalse(lazy),\n          startAt: null,\n          delay: 0,\n          onUpdate: onUpdate,\n          onUpdateParams: onUpdateParams,\n          callbackScope: callbackScope,\n          stagger: 0\n        }, startAt)));\n\n        time < 0 && !immediateRender && !autoRevert && tween._startAt.render(-1, true);\n\n        if (immediateRender) {\n          time > 0 && !autoRevert && (tween._startAt = 0);\n\n          if (dur && time <= 0) {\n            time && (tween._zTime = time);\n            return;\n          }\n        } else if (autoRevert === false) {\n          tween._startAt = 0;\n        }\n      } else if (runBackwards && dur) {\n        if (prevStartAt) {\n          !autoRevert && (tween._startAt = 0);\n        } else {\n          time && (immediateRender = false);\n          p = _setDefaults({\n            overwrite: false,\n            data: \"isFromStart\",\n            lazy: immediateRender && _isNotFalse(lazy),\n            immediateRender: immediateRender,\n            stagger: 0,\n            parent: parent\n          }, cleanVars);\n          harnessVars && (p[harness.prop] = harnessVars);\n\n          _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n          time < 0 && tween._startAt.render(-1, true);\n          tween._zTime = time;\n\n          if (!immediateRender) {\n            _initTween(tween._startAt, _tinyNum);\n          } else if (!time) {\n            return;\n          }\n        }\n      }\n\n      tween._pt = 0;\n      lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n      for (i = 0; i < targets.length; i++) {\n        target = targets[i];\n        gsData = target._gsap || _harness(targets)[i]._gsap;\n        tween._ptLookup[i] = ptLookup = {};\n        _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender();\n        index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n        if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n          tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n          plugin._props.forEach(function (name) {\n            ptLookup[name] = pt;\n          });\n\n          plugin.priority && (hasPriority = 1);\n        }\n\n        if (!harness || harnessVars) {\n          for (p in cleanVars) {\n            if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n              plugin.priority && (hasPriority = 1);\n            } else {\n              ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n            }\n          }\n        }\n\n        tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n        if (autoOverwrite && tween._pt) {\n          _overwritingTween = tween;\n\n          _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time));\n\n          overwritten = !tween.parent;\n          _overwritingTween = 0;\n        }\n\n        tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n      }\n\n      hasPriority && _sortPropTweensByPriority(tween);\n      tween._onInit && tween._onInit(tween);\n    }\n\n    tween._onUpdate = onUpdate;\n    tween._initted = (!tween._op || tween._pt) && !overwritten;\n    keyframes && time <= 0 && tl.render(_bigNum, true, true);\n  },\n      _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n    var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n        propertyAliases = harness && harness.aliases,\n        copy,\n        p,\n        i,\n        aliases;\n\n    if (!propertyAliases) {\n      return vars;\n    }\n\n    copy = _merge({}, vars);\n\n    for (p in propertyAliases) {\n      if (p in copy) {\n        aliases = propertyAliases[p].split(\",\");\n        i = aliases.length;\n\n        while (i--) {\n          copy[aliases[i]] = copy[p];\n        }\n      }\n    }\n\n    return copy;\n  },\n      _parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n    var ease = obj.ease || easeEach || \"power1.inOut\",\n        p,\n        a;\n\n    if (_isArray(obj)) {\n      a = allProps[prop] || (allProps[prop] = []);\n      obj.forEach(function (value, i) {\n        return a.push({\n          t: i / (obj.length - 1) * 100,\n          v: value,\n          e: ease\n        });\n      });\n    } else {\n      for (p in obj) {\n        a = allProps[p] || (allProps[p] = []);\n        p === \"ease\" || a.push({\n          t: parseFloat(prop),\n          v: obj[p],\n          e: ease\n        });\n      }\n    }\n  },\n      _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n    return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n  },\n      _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase\",\n      _staggerPropsToSkip = {};\n\n  _forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n    return _staggerPropsToSkip[name] = 1;\n  });\n\n  var Tween = function (_Animation2) {\n    _inheritsLoose(Tween, _Animation2);\n\n    function Tween(targets, vars, position, skipInherit) {\n      var _this3;\n\n      if (typeof vars === \"number\") {\n        position.duration = vars;\n        vars = position;\n        position = null;\n      }\n\n      _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n      var _this3$vars = _this3.vars,\n          duration = _this3$vars.duration,\n          delay = _this3$vars.delay,\n          immediateRender = _this3$vars.immediateRender,\n          stagger = _this3$vars.stagger,\n          overwrite = _this3$vars.overwrite,\n          keyframes = _this3$vars.keyframes,\n          defaults = _this3$vars.defaults,\n          scrollTrigger = _this3$vars.scrollTrigger,\n          yoyoEase = _this3$vars.yoyoEase,\n          parent = vars.parent || _globalTimeline,\n          parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n          tl,\n          i,\n          copy,\n          l,\n          p,\n          curTarget,\n          staggerFunc,\n          staggerVarsToMerge;\n      _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://greensock.com\", !_config.nullTargetWarn) || [];\n      _this3._ptLookup = [];\n      _this3._overwrite = overwrite;\n\n      if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n        vars = _this3.vars;\n        tl = _this3.timeline = new Timeline({\n          data: \"nested\",\n          defaults: defaults || {}\n        });\n        tl.kill();\n        tl.parent = tl._dp = _assertThisInitialized(_this3);\n        tl._start = 0;\n\n        if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n          l = parsedTargets.length;\n          staggerFunc = stagger && distribute(stagger);\n\n          if (_isObject(stagger)) {\n            for (p in stagger) {\n              if (~_staggerTweenProps.indexOf(p)) {\n                staggerVarsToMerge || (staggerVarsToMerge = {});\n                staggerVarsToMerge[p] = stagger[p];\n              }\n            }\n          }\n\n          for (i = 0; i < l; i++) {\n            copy = _copyExcluding(vars, _staggerPropsToSkip);\n            copy.stagger = 0;\n            yoyoEase && (copy.yoyoEase = yoyoEase);\n            staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n            curTarget = parsedTargets[i];\n            copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n            copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n            if (!stagger && l === 1 && copy.delay) {\n              _this3._delay = delay = copy.delay;\n              _this3._start += delay;\n              copy.delay = 0;\n            }\n\n            tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n            tl._ease = _easeMap.none;\n          }\n\n          tl.duration() ? duration = delay = 0 : _this3.timeline = 0;\n        } else if (keyframes) {\n          _inheritDefaults(_setDefaults(tl.vars.defaults, {\n            ease: \"none\"\n          }));\n\n          tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n          var time = 0,\n              a,\n              kf,\n              v;\n\n          if (_isArray(keyframes)) {\n            keyframes.forEach(function (frame) {\n              return tl.to(parsedTargets, frame, \">\");\n            });\n          } else {\n            copy = {};\n\n            for (p in keyframes) {\n              p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n            }\n\n            for (p in copy) {\n              a = copy[p].sort(function (a, b) {\n                return a.t - b.t;\n              });\n              time = 0;\n\n              for (i = 0; i < a.length; i++) {\n                kf = a[i];\n                v = {\n                  ease: kf.e,\n                  duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n                };\n                v[p] = kf.v;\n                tl.to(parsedTargets, v, time);\n                time += v.duration;\n              }\n            }\n\n            tl.duration() < duration && tl.to({}, {\n              duration: duration - tl.duration()\n            });\n          }\n        }\n\n        duration || _this3.duration(duration = tl.duration());\n      } else {\n        _this3.timeline = 0;\n      }\n\n      if (overwrite === true && !_suppressOverwrites) {\n        _overwritingTween = _assertThisInitialized(_this3);\n\n        _globalTimeline.killTweensOf(parsedTargets);\n\n        _overwritingTween = 0;\n      }\n\n      _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n      vars.reversed && _this3.reverse();\n      vars.paused && _this3.paused(true);\n\n      if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n        _this3._tTime = -_tinyNum;\n\n        _this3.render(Math.max(0, -delay));\n      }\n\n      scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n      return _this3;\n    }\n\n    var _proto3 = Tween.prototype;\n\n    _proto3.render = function render(totalTime, suppressEvents, force) {\n      var prevTime = this._time,\n          tDur = this._tDur,\n          dur = this._dur,\n          tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n          time,\n          pt,\n          iteration,\n          cycleDuration,\n          prevIteration,\n          isYoyo,\n          ratio,\n          timeline,\n          yoyoEase;\n\n      if (!dur) {\n        _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n      } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== totalTime < 0) {\n        time = tTime;\n        timeline = this.timeline;\n\n        if (this._repeat) {\n          cycleDuration = dur + this._rDelay;\n\n          if (this._repeat < -1 && totalTime < 0) {\n            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n          }\n\n          time = _roundPrecise(tTime % cycleDuration);\n\n          if (tTime === tDur) {\n            iteration = this._repeat;\n            time = dur;\n          } else {\n            iteration = ~~(tTime / cycleDuration);\n\n            if (iteration && iteration === tTime / cycleDuration) {\n              time = dur;\n              iteration--;\n            }\n\n            time > dur && (time = dur);\n          }\n\n          isYoyo = this._yoyo && iteration & 1;\n\n          if (isYoyo) {\n            yoyoEase = this._yEase;\n            time = dur - time;\n          }\n\n          prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n          if (time === prevTime && !force && this._initted) {\n            return this;\n          }\n\n          if (iteration !== prevIteration) {\n            timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo);\n\n            if (this.vars.repeatRefresh && !isYoyo && !this._lock) {\n              this._lock = force = 1;\n              this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n            }\n          }\n        }\n\n        if (!this._initted) {\n          if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {\n            this._tTime = 0;\n            return this;\n          }\n\n          if (dur !== this._dur) {\n            return this.render(totalTime, suppressEvents, force);\n          }\n        }\n\n        this._tTime = tTime;\n        this._time = time;\n\n        if (!this._act && this._ts) {\n          this._act = 1;\n          this._lazy = 0;\n        }\n\n        this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n        if (this._from) {\n          this.ratio = ratio = 1 - ratio;\n        }\n\n        if (time && !prevTime && !suppressEvents) {\n          _callback(this, \"onStart\");\n\n          if (this._tTime !== tTime) {\n            return this;\n          }\n        }\n\n        pt = this._pt;\n\n        while (pt) {\n          pt.r(ratio, pt.d);\n          pt = pt._next;\n        }\n\n        timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n        if (this._onUpdate && !suppressEvents) {\n          totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force);\n\n          _callback(this, \"onUpdate\");\n        }\n\n        this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n        if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n          totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);\n          (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);\n\n          if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\n            _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n            this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n          }\n        }\n      }\n\n      return this;\n    };\n\n    _proto3.targets = function targets() {\n      return this._targets;\n    };\n\n    _proto3.invalidate = function invalidate() {\n      this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0;\n      this._ptLookup = [];\n      this.timeline && this.timeline.invalidate();\n      return _Animation2.prototype.invalidate.call(this);\n    };\n\n    _proto3.kill = function kill(targets, vars) {\n      if (vars === void 0) {\n        vars = \"all\";\n      }\n\n      if (!targets && (!vars || vars === \"all\")) {\n        this._lazy = this._pt = 0;\n        return this.parent ? _interrupt(this) : this;\n      }\n\n      if (this.timeline) {\n        var tDur = this.timeline.totalDuration();\n        this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this);\n        this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1);\n        return this;\n      }\n\n      var parsedTargets = this._targets,\n          killingTargets = targets ? toArray(targets) : parsedTargets,\n          propTweenLookup = this._ptLookup,\n          firstPT = this._pt,\n          overwrittenProps,\n          curLookup,\n          curOverwriteProps,\n          props,\n          p,\n          pt,\n          i;\n\n      if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n        vars === \"all\" && (this._pt = 0);\n        return _interrupt(this);\n      }\n\n      overwrittenProps = this._op = this._op || [];\n\n      if (vars !== \"all\") {\n        if (_isString(vars)) {\n          p = {};\n\n          _forEachName(vars, function (name) {\n            return p[name] = 1;\n          });\n\n          vars = p;\n        }\n\n        vars = _addAliasesToVars(parsedTargets, vars);\n      }\n\n      i = parsedTargets.length;\n\n      while (i--) {\n        if (~killingTargets.indexOf(parsedTargets[i])) {\n          curLookup = propTweenLookup[i];\n\n          if (vars === \"all\") {\n            overwrittenProps[i] = vars;\n            props = curLookup;\n            curOverwriteProps = {};\n          } else {\n            curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n            props = vars;\n          }\n\n          for (p in props) {\n            pt = curLookup && curLookup[p];\n\n            if (pt) {\n              if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n                _removeLinkedListItem(this, pt, \"_pt\");\n              }\n\n              delete curLookup[p];\n            }\n\n            if (curOverwriteProps !== \"all\") {\n              curOverwriteProps[p] = 1;\n            }\n          }\n        }\n      }\n\n      this._initted && !this._pt && firstPT && _interrupt(this);\n      return this;\n    };\n\n    Tween.to = function to(targets, vars) {\n      return new Tween(targets, vars, arguments[2]);\n    };\n\n    Tween.from = function from(targets, vars) {\n      return _createTweenType(1, arguments);\n    };\n\n    Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n      return new Tween(callback, 0, {\n        immediateRender: false,\n        lazy: false,\n        overwrite: false,\n        delay: delay,\n        onComplete: callback,\n        onReverseComplete: callback,\n        onCompleteParams: params,\n        onReverseCompleteParams: params,\n        callbackScope: scope\n      });\n    };\n\n    Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n      return _createTweenType(2, arguments);\n    };\n\n    Tween.set = function set(targets, vars) {\n      vars.duration = 0;\n      vars.repeatDelay || (vars.repeat = 0);\n      return new Tween(targets, vars);\n    };\n\n    Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n      return _globalTimeline.killTweensOf(targets, props, onlyActive);\n    };\n\n    return Tween;\n  }(Animation);\n\n  _setDefaults(Tween.prototype, {\n    _targets: [],\n    _lazy: 0,\n    _startAt: 0,\n    _op: 0,\n    _onInit: 0\n  });\n\n  _forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n    Tween[name] = function () {\n      var tl = new Timeline(),\n          params = _slice.call(arguments, 0);\n\n      params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n      return tl[name].apply(tl, params);\n    };\n  });\n\n  var _setterPlain = function _setterPlain(target, property, value) {\n    return target[property] = value;\n  },\n      _setterFunc = function _setterFunc(target, property, value) {\n    return target[property](value);\n  },\n      _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n    return target[property](data.fp, value);\n  },\n      _setterAttribute = function _setterAttribute(target, property, value) {\n    return target.setAttribute(property, value);\n  },\n      _getSetter = function _getSetter(target, property) {\n    return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n  },\n      _renderPlain = function _renderPlain(ratio, data) {\n    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n  },\n      _renderBoolean = function _renderBoolean(ratio, data) {\n    return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n  },\n      _renderComplexString = function _renderComplexString(ratio, data) {\n    var pt = data._pt,\n        s = \"\";\n\n    if (!ratio && data.b) {\n      s = data.b;\n    } else if (ratio === 1 && data.e) {\n      s = data.e;\n    } else {\n      while (pt) {\n        s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s;\n        pt = pt._next;\n      }\n\n      s += data.c;\n    }\n\n    data.set(data.t, data.p, s, data);\n  },\n      _renderPropTweens = function _renderPropTweens(ratio, data) {\n    var pt = data._pt;\n\n    while (pt) {\n      pt.r(ratio, pt.d);\n      pt = pt._next;\n    }\n  },\n      _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n    var pt = this._pt,\n        next;\n\n    while (pt) {\n      next = pt._next;\n      pt.p === property && pt.modifier(modifier, tween, target);\n      pt = next;\n    }\n  },\n      _killPropTweensOf = function _killPropTweensOf(property) {\n    var pt = this._pt,\n        hasNonDependentRemaining,\n        next;\n\n    while (pt) {\n      next = pt._next;\n\n      if (pt.p === property && !pt.op || pt.op === property) {\n        _removeLinkedListItem(this, pt, \"_pt\");\n      } else if (!pt.dep) {\n        hasNonDependentRemaining = 1;\n      }\n\n      pt = next;\n    }\n\n    return !hasNonDependentRemaining;\n  },\n      _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n    data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n  },\n      _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n    var pt = parent._pt,\n        next,\n        pt2,\n        first,\n        last;\n\n    while (pt) {\n      next = pt._next;\n      pt2 = first;\n\n      while (pt2 && pt2.pr > pt.pr) {\n        pt2 = pt2._next;\n      }\n\n      if (pt._prev = pt2 ? pt2._prev : last) {\n        pt._prev._next = pt;\n      } else {\n        first = pt;\n      }\n\n      if (pt._next = pt2) {\n        pt2._prev = pt;\n      } else {\n        last = pt;\n      }\n\n      pt = next;\n    }\n\n    parent._pt = first;\n  };\n\n  var PropTween = function () {\n    function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n      this.t = target;\n      this.s = start;\n      this.c = change;\n      this.p = prop;\n      this.r = renderer || _renderPlain;\n      this.d = data || this;\n      this.set = setter || _setterPlain;\n      this.pr = priority || 0;\n      this._next = next;\n\n      if (next) {\n        next._prev = this;\n      }\n    }\n\n    var _proto4 = PropTween.prototype;\n\n    _proto4.modifier = function modifier(func, tween, target) {\n      this.mSet = this.mSet || this.set;\n      this.set = _setterWithModifier;\n      this.m = func;\n      this.mt = target;\n      this.tween = tween;\n    };\n\n    return PropTween;\n  }();\n\n  _forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n    return _reservedProps[name] = 1;\n  });\n\n  _globals.TweenMax = _globals.TweenLite = Tween;\n  _globals.TimelineLite = _globals.TimelineMax = Timeline;\n  _globalTimeline = new Timeline({\n    sortChildren: false,\n    defaults: _defaults,\n    autoRemoveChildren: true,\n    id: \"root\",\n    smoothChildTiming: true\n  });\n  _config.stringFilter = _colorStringFilter;\n  var _gsap = {\n    registerPlugin: function registerPlugin() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      args.forEach(function (config) {\n        return _createPlugin(config);\n      });\n    },\n    timeline: function timeline(vars) {\n      return new Timeline(vars);\n    },\n    getTweensOf: function getTweensOf(targets, onlyActive) {\n      return _globalTimeline.getTweensOf(targets, onlyActive);\n    },\n    getProperty: function getProperty(target, property, unit, uncache) {\n      _isString(target) && (target = toArray(target)[0]);\n\n      var getter = _getCache(target || {}).get,\n          format = unit ? _passThrough : _numericIfPossible;\n\n      unit === \"native\" && (unit = \"\");\n      return !target ? target : !property ? function (property, unit, uncache) {\n        return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n      } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n    },\n    quickSetter: function quickSetter(target, property, unit) {\n      target = toArray(target);\n\n      if (target.length > 1) {\n        var setters = target.map(function (t) {\n          return gsap.quickSetter(t, property, unit);\n        }),\n            l = setters.length;\n        return function (value) {\n          var i = l;\n\n          while (i--) {\n            setters[i](value);\n          }\n        };\n      }\n\n      target = target[0] || {};\n\n      var Plugin = _plugins[property],\n          cache = _getCache(target),\n          p = cache.harness && (cache.harness.aliases || {})[property] || property,\n          setter = Plugin ? function (value) {\n        var p = new Plugin();\n        _quickTween._pt = 0;\n        p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n        p.render(1, p);\n        _quickTween._pt && _renderPropTweens(1, _quickTween);\n      } : cache.set(target, p);\n\n      return Plugin ? setter : function (value) {\n        return setter(target, p, unit ? value + unit : value, cache, 1);\n      };\n    },\n    isTweening: function isTweening(targets) {\n      return _globalTimeline.getTweensOf(targets, true).length > 0;\n    },\n    defaults: function defaults(value) {\n      value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n      return _mergeDeep(_defaults, value || {});\n    },\n    config: function config(value) {\n      return _mergeDeep(_config, value || {});\n    },\n    registerEffect: function registerEffect(_ref3) {\n      var name = _ref3.name,\n          effect = _ref3.effect,\n          plugins = _ref3.plugins,\n          defaults = _ref3.defaults,\n          extendTimeline = _ref3.extendTimeline;\n      (plugins || \"\").split(\",\").forEach(function (pluginName) {\n        return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n      });\n\n      _effects[name] = function (targets, vars, tl) {\n        return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n      };\n\n      if (extendTimeline) {\n        Timeline.prototype[name] = function (targets, vars, position) {\n          return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n        };\n      }\n    },\n    registerEase: function registerEase(name, ease) {\n      _easeMap[name] = _parseEase(ease);\n    },\n    parseEase: function parseEase(ease, defaultEase) {\n      return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n    },\n    getById: function getById(id) {\n      return _globalTimeline.getById(id);\n    },\n    exportRoot: function exportRoot(vars, includeDelayedCalls) {\n      if (vars === void 0) {\n        vars = {};\n      }\n\n      var tl = new Timeline(vars),\n          child,\n          next;\n      tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n      _globalTimeline.remove(tl);\n\n      tl._dp = 0;\n      tl._time = tl._tTime = _globalTimeline._time;\n      child = _globalTimeline._first;\n\n      while (child) {\n        next = child._next;\n\n        if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n          _addToTimeline(tl, child, child._start - child._delay);\n        }\n\n        child = next;\n      }\n\n      _addToTimeline(_globalTimeline, tl, 0);\n\n      return tl;\n    },\n    utils: {\n      wrap: wrap,\n      wrapYoyo: wrapYoyo,\n      distribute: distribute,\n      random: random,\n      snap: snap,\n      normalize: normalize,\n      getUnit: getUnit,\n      clamp: clamp,\n      splitColor: splitColor,\n      toArray: toArray,\n      selector: selector,\n      mapRange: mapRange,\n      pipe: pipe,\n      unitize: unitize,\n      interpolate: interpolate,\n      shuffle: shuffle\n    },\n    install: _install,\n    effects: _effects,\n    ticker: _ticker,\n    updateRoot: Timeline.updateRoot,\n    plugins: _plugins,\n    globalTimeline: _globalTimeline,\n    core: {\n      PropTween: PropTween,\n      globals: _addGlobal,\n      Tween: Tween,\n      Timeline: Timeline,\n      Animation: Animation,\n      getCache: _getCache,\n      _removeLinkedListItem: _removeLinkedListItem,\n      suppressOverwrites: function suppressOverwrites(value) {\n        return _suppressOverwrites = value;\n      }\n    }\n  };\n\n  _forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n    return _gsap[name] = Tween[name];\n  });\n\n  _ticker.add(Timeline.updateRoot);\n\n  _quickTween = _gsap.to({}, {\n    duration: 0\n  });\n\n  var _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n    var pt = plugin._pt;\n\n    while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n      pt = pt._next;\n    }\n\n    return pt;\n  },\n      _addModifiers = function _addModifiers(tween, modifiers) {\n    var targets = tween._targets,\n        p,\n        i,\n        pt;\n\n    for (p in modifiers) {\n      i = targets.length;\n\n      while (i--) {\n        pt = tween._ptLookup[i][p];\n\n        if (pt && (pt = pt.d)) {\n          if (pt._pt) {\n            pt = _getPluginPropTween(pt, p);\n          }\n\n          pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n        }\n      }\n    }\n  },\n      _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n    return {\n      name: name,\n      rawVars: 1,\n      init: function init(target, vars, tween) {\n        tween._onInit = function (tween) {\n          var temp, p;\n\n          if (_isString(vars)) {\n            temp = {};\n\n            _forEachName(vars, function (name) {\n              return temp[name] = 1;\n            });\n\n            vars = temp;\n          }\n\n          if (modifier) {\n            temp = {};\n\n            for (p in vars) {\n              temp[p] = modifier(vars[p]);\n            }\n\n            vars = temp;\n          }\n\n          _addModifiers(tween, vars);\n        };\n      }\n    };\n  };\n\n  var gsap = _gsap.registerPlugin({\n    name: \"attr\",\n    init: function init(target, vars, tween, index, targets) {\n      var p, pt;\n\n      for (p in vars) {\n        pt = this.add(target, \"setAttribute\", (target.getAttribute(p) || 0) + \"\", vars[p], index, targets, 0, 0, p);\n        pt && (pt.op = p);\n\n        this._props.push(p);\n      }\n    }\n  }, {\n    name: \"endArray\",\n    init: function init(target, value) {\n      var i = value.length;\n\n      while (i--) {\n        this.add(target, i, target[i] || 0, value[i]);\n      }\n    }\n  }, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap;\n  Tween.version = Timeline.version = gsap.version = \"3.9.1\";\n  _coreReady = 1;\n  _windowExists() && _wake();\n  var Power0 = _easeMap.Power0,\n      Power1 = _easeMap.Power1,\n      Power2 = _easeMap.Power2,\n      Power3 = _easeMap.Power3,\n      Power4 = _easeMap.Power4,\n      Linear = _easeMap.Linear,\n      Quad = _easeMap.Quad,\n      Cubic = _easeMap.Cubic,\n      Quart = _easeMap.Quart,\n      Quint = _easeMap.Quint,\n      Strong = _easeMap.Strong,\n      Elastic = _easeMap.Elastic,\n      Back = _easeMap.Back,\n      SteppedEase = _easeMap.SteppedEase,\n      Bounce = _easeMap.Bounce,\n      Sine = _easeMap.Sine,\n      Expo = _easeMap.Expo,\n      Circ = _easeMap.Circ;\n\n  var _win$1,\n      _doc$1,\n      _docElement,\n      _pluginInitted,\n      _tempDiv,\n      _tempDivStyler,\n      _recentSetterPlugin,\n      _windowExists$1 = function _windowExists() {\n    return typeof window !== \"undefined\";\n  },\n      _transformProps = {},\n      _RAD2DEG = 180 / Math.PI,\n      _DEG2RAD = Math.PI / 180,\n      _atan2 = Math.atan2,\n      _bigNum$1 = 1e8,\n      _capsExp = /([A-Z])/g,\n      _horizontalExp = /(?:left|right|width|margin|padding|x)/i,\n      _complexExp = /[\\s,\\(]\\S/,\n      _propertyAliases = {\n    autoAlpha: \"opacity,visibility\",\n    scale: \"scaleX,scaleY\",\n    alpha: \"opacity\"\n  },\n      _renderCSSProp = function _renderCSSProp(ratio, data) {\n    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n  },\n      _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n    return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n  },\n      _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n    return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n  },\n      _renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n    var value = data.s + data.c * ratio;\n    data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n  },\n      _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n    return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n  },\n      _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n    return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n  },\n      _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n    return target.style[property] = value;\n  },\n      _setterCSSProp = function _setterCSSProp(target, property, value) {\n    return target.style.setProperty(property, value);\n  },\n      _setterTransform = function _setterTransform(target, property, value) {\n    return target._gsap[property] = value;\n  },\n      _setterScale = function _setterScale(target, property, value) {\n    return target._gsap.scaleX = target._gsap.scaleY = value;\n  },\n      _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n    var cache = target._gsap;\n    cache.scaleX = cache.scaleY = value;\n    cache.renderTransform(ratio, cache);\n  },\n      _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n    var cache = target._gsap;\n    cache[property] = value;\n    cache.renderTransform(ratio, cache);\n  },\n      _transformProp = \"transform\",\n      _transformOriginProp = _transformProp + \"Origin\",\n      _supports3D,\n      _createElement = function _createElement(type, ns) {\n    var e = _doc$1.createElementNS ? _doc$1.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc$1.createElement(type);\n    return e.style ? e : _doc$1.createElement(type);\n  },\n      _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n    var cs = getComputedStyle(target);\n    return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\";\n  },\n      _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n      _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n    var e = element || _tempDiv,\n        s = e.style,\n        i = 5;\n\n    if (property in s && !preferPrefix) {\n      return property;\n    }\n\n    property = property.charAt(0).toUpperCase() + property.substr(1);\n\n    while (i-- && !(_prefixes[i] + property in s)) {}\n\n    return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n  },\n      _initCore = function _initCore() {\n    if (_windowExists$1() && window.document) {\n      _win$1 = window;\n      _doc$1 = _win$1.document;\n      _docElement = _doc$1.documentElement;\n      _tempDiv = _createElement(\"div\") || {\n        style: {}\n      };\n      _tempDivStyler = _createElement(\"div\");\n      _transformProp = _checkPropPrefix(_transformProp);\n      _transformOriginProp = _transformProp + \"Origin\";\n      _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\";\n      _supports3D = !!_checkPropPrefix(\"perspective\");\n      _pluginInitted = 1;\n    }\n  },\n      _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n    var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n        oldParent = this.parentNode,\n        oldSibling = this.nextSibling,\n        oldCSS = this.style.cssText,\n        bbox;\n\n    _docElement.appendChild(svg);\n\n    svg.appendChild(this);\n    this.style.display = \"block\";\n\n    if (swapIfPossible) {\n      try {\n        bbox = this.getBBox();\n        this._gsapBBox = this.getBBox;\n        this.getBBox = _getBBoxHack;\n      } catch (e) {}\n    } else if (this._gsapBBox) {\n      bbox = this._gsapBBox();\n    }\n\n    if (oldParent) {\n      if (oldSibling) {\n        oldParent.insertBefore(this, oldSibling);\n      } else {\n        oldParent.appendChild(this);\n      }\n    }\n\n    _docElement.removeChild(svg);\n\n    this.style.cssText = oldCSS;\n    return bbox;\n  },\n      _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n    var i = attributesArray.length;\n\n    while (i--) {\n      if (target.hasAttribute(attributesArray[i])) {\n        return target.getAttribute(attributesArray[i]);\n      }\n    }\n  },\n      _getBBox = function _getBBox(target) {\n    var bounds;\n\n    try {\n      bounds = target.getBBox();\n    } catch (error) {\n      bounds = _getBBoxHack.call(target, true);\n    }\n\n    bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));\n    return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n      x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n      y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n      width: 0,\n      height: 0\n    } : bounds;\n  },\n      _isSVG = function _isSVG(e) {\n    return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n  },\n      _removeProperty = function _removeProperty(target, property) {\n    if (property) {\n      var style = target.style;\n\n      if (property in _transformProps && property !== _transformOriginProp) {\n        property = _transformProp;\n      }\n\n      if (style.removeProperty) {\n        if (property.substr(0, 2) === \"ms\" || property.substr(0, 6) === \"webkit\") {\n          property = \"-\" + property;\n        }\n\n        style.removeProperty(property.replace(_capsExp, \"-$1\").toLowerCase());\n      } else {\n        style.removeAttribute(property);\n      }\n    }\n  },\n      _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n    var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n    plugin._pt = pt;\n    pt.b = beginning;\n    pt.e = end;\n\n    plugin._props.push(property);\n\n    return pt;\n  },\n      _nonConvertibleUnits = {\n    deg: 1,\n    rad: 1,\n    turn: 1\n  },\n      _convertToUnit = function _convertToUnit(target, property, value, unit) {\n    var curValue = parseFloat(value) || 0,\n        curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n        style = _tempDiv.style,\n        horizontal = _horizontalExp.test(property),\n        isRootSVG = target.tagName.toLowerCase() === \"svg\",\n        measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n        amount = 100,\n        toPixels = unit === \"px\",\n        toPercent = unit === \"%\",\n        px,\n        parent,\n        cache,\n        isSVG;\n\n    if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n      return curValue;\n    }\n\n    curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n    isSVG = target.getCTM && _isSVG(target);\n\n    if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n      px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n      return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n    }\n\n    style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n    parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n    if (isSVG) {\n      parent = (target.ownerSVGElement || {}).parentNode;\n    }\n\n    if (!parent || parent === _doc$1 || !parent.appendChild) {\n      parent = _doc$1.body;\n    }\n\n    cache = parent._gsap;\n\n    if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {\n      return _round(curValue / cache.width * amount);\n    } else {\n      (toPercent || curUnit === \"%\") && (style.position = _getComputedProperty(target, \"position\"));\n      parent === target && (style.position = \"static\");\n      parent.appendChild(_tempDiv);\n      px = _tempDiv[measureProperty];\n      parent.removeChild(_tempDiv);\n      style.position = \"absolute\";\n\n      if (horizontal && toPercent) {\n        cache = _getCache(parent);\n        cache.time = _ticker.time;\n        cache.width = parent[measureProperty];\n      }\n    }\n\n    return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n  },\n      _get = function _get(target, property, unit, uncache) {\n    var value;\n    _pluginInitted || _initCore();\n\n    if (property in _propertyAliases && property !== \"transform\") {\n      property = _propertyAliases[property];\n\n      if (~property.indexOf(\",\")) {\n        property = property.split(\",\")[0];\n      }\n    }\n\n    if (_transformProps[property] && property !== \"transform\") {\n      value = _parseTransform(target, uncache);\n      value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n    } else {\n      value = target.style[property];\n\n      if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n        value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0);\n      }\n    }\n\n    return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n  },\n      _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n    if (!start || start === \"none\") {\n      var p = _checkPropPrefix(prop, target, 1),\n          s = p && _getComputedProperty(target, p, 1);\n\n      if (s && s !== start) {\n        prop = p;\n        start = s;\n      } else if (prop === \"borderColor\") {\n        start = _getComputedProperty(target, \"borderTopColor\");\n      }\n    }\n\n    var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n        index = 0,\n        matchIndex = 0,\n        a,\n        result,\n        startValues,\n        startNum,\n        color,\n        startValue,\n        endValue,\n        endNum,\n        chunk,\n        endUnit,\n        startUnit,\n        relative,\n        endValues;\n    pt.b = start;\n    pt.e = end;\n    start += \"\";\n    end += \"\";\n\n    if (end === \"auto\") {\n      target.style[prop] = end;\n      end = _getComputedProperty(target, prop) || end;\n      target.style[prop] = start;\n    }\n\n    a = [start, end];\n\n    _colorStringFilter(a);\n\n    start = a[0];\n    end = a[1];\n    startValues = start.match(_numWithUnitExp) || [];\n    endValues = end.match(_numWithUnitExp) || [];\n\n    if (endValues.length) {\n      while (result = _numWithUnitExp.exec(end)) {\n        endValue = result[0];\n        chunk = end.substring(index, result.index);\n\n        if (color) {\n          color = (color + 1) % 5;\n        } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n          color = 1;\n        }\n\n        if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n          startNum = parseFloat(startValue) || 0;\n          startUnit = startValue.substr((startNum + \"\").length);\n          relative = endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n\n          if (relative) {\n            endValue = endValue.substr(2);\n          }\n\n          endNum = parseFloat(endValue);\n          endUnit = endValue.substr((endNum + \"\").length);\n          index = _numWithUnitExp.lastIndex - endUnit.length;\n\n          if (!endUnit) {\n            endUnit = endUnit || _config.units[prop] || startUnit;\n\n            if (index === end.length) {\n              end += endUnit;\n              pt.e += endUnit;\n            }\n          }\n\n          if (startUnit !== endUnit) {\n            startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n          }\n\n          pt._pt = {\n            _next: pt._pt,\n            p: chunk || matchIndex === 1 ? chunk : \",\",\n            s: startNum,\n            c: relative ? relative * endNum : endNum - startNum,\n            m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n          };\n        }\n      }\n\n      pt.c = index < end.length ? end.substring(index, end.length) : \"\";\n    } else {\n      pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n    }\n\n    _relExp.test(end) && (pt.e = 0);\n    this._pt = pt;\n    return pt;\n  },\n      _keywordToPercent = {\n    top: \"0%\",\n    bottom: \"100%\",\n    left: \"0%\",\n    right: \"100%\",\n    center: \"50%\"\n  },\n      _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n    var split = value.split(\" \"),\n        x = split[0],\n        y = split[1] || \"50%\";\n\n    if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n      value = x;\n      x = y;\n      y = value;\n    }\n\n    split[0] = _keywordToPercent[x] || x;\n    split[1] = _keywordToPercent[y] || y;\n    return split.join(\" \");\n  },\n      _renderClearProps = function _renderClearProps(ratio, data) {\n    if (data.tween && data.tween._time === data.tween._dur) {\n      var target = data.t,\n          style = target.style,\n          props = data.u,\n          cache = target._gsap,\n          prop,\n          clearTransforms,\n          i;\n\n      if (props === \"all\" || props === true) {\n        style.cssText = \"\";\n        clearTransforms = 1;\n      } else {\n        props = props.split(\",\");\n        i = props.length;\n\n        while (--i > -1) {\n          prop = props[i];\n\n          if (_transformProps[prop]) {\n            clearTransforms = 1;\n            prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n          }\n\n          _removeProperty(target, prop);\n        }\n      }\n\n      if (clearTransforms) {\n        _removeProperty(target, _transformProp);\n\n        if (cache) {\n          cache.svg && target.removeAttribute(\"transform\");\n\n          _parseTransform(target, 1);\n\n          cache.uncache = 1;\n        }\n      }\n    }\n  },\n      _specialProps = {\n    clearProps: function clearProps(plugin, target, property, endValue, tween) {\n      if (tween.data !== \"isFromStart\") {\n        var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n        pt.u = endValue;\n        pt.pr = -10;\n        pt.tween = tween;\n\n        plugin._props.push(property);\n\n        return 1;\n      }\n    }\n  },\n      _identity2DMatrix = [1, 0, 0, 1, 0, 0],\n      _rotationalProperties = {},\n      _isNullTransform = function _isNullTransform(value) {\n    return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n  },\n      _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n    var matrixString = _getComputedProperty(target, _transformProp);\n\n    return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n  },\n      _getMatrix = function _getMatrix(target, force2D) {\n    var cache = target._gsap || _getCache(target),\n        style = target.style,\n        matrix = _getComputedTransformMatrixAsArray(target),\n        parent,\n        nextSibling,\n        temp,\n        addedToDOM;\n\n    if (cache.svg && target.getAttribute(\"transform\")) {\n      temp = target.transform.baseVal.consolidate().matrix;\n      matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n      return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n    } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n      temp = style.display;\n      style.display = \"block\";\n      parent = target.parentNode;\n\n      if (!parent || !target.offsetParent) {\n        addedToDOM = 1;\n        nextSibling = target.nextSibling;\n\n        _docElement.appendChild(target);\n      }\n\n      matrix = _getComputedTransformMatrixAsArray(target);\n      temp ? style.display = temp : _removeProperty(target, \"display\");\n\n      if (addedToDOM) {\n        nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n      }\n    }\n\n    return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n  },\n      _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n    var cache = target._gsap,\n        matrix = matrixArray || _getMatrix(target, true),\n        xOriginOld = cache.xOrigin || 0,\n        yOriginOld = cache.yOrigin || 0,\n        xOffsetOld = cache.xOffset || 0,\n        yOffsetOld = cache.yOffset || 0,\n        a = matrix[0],\n        b = matrix[1],\n        c = matrix[2],\n        d = matrix[3],\n        tx = matrix[4],\n        ty = matrix[5],\n        originSplit = origin.split(\" \"),\n        xOrigin = parseFloat(originSplit[0]) || 0,\n        yOrigin = parseFloat(originSplit[1]) || 0,\n        bounds,\n        determinant,\n        x,\n        y;\n\n    if (!originIsAbsolute) {\n      bounds = _getBBox(target);\n      xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n      yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin);\n    } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n      x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n      y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n      xOrigin = x;\n      yOrigin = y;\n    }\n\n    if (smooth || smooth !== false && cache.smooth) {\n      tx = xOrigin - xOriginOld;\n      ty = yOrigin - yOriginOld;\n      cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n      cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n    } else {\n      cache.xOffset = cache.yOffset = 0;\n    }\n\n    cache.xOrigin = xOrigin;\n    cache.yOrigin = yOrigin;\n    cache.smooth = !!smooth;\n    cache.origin = origin;\n    cache.originIsAbsolute = !!originIsAbsolute;\n    target.style[_transformOriginProp] = \"0px 0px\";\n\n    if (pluginToAddPropTweensTo) {\n      _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n      _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n      _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n      _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n    }\n\n    target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n  },\n      _parseTransform = function _parseTransform(target, uncache) {\n    var cache = target._gsap || new GSCache(target);\n\n    if (\"x\" in cache && !uncache && !cache.uncache) {\n      return cache;\n    }\n\n    var style = target.style,\n        invertedScaleX = cache.scaleX < 0,\n        px = \"px\",\n        deg = \"deg\",\n        origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n        x,\n        y,\n        z,\n        scaleX,\n        scaleY,\n        rotation,\n        rotationX,\n        rotationY,\n        skewX,\n        skewY,\n        perspective,\n        xOrigin,\n        yOrigin,\n        matrix,\n        angle,\n        cos,\n        sin,\n        a,\n        b,\n        c,\n        d,\n        a12,\n        a22,\n        t1,\n        t2,\n        t3,\n        a13,\n        a23,\n        a33,\n        a42,\n        a43,\n        a32;\n    x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n    scaleX = scaleY = 1;\n    cache.svg = !!(target.getCTM && _isSVG(target));\n    matrix = _getMatrix(target, cache.svg);\n\n    if (cache.svg) {\n      t1 = (!cache.uncache || origin === \"0px 0px\") && !uncache && target.getAttribute(\"data-svg-origin\");\n\n      _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n    }\n\n    xOrigin = cache.xOrigin || 0;\n    yOrigin = cache.yOrigin || 0;\n\n    if (matrix !== _identity2DMatrix) {\n      a = matrix[0];\n      b = matrix[1];\n      c = matrix[2];\n      d = matrix[3];\n      x = a12 = matrix[4];\n      y = a22 = matrix[5];\n\n      if (matrix.length === 6) {\n        scaleX = Math.sqrt(a * a + b * b);\n        scaleY = Math.sqrt(d * d + c * c);\n        rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0;\n        skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n        skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n        if (cache.svg) {\n          x -= xOrigin - (xOrigin * a + yOrigin * c);\n          y -= yOrigin - (xOrigin * b + yOrigin * d);\n        }\n      } else {\n        a32 = matrix[6];\n        a42 = matrix[7];\n        a13 = matrix[8];\n        a23 = matrix[9];\n        a33 = matrix[10];\n        a43 = matrix[11];\n        x = matrix[12];\n        y = matrix[13];\n        z = matrix[14];\n        angle = _atan2(a32, a33);\n        rotationX = angle * _RAD2DEG;\n\n        if (angle) {\n          cos = Math.cos(-angle);\n          sin = Math.sin(-angle);\n          t1 = a12 * cos + a13 * sin;\n          t2 = a22 * cos + a23 * sin;\n          t3 = a32 * cos + a33 * sin;\n          a13 = a12 * -sin + a13 * cos;\n          a23 = a22 * -sin + a23 * cos;\n          a33 = a32 * -sin + a33 * cos;\n          a43 = a42 * -sin + a43 * cos;\n          a12 = t1;\n          a22 = t2;\n          a32 = t3;\n        }\n\n        angle = _atan2(-c, a33);\n        rotationY = angle * _RAD2DEG;\n\n        if (angle) {\n          cos = Math.cos(-angle);\n          sin = Math.sin(-angle);\n          t1 = a * cos - a13 * sin;\n          t2 = b * cos - a23 * sin;\n          t3 = c * cos - a33 * sin;\n          a43 = d * sin + a43 * cos;\n          a = t1;\n          b = t2;\n          c = t3;\n        }\n\n        angle = _atan2(b, a);\n        rotation = angle * _RAD2DEG;\n\n        if (angle) {\n          cos = Math.cos(angle);\n          sin = Math.sin(angle);\n          t1 = a * cos + b * sin;\n          t2 = a12 * cos + a22 * sin;\n          b = b * cos - a * sin;\n          a22 = a22 * cos - a12 * sin;\n          a = t1;\n          a12 = t2;\n        }\n\n        if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n          rotationX = rotation = 0;\n          rotationY = 180 - rotationY;\n        }\n\n        scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n        scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n        angle = _atan2(a12, a22);\n        skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n        perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n      }\n\n      if (cache.svg) {\n        t1 = target.getAttribute(\"transform\");\n        cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n        t1 && target.setAttribute(\"transform\", t1);\n      }\n    }\n\n    if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n      if (invertedScaleX) {\n        scaleX *= -1;\n        skewX += rotation <= 0 ? 180 : -180;\n        rotation += rotation <= 0 ? 180 : -180;\n      } else {\n        scaleY *= -1;\n        skewX += skewX <= 0 ? 180 : -180;\n      }\n    }\n\n    cache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n    cache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n    cache.z = z + px;\n    cache.scaleX = _round(scaleX);\n    cache.scaleY = _round(scaleY);\n    cache.rotation = _round(rotation) + deg;\n    cache.rotationX = _round(rotationX) + deg;\n    cache.rotationY = _round(rotationY) + deg;\n    cache.skewX = skewX + deg;\n    cache.skewY = skewY + deg;\n    cache.transformPerspective = perspective + px;\n\n    if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || 0) {\n      style[_transformOriginProp] = _firstTwoOnly(origin);\n    }\n\n    cache.xOffset = cache.yOffset = 0;\n    cache.force3D = _config.force3D;\n    cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n    cache.uncache = 0;\n    return cache;\n  },\n      _firstTwoOnly = function _firstTwoOnly(value) {\n    return (value = value.split(\" \"))[0] + \" \" + value[1];\n  },\n      _addPxTranslate = function _addPxTranslate(target, start, value) {\n    var unit = getUnit(start);\n    return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n  },\n      _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n    cache.z = \"0px\";\n    cache.rotationY = cache.rotationX = \"0deg\";\n    cache.force3D = 0;\n\n    _renderCSSTransforms(ratio, cache);\n  },\n      _zeroDeg = \"0deg\",\n      _zeroPx = \"0px\",\n      _endParenthesis = \") \",\n      _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n    var _ref = cache || this,\n        xPercent = _ref.xPercent,\n        yPercent = _ref.yPercent,\n        x = _ref.x,\n        y = _ref.y,\n        z = _ref.z,\n        rotation = _ref.rotation,\n        rotationY = _ref.rotationY,\n        rotationX = _ref.rotationX,\n        skewX = _ref.skewX,\n        skewY = _ref.skewY,\n        scaleX = _ref.scaleX,\n        scaleY = _ref.scaleY,\n        transformPerspective = _ref.transformPerspective,\n        force3D = _ref.force3D,\n        target = _ref.target,\n        zOrigin = _ref.zOrigin,\n        transforms = \"\",\n        use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true;\n\n    if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n      var angle = parseFloat(rotationY) * _DEG2RAD,\n          a13 = Math.sin(angle),\n          a33 = Math.cos(angle),\n          cos;\n\n      angle = parseFloat(rotationX) * _DEG2RAD;\n      cos = Math.cos(angle);\n      x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n      y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n      z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n    }\n\n    if (transformPerspective !== _zeroPx) {\n      transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n    }\n\n    if (xPercent || yPercent) {\n      transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n    }\n\n    if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n      transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n    }\n\n    if (rotation !== _zeroDeg) {\n      transforms += \"rotate(\" + rotation + _endParenthesis;\n    }\n\n    if (rotationY !== _zeroDeg) {\n      transforms += \"rotateY(\" + rotationY + _endParenthesis;\n    }\n\n    if (rotationX !== _zeroDeg) {\n      transforms += \"rotateX(\" + rotationX + _endParenthesis;\n    }\n\n    if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n      transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n    }\n\n    if (scaleX !== 1 || scaleY !== 1) {\n      transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n    }\n\n    target.style[_transformProp] = transforms || \"translate(0, 0)\";\n  },\n      _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n    var _ref2 = cache || this,\n        xPercent = _ref2.xPercent,\n        yPercent = _ref2.yPercent,\n        x = _ref2.x,\n        y = _ref2.y,\n        rotation = _ref2.rotation,\n        skewX = _ref2.skewX,\n        skewY = _ref2.skewY,\n        scaleX = _ref2.scaleX,\n        scaleY = _ref2.scaleY,\n        target = _ref2.target,\n        xOrigin = _ref2.xOrigin,\n        yOrigin = _ref2.yOrigin,\n        xOffset = _ref2.xOffset,\n        yOffset = _ref2.yOffset,\n        forceCSS = _ref2.forceCSS,\n        tx = parseFloat(x),\n        ty = parseFloat(y),\n        a11,\n        a21,\n        a12,\n        a22,\n        temp;\n\n    rotation = parseFloat(rotation);\n    skewX = parseFloat(skewX);\n    skewY = parseFloat(skewY);\n\n    if (skewY) {\n      skewY = parseFloat(skewY);\n      skewX += skewY;\n      rotation += skewY;\n    }\n\n    if (rotation || skewX) {\n      rotation *= _DEG2RAD;\n      skewX *= _DEG2RAD;\n      a11 = Math.cos(rotation) * scaleX;\n      a21 = Math.sin(rotation) * scaleX;\n      a12 = Math.sin(rotation - skewX) * -scaleY;\n      a22 = Math.cos(rotation - skewX) * scaleY;\n\n      if (skewX) {\n        skewY *= _DEG2RAD;\n        temp = Math.tan(skewX - skewY);\n        temp = Math.sqrt(1 + temp * temp);\n        a12 *= temp;\n        a22 *= temp;\n\n        if (skewY) {\n          temp = Math.tan(skewY);\n          temp = Math.sqrt(1 + temp * temp);\n          a11 *= temp;\n          a21 *= temp;\n        }\n      }\n\n      a11 = _round(a11);\n      a21 = _round(a21);\n      a12 = _round(a12);\n      a22 = _round(a22);\n    } else {\n      a11 = scaleX;\n      a22 = scaleY;\n      a21 = a12 = 0;\n    }\n\n    if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n      tx = _convertToUnit(target, \"x\", x, \"px\");\n      ty = _convertToUnit(target, \"y\", y, \"px\");\n    }\n\n    if (xOrigin || yOrigin || xOffset || yOffset) {\n      tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n      ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n    }\n\n    if (xPercent || yPercent) {\n      temp = target.getBBox();\n      tx = _round(tx + xPercent / 100 * temp.width);\n      ty = _round(ty + yPercent / 100 * temp.height);\n    }\n\n    temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n    target.setAttribute(\"transform\", temp);\n    forceCSS && (target.style[_transformProp] = temp);\n  },\n      _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {\n    var cap = 360,\n        isString = _isString(endValue),\n        endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n        change = relative ? endNum * relative : endNum - startNum,\n        finalValue = startNum + change + \"deg\",\n        direction,\n        pt;\n\n    if (isString) {\n      direction = endValue.split(\"_\")[1];\n\n      if (direction === \"short\") {\n        change %= cap;\n\n        if (change !== change % (cap / 2)) {\n          change += change < 0 ? cap : -cap;\n        }\n      }\n\n      if (direction === \"cw\" && change < 0) {\n        change = (change + cap * _bigNum$1) % cap - ~~(change / cap) * cap;\n      } else if (direction === \"ccw\" && change > 0) {\n        change = (change - cap * _bigNum$1) % cap - ~~(change / cap) * cap;\n      }\n    }\n\n    plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n    pt.e = finalValue;\n    pt.u = \"deg\";\n\n    plugin._props.push(property);\n\n    return pt;\n  },\n      _assign = function _assign(target, source) {\n    for (var p in source) {\n      target[p] = source[p];\n    }\n\n    return target;\n  },\n      _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n    var startCache = _assign({}, target._gsap),\n        exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n        style = target.style,\n        endCache,\n        p,\n        startValue,\n        endValue,\n        startNum,\n        endNum,\n        startUnit,\n        endUnit;\n\n    if (startCache.svg) {\n      startValue = target.getAttribute(\"transform\");\n      target.setAttribute(\"transform\", \"\");\n      style[_transformProp] = transforms;\n      endCache = _parseTransform(target, 1);\n\n      _removeProperty(target, _transformProp);\n\n      target.setAttribute(\"transform\", startValue);\n    } else {\n      startValue = getComputedStyle(target)[_transformProp];\n      style[_transformProp] = transforms;\n      endCache = _parseTransform(target, 1);\n      style[_transformProp] = startValue;\n    }\n\n    for (p in _transformProps) {\n      startValue = startCache[p];\n      endValue = endCache[p];\n\n      if (startValue !== endValue && exclude.indexOf(p) < 0) {\n        startUnit = getUnit(startValue);\n        endUnit = getUnit(endValue);\n        startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n        endNum = parseFloat(endValue);\n        plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n        plugin._pt.u = endUnit || 0;\n\n        plugin._props.push(p);\n      }\n    }\n\n    _assign(endCache, startCache);\n  };\n\n  _forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n    var t = \"Top\",\n        r = \"Right\",\n        b = \"Bottom\",\n        l = \"Left\",\n        props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n      return index < 2 ? name + side : \"border\" + side + name;\n    });\n\n    _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n      var a, vars;\n\n      if (arguments.length < 4) {\n        a = props.map(function (prop) {\n          return _get(plugin, prop, property);\n        });\n        vars = a.join(\" \");\n        return vars.split(a[0]).length === 5 ? a[0] : vars;\n      }\n\n      a = (endValue + \"\").split(\" \");\n      vars = {};\n      props.forEach(function (prop, i) {\n        return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n      });\n      plugin.init(target, vars, tween);\n    };\n  });\n\n  var CSSPlugin = {\n    name: \"css\",\n    register: _initCore,\n    targetTest: function targetTest(target) {\n      return target.style && target.nodeType;\n    },\n    init: function init(target, vars, tween, index, targets) {\n      var props = this._props,\n          style = target.style,\n          startAt = tween.vars.startAt,\n          startValue,\n          endValue,\n          endNum,\n          startNum,\n          type,\n          specialProp,\n          p,\n          startUnit,\n          endUnit,\n          relative,\n          isTransformRelated,\n          transformPropTween,\n          cache,\n          smooth,\n          hasPriority;\n      _pluginInitted || _initCore();\n\n      for (p in vars) {\n        if (p === \"autoRound\") {\n          continue;\n        }\n\n        endValue = vars[p];\n\n        if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n          continue;\n        }\n\n        type = typeof endValue;\n        specialProp = _specialProps[p];\n\n        if (type === \"function\") {\n          endValue = endValue.call(tween, index, target, targets);\n          type = typeof endValue;\n        }\n\n        if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n          endValue = _replaceRandom(endValue);\n        }\n\n        if (specialProp) {\n          specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n        } else if (p.substr(0, 2) === \"--\") {\n          startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n          endValue += \"\";\n          _colorExp.lastIndex = 0;\n\n          if (!_colorExp.test(startValue)) {\n            startUnit = getUnit(startValue);\n            endUnit = getUnit(endValue);\n          }\n\n          endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n          this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n          props.push(p);\n        } else if (type !== \"undefined\") {\n          if (startAt && p in startAt) {\n            startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n            _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n            getUnit(startValue + \"\") || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\");\n            (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p));\n          } else {\n            startValue = _get(target, p);\n          }\n\n          startNum = parseFloat(startValue);\n          relative = type === \"string\" && endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n          relative && (endValue = endValue.substr(2));\n          endNum = parseFloat(endValue);\n\n          if (p in _propertyAliases) {\n            if (p === \"autoAlpha\") {\n              if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n                startNum = 0;\n              }\n\n              _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n            }\n\n            if (p !== \"scale\" && p !== \"transform\") {\n              p = _propertyAliases[p];\n              ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n            }\n          }\n\n          isTransformRelated = p in _transformProps;\n\n          if (isTransformRelated) {\n            if (!transformPropTween) {\n              cache = target._gsap;\n              cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform);\n              smooth = vars.smoothOrigin !== false && cache.smooth;\n              transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1);\n              transformPropTween.dep = 1;\n            }\n\n            if (p === \"scale\") {\n              this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? relative * endNum : endNum - cache.scaleY) || 0);\n              props.push(\"scaleY\", p);\n              p += \"X\";\n            } else if (p === \"transformOrigin\") {\n              endValue = _convertKeywordsToPercentages(endValue);\n\n              if (cache.svg) {\n                _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n              } else {\n                endUnit = parseFloat(endValue.split(\" \")[2]) || 0;\n                endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n                _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n              }\n\n              continue;\n            } else if (p === \"svgOrigin\") {\n              _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n              continue;\n            } else if (p in _rotationalProperties) {\n              _addRotationalPropTween(this, cache, p, startNum, endValue, relative);\n\n              continue;\n            } else if (p === \"smoothOrigin\") {\n              _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n              continue;\n            } else if (p === \"force3D\") {\n              cache[p] = endValue;\n              continue;\n            } else if (p === \"transform\") {\n              _addRawTransformPTs(this, endValue, target);\n\n              continue;\n            }\n          } else if (!(p in style)) {\n            p = _checkPropPrefix(p) || p;\n          }\n\n          if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n            startUnit = (startValue + \"\").substr((startNum + \"\").length);\n            endNum || (endNum = 0);\n            endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n            startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n            this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n            this._pt.u = endUnit || 0;\n\n            if (startUnit !== endUnit && endUnit !== \"%\") {\n              this._pt.b = startValue;\n              this._pt.r = _renderCSSPropWithBeginning;\n            }\n          } else if (!(p in style)) {\n            if (p in target) {\n              this.add(target, p, startValue || target[p], endValue, index, targets);\n            } else {\n              _missingPlugin(p, endValue);\n\n              continue;\n            }\n          } else {\n            _tweenComplexCSSString.call(this, target, p, startValue, endValue);\n          }\n\n          props.push(p);\n        }\n      }\n\n      hasPriority && _sortPropTweensByPriority(this);\n    },\n    get: _get,\n    aliases: _propertyAliases,\n    getSetter: function getSetter(target, property, plugin) {\n      var p = _propertyAliases[property];\n      p && p.indexOf(\",\") < 0 && (property = p);\n      return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n    },\n    core: {\n      _removeProperty: _removeProperty,\n      _getMatrix: _getMatrix\n    }\n  };\n  gsap.utils.checkPrefix = _checkPropPrefix;\n\n  (function (positionAndScale, rotation, others, aliases) {\n    var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n      _transformProps[name] = 1;\n    });\n\n    _forEachName(rotation, function (name) {\n      _config.units[name] = \"deg\";\n      _rotationalProperties[name] = 1;\n    });\n\n    _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n    _forEachName(aliases, function (name) {\n      var split = name.split(\":\");\n      _propertyAliases[split[1]] = all[split[0]];\n    });\n  })(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n  _forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n    _config.units[name] = \"px\";\n  });\n\n  gsap.registerPlugin(CSSPlugin);\n\n  var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n      TweenMaxWithCSS = gsapWithCSS.core.Tween;\n\n  exports.Back = Back;\n  exports.Bounce = Bounce;\n  exports.CSSPlugin = CSSPlugin;\n  exports.Circ = Circ;\n  exports.Cubic = Cubic;\n  exports.Elastic = Elastic;\n  exports.Expo = Expo;\n  exports.Linear = Linear;\n  exports.Power0 = Power0;\n  exports.Power1 = Power1;\n  exports.Power2 = Power2;\n  exports.Power3 = Power3;\n  exports.Power4 = Power4;\n  exports.Quad = Quad;\n  exports.Quart = Quart;\n  exports.Quint = Quint;\n  exports.Sine = Sine;\n  exports.SteppedEase = SteppedEase;\n  exports.Strong = Strong;\n  exports.TimelineLite = Timeline;\n  exports.TimelineMax = Timeline;\n  exports.TweenLite = Tween;\n  exports.TweenMax = TweenMaxWithCSS;\n  exports.default = gsapWithCSS;\n  exports.gsap = gsapWithCSS;\n\n  if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;}\n\n})));\n","/*!\n * houdinijs v11.0.4\n * A simple collapse-and-expand script\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/houdini\n */\n\n(function (root, factory) {\n\tif ( typeof define === 'function' && define.amd ) {\n\t\tdefine([], (function () {\n\t\t\treturn factory(root);\n\t\t}));\n\t} else if ( typeof exports === 'object' ) {\n\t\tmodule.exports = factory(root);\n\t} else {\n\t\troot.Houdini = factory(root);\n\t}\n})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {\n\n\t'use strict';\n\n\t//\n\t// Variables\n\t//\n\n\tvar defaults = {\n\n\t\t// Content\n\t\tcontentClass: 'houdini',\n\t\texpanded: false,\n\t\texpandedClass: 'is-expanded',\n\n\t\t// Toggle Buttons\n\t\tbtnAfter: false,\n\t\tbtnClass: 'houdini-toggle',\n\t\tbtnAttribute: 'data-houdini-toggle',\n\t\tbtnTextAttribute: 'data-houdini-button',\n\t\tbtnLabelAttribute: 'data-houdini-label',\n\t\tbtnPreexisting: 'data-houdini-button-preexisting',\n\n\t\t// Accordion\n\t\tisAccordion: false,\n\t\tcollapseOthers: false,\n\t\theadingClass: 'houdini-heading',\n\n\t\t// Icons\n\t\ticon: -1,\n\t\ticonClass: 'houdini-toggle-icon',\n\t\ticonAttribute: 'data-houdini-icon',\n\t\ticonShow: '+',\n\t\ticonHide: '&ndash;',\n\n\t\t// Custom Events\n\t\temitEvents: true\n\n\t};\n\n\n\t//\n\t// Methods\n\t//\n\n\t/**\n\t * Merge two or more objects together.\n\t * @param   {Object}   objects  The objects to merge together\n\t * @returns {Object}            Merged values of defaults and options\n\t */\n\tvar extend = function () {\n\t\tvar merged = {};\n\t\tArray.prototype.forEach.call(arguments, (function (obj) {\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (!obj.hasOwnProperty(key)) return;\n\t\t\t\tmerged[key] = obj[key];\n\t\t\t}\n\t\t}));\n\t\treturn merged;\n\t};\n\n\t/**\n\t * Emit a custom event\n\t * @param  {String} type     The event type\n\t * @param  {Object} settings The settings object\n\t * @param  {Node}   content  The content element\n\t * @param  {Node}   btn      The toggle button element\n\t */\n\tvar emitEvent = function (type, settings, details) {\n\t\tif (!settings.emitEvents || typeof window.CustomEvent !== 'function') return;\n\t\tvar event = new CustomEvent(type, {\n\t\t\tbubbles: true,\n\t\t\tdetail: details\n\t\t});\n\t\tif (details.content) {\n\t\t\tdetails.content.dispatchEvent(event);\n\t\t} else {\n\t\t\tdocument.dispatchEvent(event);\n\t\t}\n\t};\n\n\t/**\n\t * Add button to accordion headings\n\t * @param  {Node}   elem     The accordion content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar wrapInBtn = function (elem, settings) {\n\n\t\t// Variables\n\t\tvar heading = document.querySelector('[' + settings.btnAttribute + '=\"' + elem.id + '\"]');\n\t\tif (!heading) return;\n\t\tvar isExpanded = elem.classList.contains(settings.expandedClass);\n\n\t\t// Update heading attributes\n\t\theading.classList.add(settings.headingClass);\n\t\theading.removeAttribute(settings.btnAttribute);\n\n\t\t// Create the icon\n\t\tvar icon = '';\n\t\tif (settings.icon) {\n\t\t\ticon =\n\t\t\t\t'<span' +\n\t\t\t\t\t' class=\"' + settings.iconClass + '\"' +\n\t\t\t\t\t' ' + settings.iconAttribute +\n\t\t\t\t'>' +\n\t\t\t\t\t(isExpanded ? settings.iconHide : settings.iconShow) +\n\t\t\t\t'</span>';\n\t\t}\n\n\t\t// Wrap heading in a button\n\t\theading.innerHTML =\n\t\t\t'<button' +\n\t\t\t\t' class=\"' + settings.btnClass + '\"' +\n\t\t\t\t' ' + settings.btnAttribute + '=\"' + elem.id + '\"' +\n\t\t\t\t' aria-expanded=\"' + (isExpanded ? true : false) + '\"' +\n\t\t\t'>' +\n\t\t\t\theading.innerHTML +\n\t\t\t\ticon +\n\t\t\t'</button>';\n\n\t\treturn heading;\n\n\t};\n\n\t/**\n\t * Get a preexisting button for the content\n\t * @param  {Node}   elem     The disclosure content\n\t * @param  {Object} settings The settings object\n\t * @return {Node}            The preexisting button\n\t */\n\tvar getExistingBtn = function (elem, settings) {\n\t\tvar btn = document.querySelector('[' + settings.btnAttribute + '=\"' + elem.id + '\"]');\n\t\tif (!btn) return;\n\t\tbtn.removeAttribute('hidden');\n\t\tif (btn.tagName.toLowerCase() === 'a') {\n\t\t\tbtn.setAttribute('role', 'button');\n\t\t}\n\t\tbtn.setAttribute(settings.btnPreexisting, 'true');\n\t\treturn btn;\n\t};\n\n\t/**\n\t * Add a new toggle button to the DOM\n\t * @param  {Node}   elem     The disclosure content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar addNewBtn = function (elem, settings) {\n\n\t\t// Variables\n\t\tvar text = elem.getAttribute(settings.btnTextAttribute);\n\t\tvar isExpanded = elem.classList.contains(settings.expandedClass);\n\t\tvar label = elem.getAttribute(settings.btnLabelAttribute);\n\n\t\t// Create the button\n\t\tvar existingBtn = getExistingBtn(elem, settings);\n\t\tvar btn = existingBtn ? existingBtn : document.createElement('button');\n\n\t\t// Add button text\n\t\tif (!existingBtn) {\n\t\t\t// btn.textContent = text && text.length > 0 ? text : settings.btnText; // @todo\n\t\t\tif (!text || text.length < 1) return;\n\t\t\tbtn.textContent = text;\n\t\t}\n\n\t\t// Add selectors and labels\n\t\tbtn.setAttribute(settings.btnAttribute, elem.id);\n\t\tbtn.className += ' ' + settings.btnClass;\n\n\t\t// Add an icon\n\t\tvar icon = '';\n\t\tif (settings.icon) {\n\t\t\tbtn.innerHTML +=\n\t\t\t\t'<span' +\n\t\t\t\t\t' class=\"' + settings.iconClass + '\"' +\n\t\t\t\t\t' ' + settings.iconAttribute +\n\t\t\t\t'>' +\n\t\t\t\t\t(isExpanded ? settings.iconHide : settings.iconShow) +\n\t\t\t\t'</span>';\n\t\t}\n\n\t\t// Add a11y attributes\n\t\tbtn.setAttribute('aria-expanded', isExpanded);\n\t\tif (label) {\n\t\t\tbtn.setAttribute('aria-label', label);\n\t\t}\n\n\t\t// Inject into the DOM\n\t\tif (!existingBtn) {\n\t\t\telem.parentNode.insertBefore(btn, settings.btnAfter ? elem.nextSibling : elem);\n\t\t}\n\n\t\treturn btn;\n\n\t};\n\n\t/**\n\t * Create the disclosure button\n\t * @param  {Node}   elem     The disclosure content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar createBtn = function (elem, settings) {\n\t\tif (settings.isAccordion) {\n\t\t\treturn wrapInBtn(elem, settings);\n\t\t}\n\t\treturn addNewBtn(elem, settings);\n\t};\n\n\t/**\n\t * Remove button from accordion headings\n\t * @param  {Node}   elem     The accordion content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar unwrapInBtn = function (elem, settings) {\n\n\t\t// Variables\n\t\tvar btn = document.querySelector('[' + settings.btnAttribute + '=\"' + elem.id + '\"]');\n\t\tif (!btn) return;\n\n\t\t// Update heading attributes\n\t\theading.classList.remove(settings.headingClass);\n\t\tbtn.parentNode.setAttribute(settings.btnAttribute, elem.id);\n\n\t\t// Unwrap heading in a button\n\t\tvar heading = btn.cloneNode(true);\n\t\tvar icon = heading.querySelector('[' + settings.iconAttribute + ']');\n\t\tif (icon) {\n\t\t\theading.removeChild(icon);\n\t\t}\n\t\tbtn.parentNode.innerHTML = heading.innerHTML;\n\n\t};\n\n\t/**\n\t * Remove toggle button from the DOM\n\t * @param  {Node}   elem     The disclosure content\n \t * @param  {Object} settings The settings object\n\t */\n\tvar removeNewBtn = function (elem, settings) {\n\t\tvar btn = document.querySelector('[' + settings.btnAttribute + '=\"' + elem.id + '\"]');\n\t\tif (!btn) return;\n\t\tif (btn.hasAttribute(settings.btnPreexisting)) {\n\t\t\tbtn.setAttribute('hidden', 'hidden');\n\t\t\treturn;\n\t\t}\n\t\tbtn.parentNode.removeChild(btn);\n\t};\n\n\t/**\n\t * Remove button elements\n\t * @param  {Node}   elem     The disclosure content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar removeBtn = function (elem, settings) {\n\t\tif (settings.isAccordion) {\n\t\t\tunwrapInBtn(elem, settings);\n\t\t} else {\n\t\t\tremoveNewBtn(elem, settings);\n\t\t}\n\t};\n\n\t/**\n\t * Collapse a toggle button\n\t * @param  {Node} btn        The button\n\t * @param  {Object} settings The settings object\n\t */\n\tvar collapseBtn = function (btn, settings) {\n\n\t\t// Update a11y attributes\n\t\tbtn.setAttribute('aria-expanded', 'false');\n\t\tbtn.removeAttribute('aria-controls');\n\n\t\t// Toggle icons\n\t\tvar icon = btn.querySelector('[' + settings.iconAttribute + ']');\n\t\tif (icon) {\n\t\t\ticon.innerHTML = settings.iconShow;\n\t\t}\n\n\t};\n\n\t/**\n\t * Collapse disclosure content\n\t * @param  {Node}   btn      The toggle button\n\t * @param  {Node}   target   The disclosure content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar collapseContent = function (btn, target, settings) {\n\n\t\t// Update button text\n\t\tcollapseBtn(btn, settings);\n\n\t\t// Collapse content\n\t\ttarget.classList.remove(settings.expandedClass);\n\n\t\t// Emit event\n\t\temitEvent('houdiniCollapse', settings, {\n\t\t\tbutton: btn,\n\t\t\tcontent: target\n\t\t});\n\n\t};\n\n\t/**\n\t * Collapse open accordion content in a group\n\t * @param  {Node}   btn      The toggle button\n\t * @param  {Node}   target   The disclosure content\n\t * @param  {String} selector The selector for this instantiation\n\t * @param  {Object} settings The settings object\n\t */\n\tvar collapseOthers = function (btn, target, selector, settings) {\n\n\t\t// Only run for accordions where others should be collapsed\n\t\tif (!settings.isAccordion || !settings.collapseOthers) return;\n\n\t\t// Close open content areas\n\t\tArray.prototype.forEach.call(document.querySelectorAll(selector + '.' + settings.expandedClass), (function (content) {\n\t\t\tvar btn = document.querySelector('[' + settings.btnAttribute + '=\"' + content.id + '\"]');\n\t\t\tcollapseContent(btn, content, settings);\n\t\t}));\n\n\t};\n\n\t/**\n\t * Expand a toggle button\n\t * @param  {Node} btn        The button\n\t * @param  {Object} settings The settings object\n\t */\n\tvar expandBtn = function (btn, target, settings) {\n\n\t\t// Update a11y attributes\n\t\tbtn.setAttribute('aria-expanded', true);\n\t\tbtn.setAttribute('aria-controls', target.id);\n\n\t\t// Toggle icons\n\t\tvar icon = btn.querySelector('[' + settings.iconAttribute + ']');\n\t\tif (icon) {\n\t\t\ticon.innerHTML = settings.iconHide;\n\t\t}\n\n\t};\n\n\t/**\n\t * Expand disclosure content\n\t * @param  {Node}   btn      The button\n\t * @param  {Node}   target   The disclosure content\n\t * @param  {Object} settings The settings object\n\t */\n\tvar expandContent = function (btn, target, settings) {\n\n\t\t// Update button text\n\t\texpandBtn(btn, target, settings);\n\n\t\t// Expand content\n\t\ttarget.classList.add(settings.expandedClass);\n\n\t\t// Update focus\n\t\tif (settings.btnAfter && !settings.isAccordion) {\n\t\t\ttarget.focus();\n\t\t}\n\n\t\t// Emit event\n\t\temitEvent('houdiniExpand', settings, {\n\t\t\tbutton: btn,\n\t\t\tcontent: target\n\t\t});\n\n\t};\n\n\t/**\n\t * Toggle disclosure content visibility\n\t * @param  {Node}   btn      The button\n\t * @param  {Node}   target   The disclosure content\n\t * @param  {String} selector The selector for this instantiation\n\t * @param  {Object} settings The settings object\n\t * @return {[type]}          [description]\n\t */\n\tvar toggleContent = function (btn, selector, settings, event) {\n\n\t\t// Variables\n\t\tvar isExpanded = btn.getAttribute('aria-expanded');\n\t\tvar target = document.querySelector('#' + btn.getAttribute(settings.btnAttribute));\n\t\tif (!target || !target.matches(selector)) return;\n\n\t\t// Prevent default click event\n\t\t// For links or buttons inside a form\n\t\tif (event) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\t// Toggle content visibility\n\t\t// Must explicitly specify true here and use type coercion because value returned is a string\n\t\tif (isExpanded == 'true') {\n\t\t\tcollapseContent(btn, target, settings);\n\t\t} else {\n\t\t\tcollapseOthers(btn, target, selector, settings);\n\t\t\texpandContent(btn, target, settings);\n\t\t}\n\n\t};\n\n\t/**\n\t * Get the content element from the DOM\n\t * @param  {String|Node} target The selector\n\t * @param  {String}      att    The data attribute for toggle buttons\n\t * @return {Node}               The content element\n\t */\n\tvar getContent = function (target, att) {\n\n\t\tvar content = target;\n\n\t\t// If selector string instead of element\n\t\tif (typeof target === 'string') {\n\t\t\tcontent = document.querySelector(target);\n\t\t}\n\n\t\t// If button instead of content\n\t\tif (content && content.matches('[' + att + ']')) {\n\t\t\tcontent = document.querySelector('#' + content.getAttribute(att));\n\t\t}\n\n\t\treturn content;\n\n\t};\n\n\t/**\n\t * Get the button element from the DOM\n\t * @param  {String|Node} target   The element or selector string\n\t * @param  {String}      selector The selector for this instantiation\n\t * @return {Node}                 The button element\n\t */\n\tvar getBtn = function (target, selector, settings) {\n\n\t\tvar btn = target;\n\n\t\t// If selector string instead of element\n\t\tif (typeof target === 'string') {\n\t\t\tbtn = document.querySelector(target);\n\t\t}\n\n\t\t// If content area instead of button\n\t\tif (btn && btn.matches(selector)) {\n\t\t\tbtn = document.querySelector('[' + settings.btnAttribute + '=\"' + btn.id + '\"]');\n\t\t}\n\n\t\treturn btn;\n\n\t};\n\n\t/**\n\t * Restore the DOM to its original state\n\t * @param  {String} selector The selector for this instantiation\n\t * @param  {Object} settings The settings object\n\t */\n\tvar teardown = function (selector, settings) {\n\t\tArray.prototype.forEach.call(document.querySelectorAll(selector), (function (content) {\n\n\t\t\t// Remove the toggle button\n\t\t\tremoveBtn(content, settings);\n\n\t\t\t// Add the content class\n\t\t\tcontent.classList.remove(settings.contentClass);\n\n\t\t\t// Restore default expanded state\n\t\t\tif (settings.expandedOnInit.indexOf(content.id) < 0) {\n\t\t\t\tcontent.classList.remove(settings.expandedClass);\n\t\t\t} else {\n\t\t\t\tcontent.classList.add(settings.expandedClass);\n\t\t\t}\n\n\t\t}));\n\t};\n\n\n\t//\n\t// Constructor\n\t//\n\n\tvar Constructor = function (selector, options) {\n\n\t\t//\n\t\t// Variables\n\t\t//\n\n\t\tvar publicAPIs = {};\n\t\tvar settings;\n\n\n\t\t//\n\t\t// Methods\n\t\t//\n\n\t\t/**\n\t\t * Toggle a disclosure\n\t\t * @param  {String|Node} target The content or button to toggle\n\t\t */\n\t\tpublicAPIs.toggle = function (target) {\n\t\t\ttoggleContent(getBtn(target, selector, settings), selector, settings);\n\t\t};\n\n\t\t/**\n\t\t * Expand a disclosure\n\t\t * @param  {String|Node} target The content or button to toggle\n\t\t */\n\t\tpublicAPIs.expand = function (target) {\n\t\t\texpandContent(getBtn(target, selector, settings), getContent(target, settings.btnAttribute), settings);\n\t\t};\n\n\t\t/**\n\t\t * Collapse a disclosure\n\t\t * @param  {String|Node} target The content or button to toggle\n\t\t */\n\t\tpublicAPIs.collapse = function (target) {\n\t\t\tvar btn = getBtn(target, selector, settings);\n\t\t\tvar content = getContent(target, settings.btnAttribute);\n\t\t\tcollapseOthers(btn, content, selector, settings);\n\t\t\tcollapseContent(btn, content, settings);\n\t\t};\n\n\t\t/**\n\t\t * Add required markup to the DOM\n\t\t */\n\t\tpublicAPIs.setup = function () {\n\n\t\t\t// Add markup\n\t\t\tArray.prototype.forEach.call(document.querySelectorAll(selector), (function (content) {\n\n\t\t\t\t// If already setup, bail\n\t\t\t\tif (content.classList.contains(settings.contentClass)) return;\n\n\t\t\t\t// Create the toggle button\n\t\t\t\tif (!createBtn(content, settings)) return;\n\n\t\t\t\t// Add the content class\n\t\t\t\tcontent.classList.add(settings.contentClass);\n\n\t\t\t\t// Cache items that are expanded by default\n\t\t\t\tif (content.classList.contains(settings.expandedClass)) {\n\t\t\t\t\tsettings.expandedOnInit.push(content.id);\n\t\t\t\t}\n\n\t\t\t\t// If the button appears after the content, give it a tabindex so it can be focused\n\t\t\t\tif (settings.btnAfter && !content.getAttribute('tabindex')) {\n\t\t\t\t\tcontent.setAttribute('tabindex', -1);\n\t\t\t\t}\n\n\t\t\t\t// If item should be expanded by default, expand it\n\t\t\t\tif (settings.expanded) {\n\t\t\t\t\tcontent.classList.add(settings.expandedClass);\n\t\t\t\t}\n\n\t\t\t}));\n\n\t\t\t// Emit event\n\t\t\temitEvent('houdiniSetup', settings, {\n\t\t\t\tsettings: settings\n\t\t\t});\n\n\t\t};\n\n\t\t/**\n\t\t * Handle click events\n\t\t */\n\t\tvar clickHandler = function (event) {\n\n\t\t\t// Only run if clicked element matches our selector\n\t\t\tvar toggle = event.target.closest('[' + settings.btnAttribute + ']');\n\t\t\tif (!toggle) return;\n\n\t\t\t// Show/hide content\n\t\t\ttoggleContent(toggle, selector, settings, event);\n\n\t\t};\n\n\t\t/**\n\t\t * Destroy the current instatiation\n\t\t */\n\t\tpublicAPIs.destroy = function () {\n\t\t\tdocument.removeEventListener('click', clickHandler, false);\n\t\t\tteardown(selector, settings);\n\t\t\temitEvent('houdiniDestroy', settings, {\n\t\t\t\tsettings: settings\n\t\t\t});\n\t\t\tsettings = null;\n\t\t};\n\n\t\t/**\n\t\t * Initialize the plugin\n\t\t */\n\t\tvar init = function () {\n\n\t\t\t// Merge user options into defaults\n\t\t\tsettings = extend(defaults, options || {});\n\t\t\tsettings.expandedOnInit = [];\n\t\t\tif (settings.icon < 0) {\n\t\t\t\tsettings.icon = settings.isAccordion;\n\t\t\t}\n\n\t\t\t// Setup the DOM\n\t\t\tpublicAPIs.setup();\n\n\t\t\t// Add event listener\n\t\t\tdocument.addEventListener('click', clickHandler, false);\n\n\t\t\t// Emit event\n\t\t\temitEvent('houdiniInitialize', settings, {\n\t\t\t\tsettings: settings\n\t\t\t});\n\n\t\t};\n\n\t\t// Initialize the plugin\n\t\tinit(options);\n\n\t\t// Return the public APIs\n\t\treturn publicAPIs;\n\n\t};\n\n\n\t//\n\t// Return the constructor\n\t//\n\n\treturn Constructor;\n\n}));\n","module.exports = require(\"../export-contract.js\")(\n  require(\"../patterns/de-1996.js\")\n);\n","module.exports = require(\"../de-1996/index.js\");\n","var createHyphenator = require(\"./hyphen.js\");\r\n\r\nmodule.exports = function (patterns) {\r\n  return {\r\n    hyphenate: createHyphenator(patterns, { async: true }),\r\n    hyphenateHTML: createHyphenator(patterns, { async: true, html: true }),\r\n    hyphenateHTMLSync: createHyphenator(patterns, { html: true }),\r\n    hyphenateSync: createHyphenator(patterns),\r\n    patterns: patterns\r\n  };\r\n};\r\n","/** Text hyphenation in Javascript.\n *  Copyright (C) 2021 Yevhen Tiurin (yevhentiurin@gmail.com)\n *  https://github.com/ytiurin/hyphen\n *\n *  Released under the ISC license\n *  https://github.com/ytiurin/hyphen/blob/master/LICENSE\n */\n(function (root, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([], factory);\n  } else if (typeof module === \"object\" && module.exports) {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory();\n  } else {\n    // Browser globals (root is window)\n    root.createHyphenator = factory();\n  }\n})(this, function () {\n  var SETTING_DEFAULT_ASYNC = false,\n    SETTING_DEFAULT_DEBUG = false,\n    SETTING_DEFAULT_HTML = false,\n    SETTING_DEFAULT_HYPH_CHAR = \"\\u00AD\",\n    SETTING_DEFAULT_MIN_WORD_LENGTH = 5,\n    SETTING_NAME_ASYNC = \"async\",\n    SETTING_NAME_DEBUG = \"debug\",\n    SETTING_NAME_HTML = \"html\",\n    SETTING_NAME_HYPH_CHAR = \"hyphenChar\",\n    SETTING_NAME_MIN_WORD_LENGTH = \"minWordLength\";\n\n  var _global =\n    typeof global === \"object\"\n      ? global\n      : typeof window === \"object\"\n      ? window\n      : typeof this === \"object\"\n      ? this\n      : {};\n\n  function cloneObj(source) {\n    var target = {};\n    for (var key in source) {\n      target[key] = source[key];\n    }\n    return target;\n  }\n\n  function keyOrDefault(object, key, defaultValue) {\n    if (key in object) {\n      return object[key];\n    }\n    return defaultValue;\n  }\n\n  function exceptionsFromDefinition(patternsDefinition, hyphenChar) {\n    return patternsDefinition.exceptions.reduce(function (\n      exceptions,\n      exception\n    ) {\n      exceptions[exception.replace(/\\-/g, \"\")] = exception.replace(\n        /\\-/g,\n        hyphenChar\n      );\n      return exceptions;\n    },\n    {});\n  }\n\n  function createHyphenator(patternsDefinition, options) {\n    options = options || {};\n    var //\n      asyncMode = keyOrDefault(\n        options,\n        SETTING_NAME_ASYNC,\n        SETTING_DEFAULT_ASYNC\n      ),\n      caches = {},\n      debug = keyOrDefault(options, SETTING_NAME_DEBUG, SETTING_DEFAULT_DEBUG),\n      exceptions = {},\n      hyphenChar = keyOrDefault(\n        options,\n        SETTING_NAME_HYPH_CHAR,\n        SETTING_DEFAULT_HYPH_CHAR\n      ),\n      patterns = patternsDefinition.patterns.map(preprocessPattern),\n      minWordLength =\n        keyOrDefault(\n          options,\n          SETTING_NAME_MIN_WORD_LENGTH,\n          SETTING_DEFAULT_MIN_WORD_LENGTH\n        ) >> 0,\n      skipHTML = keyOrDefault(options, SETTING_NAME_HTML, SETTING_DEFAULT_HTML);\n\n    // Prepare cache\n    var cacheKey = hyphenChar + minWordLength;\n    exceptions[cacheKey] = exceptionsFromDefinition(\n      patternsDefinition,\n      hyphenChar\n    );\n    caches[cacheKey] = cloneObj(exceptions[cacheKey]);\n\n    if (asyncMode && !(\"Promise\" in _global)) {\n      throw new Error(\n        \"Failed to create hyphenator: Could not find global Promise object, needed for hyphenator to work in async mode\"\n      );\n    }\n\n    return function (text, options) {\n      options = options || {};\n\n      var localDebug = keyOrDefault(options, SETTING_NAME_DEBUG, debug),\n        localHyphenChar = keyOrDefault(\n          options,\n          SETTING_NAME_HYPH_CHAR,\n          hyphenChar\n        ),\n        localMinWordLength =\n          keyOrDefault(options, SETTING_NAME_MIN_WORD_LENGTH, minWordLength) >>\n          0,\n        cacheKey = localHyphenChar + localMinWordLength;\n\n      if (!exceptions[cacheKey]) {\n        exceptions[cacheKey] = exceptionsFromDefinition(\n          patternsDefinition,\n          localHyphenChar\n        );\n      }\n\n      if (!caches[cacheKey]) {\n        caches[cacheKey] = cloneObj(exceptions[cacheKey]);\n      }\n\n      return start(\n        text,\n        patterns,\n        caches[cacheKey],\n        localDebug,\n        localHyphenChar,\n        skipHTML,\n        localMinWordLength,\n        asyncMode\n      );\n    };\n  }\n  function createTextChunkReader(text, hyphenChar, skipHTML, minWordLength) {\n    function readNextTextChunk() {\n      var nextTextChunk = \"\";\n\n      shouldHyphenate = void 0;\n\n      chunkReader: while (nextCharIndex <= text.length) {\n        var //\n          nextChar = text.charAt(nextCharIndex++),\n          charIsLetter =\n            !!nextChar && !/\\s|[\\!-\\@\\[-\\`\\{-\\~\\u2013-\\u203C]/.test(nextChar),\n          charIsAngleOpen = nextChar === \"<\",\n          charIsAngleClose = nextChar === \">\",\n          charIsHyphen = nextChar === hyphenChar;\n\n        do {\n          if (state === STATE_READ_TAG) {\n            if (charIsAngleClose) {\n              state = STATE_RETURN_UNTOUCHED;\n            }\n            break;\n          }\n\n          if (charIsHyphen) {\n            shouldHyphenate = SHOULD_SKIP;\n            state = STATE_READ_WORD;\n            break;\n          }\n\n          if (charIsLetter) {\n            state = STATE_READ_WORD;\n            break;\n          }\n\n          if (state === STATE_READ_WORD) {\n            state = STATE_RETURN_WORD;\n            shouldHyphenate =\n              shouldHyphenate ||\n              (nextTextChunk.length >= minWordLength && SHOULD_HYPHENATE);\n            break;\n          }\n\n          shouldHyphenate = SHOULD_SKIP;\n          state = STATE_RETURN_UNTOUCHED;\n        } while (0);\n\n        if (\n          charIsAngleOpen &&\n          state !== STATE_RETURN_WORD &&\n          skipHTML &&\n          !isSpacelike(text.charAt(nextCharIndex))\n        ) {\n          shouldHyphenate = SHOULD_SKIP;\n          state = STATE_READ_TAG;\n        }\n\n        switch (state) {\n          case STATE_READ_TAG:\n            nextTextChunk += nextChar;\n            break;\n\n          case STATE_READ_WORD:\n            nextTextChunk += nextChar;\n            break;\n\n          case STATE_RETURN_UNTOUCHED:\n            nextTextChunk += nextChar;\n            break chunkReader;\n\n          case STATE_RETURN_WORD:\n            nextCharIndex--;\n            break chunkReader;\n        }\n      }\n      return nextTextChunk || void 0;\n    }\n\n    function shouldNextHyphenate() {\n      return shouldHyphenate === SHOULD_HYPHENATE;\n    }\n\n    var isSpacelike = RegExp.prototype.test.bind(/\\s/);\n\n    var //\n      nextCharIndex = 0,\n      SHOULD_HYPHENATE = 1,\n      SHOULD_SKIP = 2,\n      shouldHyphenate,\n      STATE_READ_TAG = 1,\n      STATE_READ_WORD = 2,\n      STATE_RETURN_UNTOUCHED = 3,\n      STATE_RETURN_WORD = 4,\n      state;\n\n    return [readNextTextChunk, shouldNextHyphenate];\n  }\n  function hyphenateWord(text, patterns, debug, hyphenChar) {\n    var //\n      levels = new Array(text.length + 1),\n      loweredText = text.toLocaleLowerCase(),\n      p = [],\n      patternData,\n      patternIndex = 0;\n\n    for (var i = levels.length; i--; ) levels[i] = 0;\n\n    while ((patternData = patterns[patternIndex++])) {\n      var //\n        fromChar = 0,\n        endPattern = false;\n      while (!endPattern) {\n        var //\n          patternEntityIndex = loweredText.indexOf(patternData.text, fromChar),\n          patternFits =\n            patternEntityIndex > -1 &&\n            (patternData.stickToLeft ? patternEntityIndex === 0 : true) &&\n            (patternData.stickToRight\n              ? patternEntityIndex + patternData.text.length === text.length\n              : true);\n\n        if (patternFits) {\n          p.push(patternData.pattern + \">\" + patternData.levels.join(\"\"));\n\n          for (var i = 0; i < patternData.levels.length; i++)\n            levels[patternEntityIndex + i] = Math.max(\n              patternData.levels[i],\n              levels[patternEntityIndex + i]\n            );\n        }\n        if (patternEntityIndex > -1 && patternData.text.length > 0) {\n          fromChar = patternEntityIndex + patternData.text.length + 1;\n        } else {\n          endPattern = true;\n        }\n      }\n    }\n\n    levels[0] = levels[1] = levels[levels.length - 1] = levels[\n      levels.length - 2\n    ] = 0;\n\n    var //\n      hyphenatedText = \"\",\n      leveledText = \"\",\n      debugHyphenatedText = \"\";\n\n    for (var i = 0; i < levels.length; i++) {\n      hyphenatedText +=\n        (levels[i] % 2 === 1 ? hyphenChar : \"\") + text.charAt(i);\n      debugHyphenatedText += (levels[i] % 2 === 1 ? \"-\" : \"\") + text.charAt(i);\n      leveledText += (levels[i] > 0 ? levels[i] : \"\") + text.charAt(i);\n    }\n\n    if (debug)\n      console.log.apply(\n        console,\n        [text, \"->\"]\n          .concat(p)\n          .concat([\"->\"])\n          .concat(levels)\n          .concat([\"->\", leveledText])\n          .concat([\"->\", debugHyphenatedText])\n      );\n\n    return hyphenatedText;\n  }\n  function preprocessPattern(pattern) {\n    var //\n      patternCharIndex = 0,\n      patternChar,\n      patternData = {\n        pattern: pattern,\n        text: \"\",\n        levels: [],\n        stickToLeft: 0,\n        stickToRight: 0\n      },\n      states = { alphabet: 1, level: 2, stickToLeft: 3, stickToRight: 4 };\n\n    while ((patternChar = pattern.charAt(patternCharIndex++))) {\n      var //\n        charIsDot = patternChar === \".\",\n        charIsNumber = !charIsDot && /\\d/.test(patternChar),\n        state = charIsDot\n          ? patternCharIndex - 1 === 0\n            ? states.stickToLeft\n            : states.stickToRight\n          : charIsNumber\n          ? states.level\n          : states.alphabet;\n\n      switch (state) {\n        case states.alphabet:\n          !prevCharIsNumber && patternData.levels.push(0);\n          patternData.text += patternChar;\n          break;\n\n        case states.level:\n          patternData.levels.push(parseInt(patternChar));\n          break;\n\n        case states.stickToLeft:\n          patternData.stickToLeft = true;\n          break;\n\n        case states.stickToRight:\n          patternData.stickToRight = true;\n          break;\n      }\n\n      var prevCharIsNumber = charIsNumber;\n    }\n\n    return patternData;\n  }\n  function start(\n    text,\n    patterns,\n    cache,\n    debug,\n    hyphenChar,\n    skipHTML,\n    minWordLength,\n    isAsync\n  ) {\n    function done() {\n      allTime = new Date() - allTime;\n      resolveNewText(newText);\n\n      if (debug) {\n        console.log(\n          \"----------------\\nHyphenation stats: \" +\n            processedN +\n            \" text chunks processed, \" +\n            hyphenatedN +\n            \" words hyphenated\"\n        );\n        console.log(\"Work time: \" + workTime / 1000);\n        console.log(\"Wait time: \" + (allTime - workTime) / 1000);\n        console.log(\"All time: \" + allTime / 1000);\n      }\n    }\n\n    var //\n      cacheKey,\n      newText = \"\",\n      textChunk,\n      reader = createTextChunkReader(text, hyphenChar, skipHTML, minWordLength),\n      readNextTextChunk = reader[0],\n      shouldNextHyphenate = reader[1],\n      processedN = 0,\n      hyphenatedN = 0;\n\n    var //\n      allTime = new Date(),\n      workTime = 0;\n\n    var resolveNewText = function () {};\n\n    function nextTick() {\n      var loopStart = new Date();\n\n      while (\n        (!isAsync || new Date() - loopStart < 10) &&\n        (textChunk = readNextTextChunk())\n      ) {\n        cacheKey = textChunk.length ? \"$\" + textChunk : \"\";\n\n        if (shouldNextHyphenate()) {\n          if (cache[cacheKey] === undefined) {\n            cache[cacheKey] = hyphenateWord(\n              textChunk,\n              patterns,\n              debug,\n              hyphenChar\n            );\n          }\n\n          if (textChunk !== cache[cacheKey]) {\n            hyphenatedN++;\n          }\n\n          textChunk = cache[cacheKey];\n        }\n\n        newText += textChunk;\n        processedN++;\n      }\n\n      workTime += new Date() - loopStart;\n\n      if (!textChunk) {\n        done();\n      } else {\n        setTimeout(nextTick);\n      }\n    }\n\n    if (isAsync) {\n      setTimeout(nextTick);\n      return new Promise(function (resolve) {\n        resolveNewText = resolve;\n      });\n    } else {\n      nextTick();\n      return newText;\n    }\n  }\n\n  return createHyphenator;\n});\n","(function (root, factory) {\r\n  if (typeof define === \"function\" && define.amd) {\r\n    // AMD. Register as an anonymous module.\r\n    define([], factory);\r\n  } else if (typeof module === \"object\" && module.exports) {\r\n    // Node. Does not work with strict CommonJS, but\r\n    // only CommonJS-like environments that support module.exports,\r\n    // like Node.\r\n    module.exports = factory();\r\n  } else {\r\n    // Browser globals (root is window)\r\n    root.hyphenationPatternsDe1996 = factory();\r\n  }\r\n})(this, function () {\r\n  var patterns = [],\r\n    hyphenation = [];\r\n\r\n  // title: Hyphenation patterns for German, reformed orthography (2006)\r\n  //\r\n  // notice: TeX-Trennmuster für die reformierte (2006) deutsche Rechtschreibung\r\n  //\r\n  // version: 2018-03-31\r\n  //\r\n  // authors:\r\n  //   -\r\n  //     name:    Deutschsprachige Trennmustermannschaft\r\n  //     contact: trennmuster@dante.de\r\n  //\r\n  // copyright: Copyright (C) 2013-2018\r\n  //            Stephan Hennig, Werner Lemberg, Günter Milde,\r\n  //            Sander van Geloven, Georg Pfeiffer, Gisbert W. Selke,\r\n  //            Tobias Wendorf\r\n  //\r\n  // licence:\r\n  //     name: MIT\r\n  //     url:  http://opensource.org/licenses/mit-license.php\r\n  //     text: >\r\n  //           Permission is hereby granted, free of charge, to any person\r\n  //           obtaining a copy of this software and associated documentation\r\n  //           files (the “Software”), to deal in the Software without\r\n  //           restriction, including without limitation the rights to use,\r\n  //           copy, modify, merge, publish, distribute, sublicense, and/or\r\n  //           sell copies of the Software, and to permit persons to whom the\r\n  //           Software is furnished to do so, subject to the following\r\n  //           conditions:\r\n  //\r\n  //           The above copyright notice and this permission notice shall be\r\n  //           included in all copies or substantial portions of the Software.\r\n  //\r\n  //           THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,\r\n  //           EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n  //           OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n  //           NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n  //           HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n  //           WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n  //           FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n  //           OTHER DEALINGS IN THE SOFTWARE.\r\n  //\r\n  // source: http://repo.or.cz/w/wortliste.git?a=commit;h=8b9a428c271e064f0047a364c532308f0fd4051f\r\n  //\r\n  // language:\r\n  //     name: German, reformed spelling\r\n  //     tag:  de-1996\r\n  //\r\n  // hyphenmins:\r\n  //     generation:\r\n  //         left:  2\r\n  //         right: 2\r\n  //     typesetting:\r\n  //         left:  2\r\n  //         right: 2\r\n  //\r\n  // ===========================================================================\r\n\r\n  var message =\r\n    \"German Hyphenation Patterns (Reformed Orthography, 2006) `dehyphn-x' 2018-03-31 (WL)\";\r\n\r\n  //\r\n  // The used patgen parameters are\r\n  //\r\n  //   1 1 | 2 5 | 1 1 1\r\n  //   2 2 | 2 5 | 1 2 1\r\n  //   3 3 | 2 6 | 1 1 1\r\n  //   4 4 | 2 6 | 1 4 1\r\n  //   5 5 | 2 7 | 1 1 1\r\n  //   6 6 | 2 7 | 1 6 1\r\n  //   7 7 | 2 13 | 1 4 1\r\n  //   8 8 | 2 13 | 1 8 1\r\n\r\n  var patterns = [\r\n    //\r\n    \".ab1a\",\r\n    \".ab3l\",\r\n    \".abo2\",\r\n    \".ab3ol\",\r\n    \".ab1or\",\r\n    \".ab3s2\",\r\n    \".ab3u\",\r\n    \".ade3n\",\r\n    \".ae3\",\r\n    \".aft2\",\r\n    \".ag4r\",\r\n    \".ag2u\",\r\n    \".ai2s\",\r\n    \".akt2a\",\r\n    \".al2e\",\r\n    \".al3k\",\r\n    \".al3lei\",\r\n    \".al5len\",\r\n    \".al3li\",\r\n    \".al3se\",\r\n    \".al4tei\",\r\n    \".al4tel\",\r\n    \".alter6s5\",\r\n    \".alt3s4\",\r\n    \".al4tu\",\r\n    \".ampe4\",\r\n    \".amt2s1\",\r\n    \".amt4sc\",\r\n    \".ana1c\",\r\n    \".an4a3t\",\r\n    \".an3d2\",\r\n    \".anden6k\",\r\n    \".an1er\",\r\n    \".ang2\",\r\n    \".an3g4li\",\r\n    \".an3go\",\r\n    \".angs4\",\r\n    \".angst3\",\r\n    \".ani2s\",\r\n    \".an3k4\",\r\n    \".an3na\",\r\n    \".an3s2\",\r\n    \".an4si.\",\r\n    \".an4tar\",\r\n    \".an3z2\",\r\n    \".ap5p6le.\",\r\n    \".ari1e\",\r\n    \".ar3k2a\",\r\n    \".ar4m3ac\",\r\n    \".ar4mun\",\r\n    \".ar2sc\",\r\n    \".ar4tan\",\r\n    \".ar4t3ei\",\r\n    \".arter4\",\r\n    \".ar6t5erh\",\r\n    \".ar2t1r\",\r\n    \".arz2\",\r\n    \".asbe2\",\r\n    \".as4ta\",\r\n    \".as3tr\",\r\n    \".ata1\",\r\n    \".at2h\",\r\n    \".at4r\",\r\n    \".au3d\",\r\n    \".au4f3\",\r\n    \".au2s3\",\r\n    \".auß2\",\r\n    \".ax2\",\r\n    \".äm3\",\r\n    \".är6schl\",\r\n    \".ät2h\",\r\n    \".ät2s\",\r\n    \".bahn3\",\r\n    \".bah6ner\",\r\n    \".bal3t\",\r\n    \".baus4\",\r\n    \".be3erb\",\r\n    \".beige4\",\r\n    \".bel2a\",\r\n    \".be3r2a\",\r\n    \".ber2e\",\r\n    \".ber4g3a\",\r\n    \".ber6g5e6b\",\r\n    \".ber4g3r\",\r\n    \".ber4tr\",\r\n    \".bi4os\",\r\n    \".bi2t\",\r\n    \".bit1a\",\r\n    \".blau3\",\r\n    \".boge2\",\r\n    \".bogen3\",\r\n    \".bogens6\",\r\n    \".bo4s3k\",\r\n    \".bu4ser\",\r\n    \".bu3ta\",\r\n    \".by4t\",\r\n    \".ca2s3t\",\r\n    \".ce2ra\",\r\n    \".ch6\",\r\n    \".char8mes\",\r\n    \".chi3er\",\r\n    \".dab4\",\r\n    \".da2r1\",\r\n    \".dar3in\",\r\n    \".dar2m1\",\r\n    \".da4te.\",\r\n    \".da4tes\",\r\n    \".de2al\",\r\n    \".de1i\",\r\n    \".dein2\",\r\n    \".de3lo\",\r\n    \".de8ments\",\r\n    \".de3na\",\r\n    \".den4ka\",\r\n    \".den4kl\",\r\n    \".den4ko\",\r\n    \".de1o2\",\r\n    \".de3r4en\",\r\n    \".de1s\",\r\n    \".de3sk\",\r\n    \".des2t\",\r\n    \".di3el\",\r\n    \".di4en\",\r\n    \".dien4e\",\r\n    \".dien6st\",\r\n    \".dienst7a8d\",\r\n    \".do3b\",\r\n    \".do2mo\",\r\n    \".do1pe\",\r\n    \".dor2f1\",\r\n    \".do2tr\",\r\n    \".dy2s3\",\r\n    \".ebe2r1\",\r\n    \".eg2o\",\r\n    \".eh2e\",\r\n    \".ehe1i\",\r\n    \".ehe5n\",\r\n    \".ei3e2\",\r\n    \".ei3f2e\",\r\n    \".ei3k\",\r\n    \".ei4na\",\r\n    \".ein3d\",\r\n    \".ei2ne2\",\r\n    \".ein3eb\",\r\n    \".ein6erl\",\r\n    \".ein3sp\",\r\n    \".eise4\",\r\n    \".ei2sp\",\r\n    \".eis3s2\",\r\n    \".ei2s5t\",\r\n    \".ei4tr\",\r\n    \".eke2\",\r\n    \".ek3li\",\r\n    \".el2a\",\r\n    \".el2bi\",\r\n    \".el2bl\",\r\n    \".elb3s\",\r\n    \".el4fei\",\r\n    \".el2fl\",\r\n    \".em3m2\",\r\n    \".en1\",\r\n    \".en4da\",\r\n    \".en4d3er4\",\r\n    \".en2d3r\",\r\n    \".end3s\",\r\n    \".en4dü\",\r\n    \".en3ga\",\r\n    \".en2gl\",\r\n    \".enk2\",\r\n    \".enn2\",\r\n    \".enns3\",\r\n    \".ent3\",\r\n    \".en2ta\",\r\n    \".en4tei\",\r\n    \".en7thalp\",\r\n    \".en4tio\",\r\n    \".en4t1r\",\r\n    \".en5trop\",\r\n    \".ents4\",\r\n    \".er4bei\",\r\n    \".er8brecht\",\r\n    \".er2bu\",\r\n    \".er4dan\",\r\n    \".erden6k\",\r\n    \".er4d3er\",\r\n    \".er1e\",\r\n    \".ere3c\",\r\n    \".er2em\",\r\n    \".erf4\",\r\n    \".er1i\",\r\n    \".ers2\",\r\n    \".er8stein\",\r\n    \".erster6\",\r\n    \".er8stritt.\",\r\n    \".er8stritten.\",\r\n    \".er4z3el\",\r\n    \".er4zen4\",\r\n    \".es3p\",\r\n    \".es3ta2\",\r\n    \".est6e\",\r\n    \".es3th\",\r\n    \".es3t3r\",\r\n    \".et2s\",\r\n    \".eu3\",\r\n    \".eug4\",\r\n    \".eur4\",\r\n    \".ext4\",\r\n    \".fe3la\",\r\n    \".fer4no\",\r\n    \".fi3d\",\r\n    \".fi3est\",\r\n    \".fi4le.\",\r\n    \".fi4len\",\r\n    \".fi2s\",\r\n    \".flu2g1\",\r\n    \".fs4\",\r\n    \".fu2sc\",\r\n    \".ga2me\",\r\n    \".gan4ga\",\r\n    \".ga2s1\",\r\n    \".gas3e\",\r\n    \".ga4sp\",\r\n    \".ga4t\",\r\n    \".gd2\",\r\n    \".gebe4a\",\r\n    \".geb2l\",\r\n    \".gee4\",\r\n    \".gel4b3r\",\r\n    \".gel2d1\",\r\n    \".ge3lu\",\r\n    \".ge3m\",\r\n    \".ge5nar\",\r\n    \".ge3n4e\",\r\n    \".gene7cke\",\r\n    \".ge3n2o\",\r\n    \".ge3r4a\",\r\n    \".ger2e\",\r\n    \".ge3ro\",\r\n    \".ger4s\",\r\n    \".ge3sa\",\r\n    \".glan2\",\r\n    \".glanz3\",\r\n    \".gol6der\",\r\n    \".gs4\",\r\n    \".gus2\",\r\n    \".halt4e\",\r\n    \".hau2t1\",\r\n    \".he2\",\r\n    \".he4bei\",\r\n    \".he3fe\",\r\n    \".he3le\",\r\n    \".he4r3an\",\r\n    \".he3rat\",\r\n    \".her6b5ra\",\r\n    \".he3rer\",\r\n    \".he3ri\",\r\n    \".he6r5inn\",\r\n    \".hin3u\",\r\n    \".hips4\",\r\n    \".hi4s\",\r\n    \".hof1\",\r\n    \".ho4fen\",\r\n    \".ho4met\",\r\n    \".ia4\",\r\n    \".im2a\",\r\n    \".ima4ge\",\r\n    \".im5m2\",\r\n    \".in1\",\r\n    \".ind2\",\r\n    \".in3gl\",\r\n    \".ink2\",\r\n    \".in3n2e\",\r\n    \".in3sk\",\r\n    \".in3t2\",\r\n    \".inu1\",\r\n    \".io4d\",\r\n    \".ioni1\",\r\n    \".ire3\",\r\n    \".is2a\",\r\n    \".is3ta\",\r\n    \".it2h\",\r\n    \".iv2\",\r\n    \".joni1\",\r\n    \".ka2b3l\",\r\n    \".ka2i\",\r\n    \".kal2a\",\r\n    \".ka3le\",\r\n    \".ka3t2a\",\r\n    \".kat3i\",\r\n    \".ka4ti4o\",\r\n    \".ki4e\",\r\n    \".klang3\",\r\n    \".ko3b\",\r\n    \".kopf1\",\r\n    \".kor4da\",\r\n    \".kraf2\",\r\n    \".ks4\",\r\n    \".kus2\",\r\n    \".la3be\",\r\n    \".lan8de8mi\",\r\n    \".le4ar\",\r\n    \".le4gas\",\r\n    \".le3n2i\",\r\n    \".lich8t7er8s\",\r\n    \".li2f\",\r\n    \".li4ve.\",\r\n    \".lo4g3in\",\r\n    \".lo2sc\",\r\n    \".los3s4\",\r\n    \".lo2tr\",\r\n    \".lo3ver\",\r\n    \".luster6\",\r\n    \".lus4tr\",\r\n    \".lut2h\",\r\n    \".ly2s3\",\r\n    \".ma3d\",\r\n    \".ma3ge\",\r\n    \".mal4e\",\r\n    \".ma2st\",\r\n    \".mat4c\",\r\n    \".ma5tr\",\r\n    \".matu3\",\r\n    \".md2\",\r\n    \".mel2a\",\r\n    \".me3ne\",\r\n    \".me3no\",\r\n    \".men8schl\",\r\n    \".men8schw\",\r\n    \".mes4sp\",\r\n    \".mi2f\",\r\n    \".mik4\",\r\n    \".mil2z1\",\r\n    \".mi2s\",\r\n    \".mi4t1\",\r\n    \".mm2\",\r\n    \".mutter5\",\r\n    \".na3no\",\r\n    \".na3t\",\r\n    \".näs1c\",\r\n    \".nebe4n\",\r\n    \".ner2f\",\r\n    \".ne1ro\",\r\n    \".ne2s\",\r\n    \".nich2\",\r\n    \".nicht5e\",\r\n    \".ni4e\",\r\n    \".ni3k4l\",\r\n    \".no2th\",\r\n    \".nul2\",\r\n    \".nus2\",\r\n    \".oa3\",\r\n    \".ob1a\",\r\n    \".obe2\",\r\n    \".ober5ei\",\r\n    \".ob3i4t\",\r\n    \".och3\",\r\n    \".of2e\",\r\n    \".oper4\",\r\n    \".or2a\",\r\n    \".ord4e\",\r\n    \".or3g\",\r\n    \".or3k2\",\r\n    \".ort2\",\r\n    \".orts3e\",\r\n    \".os3s\",\r\n    \".os4ta4\",\r\n    \".oste2\",\r\n    \".ost5end\",\r\n    \".os8ten8de\",\r\n    \".oste6re\",\r\n    \".os8terwe\",\r\n    \".os4tes\",\r\n    \".os2t3i\",\r\n    \".os4tig\",\r\n    \".os4t3r\",\r\n    \".os4tu\",\r\n    \".ot1a\",\r\n    \".ou2t\",\r\n    \".ou4te\",\r\n    \".ozo4\",\r\n    \".öd2\",\r\n    \".öl3l\",\r\n    \".pab4\",\r\n    \".part4h\",\r\n    \".pe2c\",\r\n    \".pe3la\",\r\n    \".pe3le\",\r\n    \".pe3na\",\r\n    \".pf4\",\r\n    \".ph4\",\r\n    \".poka2\",\r\n    \".po4st\",\r\n    \".postei6\",\r\n    \".pro1\",\r\n    \".ps2\",\r\n    \".rabe4\",\r\n    \".ra3ch4e\",\r\n    \".ra3me\",\r\n    \".rau2m\",\r\n    \".rau8schl\",\r\n    \".räu3sc\",\r\n    \".re3ale\",\r\n    \".reb3s2\",\r\n    \".re3cha\",\r\n    \".re5insz\",\r\n    \".reis6e5i\",\r\n    \".rei4s5t\",\r\n    \".reli1\",\r\n    \".res6tr\",\r\n    \".ri4as\",\r\n    \".richt6e\",\r\n    \".ro4a\",\r\n    \".ro3be\",\r\n    \".ro2e\",\r\n    \".ro2h\",\r\n    \".ro3m\",\r\n    \".rom4a\",\r\n    \".ro2st\",\r\n    \".ro2t3r\",\r\n    \".rö2s\",\r\n    \".ruf3s\",\r\n    \".ruh2r1\",\r\n    \".runder6\",\r\n    \".rü1b\",\r\n    \".rü6cker6\",\r\n    \".sa3br\",\r\n    \".sali3e\",\r\n    \".sami1\",\r\n    \".sau1c\",\r\n    \".sau4er\",\r\n    \".sau5er.\",\r\n    \".sch4\",\r\n    \".schaf8t7end\",\r\n    \".scheiner8\",\r\n    \".se3ck\",\r\n    \".se2e\",\r\n    \".seein4\",\r\n    \".se2ha\",\r\n    \".sen4f\",\r\n    \".sen5s\",\r\n    \".se3re\",\r\n    \".se1ro\",\r\n    \".se2t1\",\r\n    \".sha2\",\r\n    \".si4en\",\r\n    \".si3gn\",\r\n    \".si4te\",\r\n    \".ski1e\",\r\n    \".skis2\",\r\n    \".sour2\",\r\n    \".spani7er.\",\r\n    \".spiege8lei\",\r\n    \".st4\",\r\n    \".stau8be8cken.\",\r\n    \".ste2i\",\r\n    \".steiner8k\",\r\n    \".sto4re\",\r\n    \".stro6ma\",\r\n    \".sucher6\",\r\n    \".tage4s\",\r\n    \".ta3mi\",\r\n    \".tan4k3a\",\r\n    \".tan4k3l\",\r\n    \".ta3ra\",\r\n    \".tar3t2\",\r\n    \".ta2t1h\",\r\n    \".ta2to\",\r\n    \".ta4tor\",\r\n    \".ta2t1u\",\r\n    \".te2e\",\r\n    \".te2f\",\r\n    \".tehe3\",\r\n    \".teiler8s\",\r\n    \".tei8l7ersc\",\r\n    \".te3le\",\r\n    \".te3no\",\r\n    \".te1ra\",\r\n    \".te2s\",\r\n    \".te4st\",\r\n    \".test3r\",\r\n    \".th4\",\r\n    \".ti2a\",\r\n    \".ti2e\",\r\n    \".ti2me\",\r\n    \".ti4mes\",\r\n    \".ti3r\",\r\n    \".ti2s\",\r\n    \".tischen8\",\r\n    \".ti8sch7end\",\r\n    \".tite4\",\r\n    \".tode4\",\r\n    \".to4der\",\r\n    \".todes3\",\r\n    \".to2n\",\r\n    \".to4nat\",\r\n    \".ton3i\",\r\n    \".to4nin\",\r\n    \".tons2\",\r\n    \".to4pl\",\r\n    \".to2pr\",\r\n    \".to2w\",\r\n    \".tri3es\",\r\n    \".tro2s\",\r\n    \".ts4\",\r\n    \".tse3\",\r\n    \".tu3ra\",\r\n    \".tu3ri\",\r\n    \".turm1\",\r\n    \".tur4ma\",\r\n    \".ub2\",\r\n    \".ufe2\",\r\n    \".ufer3\",\r\n    \".ul2b3\",\r\n    \".um3\",\r\n    \".uma2\",\r\n    \".ume2\",\r\n    \".umo2\",\r\n    \".un3a2\",\r\n    \".un3d\",\r\n    \".un3g2\",\r\n    \".uni4t\",\r\n    \".un3s\",\r\n    \".uns4t\",\r\n    \".ur3a2d\",\r\n    \".uran6fa\",\r\n    \".ur1c\",\r\n    \".ur1e\",\r\n    \".ur4inf\",\r\n    \".ur3o4m\",\r\n    \".ur1o2p\",\r\n    \".ur3s2\",\r\n    \".ut2a\",\r\n    \".ut3r\",\r\n    \".ve5n2e\",\r\n    \".voll1\",\r\n    \".vo4r\",\r\n    \".wah4l\",\r\n    \".wa2s\",\r\n    \".weg5s\",\r\n    \".weine4\",\r\n    \".wei4ta\",\r\n    \".welter8e\",\r\n    \".welter8k\",\r\n    \".wer6ker\",\r\n    \".wer4kr\",\r\n    \".wer4tr\",\r\n    \".wetterer8\",\r\n    \".wi4e\",\r\n    \".wor2\",\r\n    \".wort5en6\",\r\n    \".wor8tend\",\r\n    \".wor4tu\",\r\n    \".wur2f1\",\r\n    \".xe3\",\r\n    \".ya4l\",\r\n    \".zel4la\",\r\n    \".zelle4\",\r\n    \".zel6leb\",\r\n    \".zeug4i\",\r\n    \".zi2e\",\r\n    \".zie4l3u\",\r\n    \".zin4ka\",\r\n    \".zin4s3c\",\r\n    \".zin4st\",\r\n    \".zuch2\",\r\n    \".zug3l\",\r\n    \".zu4gra\",\r\n    \".zu2pf\",\r\n    \".zwe2\",\r\n    \".zweigen8\",\r\n    \".zwei8g7end\",\r\n    \"a1ab\",\r\n    \"aa2be\",\r\n    \"aa1c\",\r\n    \"a1a2ce\",\r\n    \"aa2gr\",\r\n    \"a1akt\",\r\n    \"aals2t\",\r\n    \"a1a2n\",\r\n    \"a2ans\",\r\n    \"a1aq\",\r\n    \"2a2ar\",\r\n    \"aa2r3a\",\r\n    \"aar3b\",\r\n    \"aar3d\",\r\n    \"aa3rea\",\r\n    \"aa2rei\",\r\n    \"aarf4\",\r\n    \"aar3g2\",\r\n    \"aar3k4\",\r\n    \"aart4\",\r\n    \"1aas\",\r\n    \"aas5t\",\r\n    \"aata2\",\r\n    \"aa2th\",\r\n    \"aa4t3r\",\r\n    \"aat4s3\",\r\n    \"2a3au\",\r\n    \"a1ä\",\r\n    \"a1b\",\r\n    \"2aba\",\r\n    \"3abad\",\r\n    \"abais4\",\r\n    \"ab1alt\",\r\n    \"a3b2am\",\r\n    \"ab2ant\",\r\n    \"ab1au\",\r\n    \"ab1ä\",\r\n    \"ab2är\",\r\n    \"ab2äu\",\r\n    \"2abbat\",\r\n    \"2abbin\",\r\n    \"1abd\",\r\n    \"2a3be.\",\r\n    \"2a3bec\",\r\n    \"2abee\",\r\n    \"ab1eic\",\r\n    \"abe3i4d\",\r\n    \"ab1eil\",\r\n    \"ab1ein\",\r\n    \"2ab2el\",\r\n    \"abe2la2\",\r\n    \"2a3ben.\",\r\n    \"1abent\",\r\n    \"2aber\",\r\n    \"a2berd\",\r\n    \"a3bere\",\r\n    \"a3beri\",\r\n    \"ab1er2k\",\r\n    \"ab1er2r\",\r\n    \"ab1er2z\",\r\n    \"4abes\",\r\n    \"abe2s1e\",\r\n    \"ab3esse\",\r\n    \"2abet\",\r\n    \"2abew\",\r\n    \"1abf\",\r\n    \"1abg\",\r\n    \"3abga\",\r\n    \"1abh\",\r\n    \"2abi\",\r\n    \"4abil\",\r\n    \"ab1ins\",\r\n    \"ab1ir\",\r\n    \"abi3st\",\r\n    \"ab1it\",\r\n    \"abi4tur\",\r\n    \"1abk\",\r\n    \"ab1l\",\r\n    \"1a2bla\",\r\n    \"a3blat\",\r\n    \"1a2blä\",\r\n    \"a2b3led\",\r\n    \"3ab3lei\",\r\n    \"a3blem\",\r\n    \"2ablet\",\r\n    \"ab3li\",\r\n    \"a2blin\",\r\n    \"ab4lit\",\r\n    \"2ablo\",\r\n    \"1a2blö\",\r\n    \"a2blu\",\r\n    \"1abn\",\r\n    \"2abo\",\r\n    \"3a2bo.\",\r\n    \"ab2of\",\r\n    \"3a2bon\",\r\n    \"4abot\",\r\n    \"2abö\",\r\n    \"ab3r\",\r\n    \"a4brä\",\r\n    \"a2bre\",\r\n    \"ab4ros\",\r\n    \"2abrö\",\r\n    \"a4bs\",\r\n    \"1ab5sc\",\r\n    \"1ab3s2p\",\r\n    \"abst2\",\r\n    \"3absta\",\r\n    \"1abstu\",\r\n    \"ab3sz\",\r\n    \"1abtei\",\r\n    \"abte2s\",\r\n    \"3abtr\",\r\n    \"2abu\",\r\n    \"abu3g4\",\r\n    \"a2bum\",\r\n    \"ab1ur\",\r\n    \"2abü\",\r\n    \"1abw\",\r\n    \"2aby\",\r\n    \"aby4t\",\r\n    \"3abz\",\r\n    \"2ac.\",\r\n    \"2a3ca\",\r\n    \"1ac1c\",\r\n    \"2acci\",\r\n    \"a1cem\",\r\n    \"a1cen\",\r\n    \"a2ceo\",\r\n    \"ach1a\",\r\n    \"a1chal\",\r\n    \"a3chari\",\r\n    \"ach3as\",\r\n    \"ach3au\",\r\n    \"2achb\",\r\n    \"2a1che\",\r\n    \"a2ch1e4c\",\r\n    \"ach1ei\",\r\n    \"ach4ei.\",\r\n    \"a2chep\",\r\n    \"a4cherf\",\r\n    \"ach5erfa\",\r\n    \"a4ch3erh\",\r\n    \"a4ch3erl\",\r\n    \"a4cherö\",\r\n    \"a4ch3erw\",\r\n    \"2achf\",\r\n    \"2a1chi\",\r\n    \"a2chim\",\r\n    \"ach3l\",\r\n    \"2ach3m\",\r\n    \"ach3n\",\r\n    \"a1cho\",\r\n    \"a3cho.\",\r\n    \"a2cho2r\",\r\n    \"ach3öf\",\r\n    \"4ach3r\",\r\n    \"2achsc\",\r\n    \"achs4el\",\r\n    \"ach3s2i\",\r\n    \"ach3skr\",\r\n    \"achs4or\",\r\n    \"ach3su\",\r\n    \"a4cht\",\r\n    \"ach4tak\",\r\n    \"ach6terf\",\r\n    \"ach8tersp\",\r\n    \"ach6t5erw\",\r\n    \"ach4t1o\",\r\n    \"acht5rat\",\r\n    \"ach8traum\",\r\n    \"ach8träume.\",\r\n    \"ach8träumen.\",\r\n    \"ach6trit\",\r\n    \"acht6s5al\",\r\n    \"ach4tum\",\r\n    \"a1chu\",\r\n    \"ach1u2f\",\r\n    \"ach3ü\",\r\n    \"2achv\",\r\n    \"4ach1w\",\r\n    \"a2chy\",\r\n    \"a1ci\",\r\n    \"a1ckar\",\r\n    \"a3ckel\",\r\n    \"a2ckin\",\r\n    \"ack2sp\",\r\n    \"acksta4\",\r\n    \"2a1cl\",\r\n    \"acon4n\",\r\n    \"2acu\",\r\n    \"a1ç\",\r\n    \"a1d\",\r\n    \"2ad.\",\r\n    \"2ada.\",\r\n    \"4adab\",\r\n    \"ad2abr\",\r\n    \"ad2ag\",\r\n    \"ad1an\",\r\n    \"3adap\",\r\n    \"4a3d2a2r3\",\r\n    \"2adas\",\r\n    \"2adat\",\r\n    \"a2d1au\",\r\n    \"a3dau.\",\r\n    \"1a2dä\",\r\n    \"ad1c\",\r\n    \"1add\",\r\n    \"2ade.\",\r\n    \"ade2al\",\r\n    \"a3dec\",\r\n    \"a3dee\",\r\n    \"adefi2\",\r\n    \"2adeg\",\r\n    \"a3dell\",\r\n    \"4a3den\",\r\n    \"aden1a\",\r\n    \"ade4nat\",\r\n    \"adeo2\",\r\n    \"ade1ra\",\r\n    \"a2d1erk\",\r\n    \"4ade1s\",\r\n    \"ade3s2p\",\r\n    \"ades4s\",\r\n    \"2adf\",\r\n    \"4adh\",\r\n    \"4adi\",\r\n    \"adi3en\",\r\n    \"adi3er.\",\r\n    \"adie4sc\",\r\n    \"adi4st\",\r\n    \"3adj\",\r\n    \"2adli\",\r\n    \"3admi\",\r\n    \"4admu\",\r\n    \"ad2ob\",\r\n    \"ado2n\",\r\n    \"ado4na\",\r\n    \"a2dop\",\r\n    \"ad2os\",\r\n    \"2adp\",\r\n    \"2adq\",\r\n    \"a2dre\",\r\n    \"2ad3rec\",\r\n    \"ad3rei\",\r\n    \"ad3run\",\r\n    \"2ads2\",\r\n    \"ad3st\",\r\n    \"ad3sz\",\r\n    \"2ad2t1\",\r\n    \"ad4te2\",\r\n    \"1adv\",\r\n    \"2a3dy\",\r\n    \"2a1e1\",\r\n    \"ae2b\",\r\n    \"a2ec\",\r\n    \"ae2ck\",\r\n    \"ae2d\",\r\n    \"ae2i\",\r\n    \"a2ek\",\r\n    \"a2el\",\r\n    \"a3el.\",\r\n    \"a4ela\",\r\n    \"a4ele\",\r\n    \"a4eli\",\r\n    \"a3els\",\r\n    \"ae2m\",\r\n    \"ae2o3\",\r\n    \"aeop2\",\r\n    \"ae2p\",\r\n    \"a3er.\",\r\n    \"3a2er2o1\",\r\n    \"aes2a\",\r\n    \"ae2sc\",\r\n    \"aes5t\",\r\n    \"a2ew\",\r\n    \"ae2x\",\r\n    \"2afa\",\r\n    \"af1ab\",\r\n    \"a2f1a2n\",\r\n    \"a3far\",\r\n    \"a2f1au\",\r\n    \"2afä\",\r\n    \"a2f1än\",\r\n    \"2afe\",\r\n    \"a2f1ec\",\r\n    \"a4fentl\",\r\n    \"a4f1ep\",\r\n    \"aff4a\",\r\n    \"af2f3l\",\r\n    \"aff2s\",\r\n    \"aff4th\",\r\n    \"2afi\",\r\n    \"afi6kanz\",\r\n    \"afi4kat\",\r\n    \"afi2t\",\r\n    \"2af3l\",\r\n    \"af1la\",\r\n    \"a1f4lu\",\r\n    \"2afo\",\r\n    \"a2f3oc\",\r\n    \"a2ford\",\r\n    \"a2f1ort\",\r\n    \"afo1s\",\r\n    \"2afra\",\r\n    \"af3rau\",\r\n    \"af3rä\",\r\n    \"af3re\",\r\n    \"2afro\",\r\n    \"af3rö\",\r\n    \"af4rü\",\r\n    \"af3s2a\",\r\n    \"af3s2h\",\r\n    \"af2si\",\r\n    \"af2sp\",\r\n    \"afs4t\",\r\n    \"af2t1a\",\r\n    \"af3tat\",\r\n    \"af2tei\",\r\n    \"af2te2l\",\r\n    \"aft4erk\",\r\n    \"af2t1o\",\r\n    \"af2tö\",\r\n    \"aft3r\",\r\n    \"af2tra\",\r\n    \"aft5rei\",\r\n    \"aft4stä\",\r\n    \"af2tur\",\r\n    \"a2f3ur\",\r\n    \"2afü\",\r\n    \"afür3\",\r\n    \"a1g\",\r\n    \"2ag.\",\r\n    \"2aga\",\r\n    \"ag1a2b\",\r\n    \"ag1a2d\",\r\n    \"ag1ar\",\r\n    \"a2g1au\",\r\n    \"ag2del\",\r\n    \"ag2dr\",\r\n    \"ag2du\",\r\n    \"4age.\",\r\n    \"age4l3ei\",\r\n    \"age4ler\",\r\n    \"4a3gen.\",\r\n    \"age4neb\",\r\n    \"a2gent\",\r\n    \"2ages\",\r\n    \"age4sam\",\r\n    \"age4s3in\",\r\n    \"ages3p\",\r\n    \"ages6sen\",\r\n    \"ages3ti\",\r\n    \"3aggr\",\r\n    \"a2g1id\",\r\n    \"a2gim\",\r\n    \"2a2gl\",\r\n    \"ag4lan\",\r\n    \"ag4las\",\r\n    \"ag3le\",\r\n    \"a4glö\",\r\n    \"2agm\",\r\n    \"ag2n\",\r\n    \"ag4nat\",\r\n    \"a4gnä\",\r\n    \"ag4ne.\",\r\n    \"ag4nu\",\r\n    \"ago3b\",\r\n    \"ag3rat\",\r\n    \"a2g3re\",\r\n    \"a2gri\",\r\n    \"ag3rie\",\r\n    \"ag3rin\",\r\n    \"2ags\",\r\n    \"ag3s2ah\",\r\n    \"ag4sam\",\r\n    \"ag3s4eid\",\r\n    \"ag7s8porta\",\r\n    \"agst2\",\r\n    \"ag1ste\",\r\n    \"ag3stö\",\r\n    \"2agt\",\r\n    \"ag2th\",\r\n    \"2agu\",\r\n    \"a2gund\",\r\n    \"2ah.\",\r\n    \"2a1ha\",\r\n    \"ah2an\",\r\n    \"ah4at\",\r\n    \"a1hä\",\r\n    \"2a1he\",\r\n    \"ahe1in\",\r\n    \"a2h1er2h\",\r\n    \"ahe1s\",\r\n    \"ahe3u\",\r\n    \"a1h2i\",\r\n    \"ahin3\",\r\n    \"ah2l3a2\",\r\n    \"ah2l1ä\",\r\n    \"ah2l1ei\",\r\n    \"ah2lel\",\r\n    \"ahle4na\",\r\n    \"ah4l3erd\",\r\n    \"ah4l3erh\",\r\n    \"ahl1o2\",\r\n    \"ah2lö\",\r\n    \"ahl3sz\",\r\n    \"ahme1i\",\r\n    \"ahme3s\",\r\n    \"ah3mu\",\r\n    \"ah4n3a\",\r\n    \"ah3nee\",\r\n    \"ah2nef\",\r\n    \"ahn3el\",\r\n    \"ah4nerd\",\r\n    \"ahner4e\",\r\n    \"ahner6le\",\r\n    \"ahner4n\",\r\n    \"ah2nin\",\r\n    \"ah2no\",\r\n    \"1a2hor\",\r\n    \"ah1os\",\r\n    \"ah3ös\",\r\n    \"4ahr\",\r\n    \"ahr1a\",\r\n    \"ah3r2e\",\r\n    \"ahren6sc\",\r\n    \"ahre4s\",\r\n    \"ahr6tage\",\r\n    \"ahr6teng\",\r\n    \"ahr2ti\",\r\n    \"ahr4tro\",\r\n    \"ahr4tun\",\r\n    \"ah2ta\",\r\n    \"ah2te2l\",\r\n    \"ah2t1ex\",\r\n    \"ah4t3r\",\r\n    \"aht3s6\",\r\n    \"a1hu\",\r\n    \"ah1w\",\r\n    \"a1hy\",\r\n    \"2ai.\",\r\n    \"ai1a4\",\r\n    \"a1ia.\",\r\n    \"2aib\",\r\n    \"ai2bl\",\r\n    \"aid2s\",\r\n    \"ai1e4\",\r\n    \"ai3en3\",\r\n    \"aif4\",\r\n    \"ai1fr\",\r\n    \"a4i3g4\",\r\n    \"a3ik.\",\r\n    \"ai3ke\",\r\n    \"ai2lar\",\r\n    \"ail3d4\",\r\n    \"ai2lei\",\r\n    \"ail3g\",\r\n    \"ai2lo\",\r\n    \"4ain\",\r\n    \"ain2a\",\r\n    \"a1ind\",\r\n    \"ai5n4e\",\r\n    \"ain3s\",\r\n    \"ains2p\",\r\n    \"3airb\",\r\n    \"ai2sa\",\r\n    \"a3isch.\",\r\n    \"ai5schw\",\r\n    \"ai3s2e\",\r\n    \"ais4se.\",\r\n    \"ait4\",\r\n    \"a3iv.\",\r\n    \"a3ivl\",\r\n    \"a3ivs\",\r\n    \"a1j\",\r\n    \"a2jat\",\r\n    \"aje2\",\r\n    \"ajekt4o\",\r\n    \"2ak.\",\r\n    \"2aka.\",\r\n    \"2aka3b\",\r\n    \"akab4r\",\r\n    \"a2kad\",\r\n    \"2akal\",\r\n    \"2a3kam\",\r\n    \"2akan\",\r\n    \"2akar\",\r\n    \"ak4at\",\r\n    \"akat1a\",\r\n    \"aka4tak\",\r\n    \"1akaz\",\r\n    \"4akä\",\r\n    \"2akb\",\r\n    \"2akc\",\r\n    \"2akd\",\r\n    \"2a1ke\",\r\n    \"a2kef\",\r\n    \"a2k1em\",\r\n    \"a2kent\",\r\n    \"a2kes\",\r\n    \"ak2et\",\r\n    \"a2keu\",\r\n    \"2a1ki\",\r\n    \"ak1ins\",\r\n    \"aki1s\",\r\n    \"1akku\",\r\n    \"2ak3l\",\r\n    \"a1k4la\",\r\n    \"ak4li\",\r\n    \"3aklö\",\r\n    \"a1kna\",\r\n    \"2ako\",\r\n    \"2a1kr\",\r\n    \"4akra\",\r\n    \"ak3res\",\r\n    \"a3k4ri\",\r\n    \"3akro\",\r\n    \"ak3rü\",\r\n    \"2aks\",\r\n    \"ak3sh\",\r\n    \"ak2t1a2b\",\r\n    \"2aktb\",\r\n    \"ak2tel\",\r\n    \"akt2er\",\r\n    \"2aktg\",\r\n    \"2aktik\",\r\n    \"2aktis\",\r\n    \"2aktm\",\r\n    \"ak2to4b\",\r\n    \"ak2tö\",\r\n    \"ak2t3r\",\r\n    \"ak5t4ri\",\r\n    \"2aktsi\",\r\n    \"2aktsp\",\r\n    \"2aktst\",\r\n    \"2aktw\",\r\n    \"a1ku\",\r\n    \"2akun\",\r\n    \"a2kup\",\r\n    \"2akur\",\r\n    \"aku2s\",\r\n    \"4akü\",\r\n    \"1akz\",\r\n    \"3akze\",\r\n    \"a1la\",\r\n    \"2ala.\",\r\n    \"2alabo\",\r\n    \"al1af\",\r\n    \"al1age\",\r\n    \"2alai\",\r\n    \"al1akr\",\r\n    \"al1am\",\r\n    \"al1ana\",\r\n    \"2aland\",\r\n    \"a2lang\",\r\n    \"al1anz\",\r\n    \"al1app\",\r\n    \"a3lar.\",\r\n    \"al3arc\",\r\n    \"a3lare\",\r\n    \"2al1arr\",\r\n    \"a2lart\",\r\n    \"ala2s\",\r\n    \"al1asi\",\r\n    \"al1ass\",\r\n    \"a3lat.\",\r\n    \"al4atm\",\r\n    \"alat3z\",\r\n    \"al1au\",\r\n    \"al3aug\",\r\n    \"a1lä\",\r\n    \"a2l1äm\",\r\n    \"al1än\",\r\n    \"al1ärm\",\r\n    \"al1äu\",\r\n    \"3albat\",\r\n    \"al2bär\",\r\n    \"alber4e\",\r\n    \"al4berh\",\r\n    \"al4b3er4w\",\r\n    \"al2b1l\",\r\n    \"al2boh\",\r\n    \"al2bon\",\r\n    \"alb3ru\",\r\n    \"alb3st\",\r\n    \"al4dan\",\r\n    \"al2dä\",\r\n    \"al4d3erl\",\r\n    \"al4d3ern\",\r\n    \"alde2s\",\r\n    \"ald3inn\",\r\n    \"al2dra\",\r\n    \"al2drä\",\r\n    \"alds2\",\r\n    \"2ale\",\r\n    \"4a3le.\",\r\n    \"ale4ar\",\r\n    \"a2l1e2b\",\r\n    \"al1eck\",\r\n    \"a4l1ef\",\r\n    \"a2l1ei\",\r\n    \"a3l2eic\",\r\n    \"a4lein\",\r\n    \"a2l1el\",\r\n    \"3a2lema\",\r\n    \"a2l1e2mi\",\r\n    \"4a3len.\",\r\n    \"alende4\",\r\n    \"al3endr\",\r\n    \"a4l3ends\",\r\n    \"a2leng\",\r\n    \"al2enn\",\r\n    \"ale2p\",\r\n    \"al1epo\",\r\n    \"4aler.\",\r\n    \"a2l1erb\",\r\n    \"aler2e\",\r\n    \"a2l1erf\",\r\n    \"a2l1er2h\",\r\n    \"aler4kl\",\r\n    \"a2l3erl\",\r\n    \"al1erm\",\r\n    \"aler4mi\",\r\n    \"a2l1er4r\",\r\n    \"al2ers\",\r\n    \"a2l1ert\",\r\n    \"3a4l3erwä\",\r\n    \"4ales\",\r\n    \"a2l1e4sk\",\r\n    \"a2less\",\r\n    \"a4leth\",\r\n    \"a2l1eu\",\r\n    \"alf4r\",\r\n    \"3algi\",\r\n    \"al2gli\",\r\n    \"al3glo\",\r\n    \"1algo\",\r\n    \"3algor\",\r\n    \"alg4r\",\r\n    \"2ali\",\r\n    \"al2imb\",\r\n    \"al1imm\",\r\n    \"ali4nal\",\r\n    \"al1ind\",\r\n    \"alin4ge\",\r\n    \"a2l1in2q\",\r\n    \"al1ins\",\r\n    \"alken1\",\r\n    \"al2klö\",\r\n    \"al2kne\",\r\n    \"al2kof\",\r\n    \"1alkoh\",\r\n    \"alk3s2\",\r\n    \"alks4t\",\r\n    \"al2lab\",\r\n    \"al3lad\",\r\n    \"al2l1an\",\r\n    \"al2l1a2r\",\r\n    \"al3le.\",\r\n    \"al4lec\",\r\n    \"3allee\",\r\n    \"al3lend\",\r\n    \"all3erk\",\r\n    \"aller4z\",\r\n    \"al3les\",\r\n    \"al2lid\",\r\n    \"alli5er.\",\r\n    \"alli7ers.\",\r\n    \"al2lob\",\r\n    \"al2lop\",\r\n    \"al2löf\",\r\n    \"al2map\",\r\n    \"al4m3ast\",\r\n    \"almo6de.\",\r\n    \"2alo.\",\r\n    \"a2l1ob\",\r\n    \"3a2loe\",\r\n    \"a2l1of\",\r\n    \"4alog\",\r\n    \"alo2ga\",\r\n    \"alo2gr\",\r\n    \"al1ont\",\r\n    \"al1ort\",\r\n    \"2alos\",\r\n    \"a2l1ö\",\r\n    \"al2ös\",\r\n    \"3alp.\",\r\n    \"3alpe.\",\r\n    \"1alph\",\r\n    \"al2pho\",\r\n    \"alrat4\",\r\n    \"al3sak\",\r\n    \"al6schei\",\r\n    \"alsch3s\",\r\n    \"al3ska\",\r\n    \"al5s6terb\",\r\n    \"al2stu\",\r\n    \"al2sum\",\r\n    \"al2t1ak\",\r\n    \"alt3alg\",\r\n    \"al3tam\",\r\n    \"al2tan\",\r\n    \"al2tat\",\r\n    \"al2tau\",\r\n    \"1altä\",\r\n    \"alt3eis\",\r\n    \"alt3elt\",\r\n    \"al4temu\",\r\n    \"al4t3er5f\",\r\n    \"al2teu\",\r\n    \"al2tid\",\r\n    \"al2tin\",\r\n    \"alt1op\",\r\n    \"al2tö\",\r\n    \"al4t3rat\",\r\n    \"al2tre\",\r\n    \"al4t3ri\",\r\n    \"al2t3ro\",\r\n    \"alt4stü\",\r\n    \"a1lu\",\r\n    \"alu3b4\",\r\n    \"al2u3f\",\r\n    \"alu3g\",\r\n    \"al1u2k\",\r\n    \"a2lum\",\r\n    \"al1umb\",\r\n    \"a2l1ur\",\r\n    \"a3lus\",\r\n    \"4aly\",\r\n    \"al2zar\",\r\n    \"al2zau\",\r\n    \"al3zen\",\r\n    \"alz4erk\",\r\n    \"al2zw\",\r\n    \"2am.\",\r\n    \"am2a\",\r\n    \"ama2ba\",\r\n    \"ama3d2\",\r\n    \"ama3g\",\r\n    \"a2malg\",\r\n    \"2a3m4an\",\r\n    \"1a2maz\",\r\n    \"2amä\",\r\n    \"4ame.\",\r\n    \"a2meb\",\r\n    \"2amel\",\r\n    \"am4e4n1\",\r\n    \"amen6spr\",\r\n    \"ame3r2a\",\r\n    \"amera3u\",\r\n    \"a2m1erf\",\r\n    \"1a2meri\",\r\n    \"ame5r2u\",\r\n    \"2ame1s\",\r\n    \"a4mesh\",\r\n    \"2a3met\",\r\n    \"2amf\",\r\n    \"a3mi.\",\r\n    \"a3mie\",\r\n    \"ami2k\",\r\n    \"am4ing\",\r\n    \"2a3mir\",\r\n    \"2a3mis\",\r\n    \"2amit\",\r\n    \"2amk\",\r\n    \"2aml\",\r\n    \"2amm.\",\r\n    \"am2mab\",\r\n    \"am2m1ac\",\r\n    \"2ammal\",\r\n    \"am4mant\",\r\n    \"am2mar\",\r\n    \"am2mei\",\r\n    \"ammes3\",\r\n    \"am2mid\",\r\n    \"ammi2e\",\r\n    \"am2min\",\r\n    \"am2mor\",\r\n    \"am2m1ö\",\r\n    \"ammu2\",\r\n    \"amni1\",\r\n    \"a2mö\",\r\n    \"2ampe.\",\r\n    \"2ampen\",\r\n    \"am4pf\",\r\n    \"amp2f1a2\",\r\n    \"2am2ple\",\r\n    \"2ampo\",\r\n    \"am3pr\",\r\n    \"amp3s2\",\r\n    \"2am2s\",\r\n    \"am3sa\",\r\n    \"4amsc\",\r\n    \"am4schl\",\r\n    \"3amse\",\r\n    \"am3s2h\",\r\n    \"am3so\",\r\n    \"am3sp\",\r\n    \"am3su\",\r\n    \"1amt.\",\r\n    \"am2t1a2\",\r\n    \"am4tau\",\r\n    \"am2t1ä\",\r\n    \"am2tei\",\r\n    \"amt3eig\",\r\n    \"am4tel\",\r\n    \"am2tem\",\r\n    \"amter4\",\r\n    \"am4terh\",\r\n    \"am4t3ern\",\r\n    \"am2t1ex\",\r\n    \"am2tis\",\r\n    \"am2tit\",\r\n    \"am2to\",\r\n    \"am6tou\",\r\n    \"am2tö\",\r\n    \"am2t3r\",\r\n    \"am4tre\",\r\n    \"am4tri\",\r\n    \"am2t1u\",\r\n    \"2amtv\",\r\n    \"2amu\",\r\n    \"3a2mul\",\r\n    \"2ana.\",\r\n    \"2anab\",\r\n    \"ana3c\",\r\n    \"4an2ad\",\r\n    \"anadi1\",\r\n    \"an2ag\",\r\n    \"2a3nak\",\r\n    \"an1alg\",\r\n    \"ana4lin\",\r\n    \"2anam\",\r\n    \"an2a3ma\",\r\n    \"2anan\",\r\n    \"an4and\",\r\n    \"2ana1s\",\r\n    \"a5nat.\",\r\n    \"ana4th\",\r\n    \"a5n4atm\",\r\n    \"a2nato\",\r\n    \"ana4tr\",\r\n    \"a5nats\",\r\n    \"an3aug\",\r\n    \"1a2n1äs\",\r\n    \"1anb\",\r\n    \"2anbas\",\r\n    \"2anbö\",\r\n    \"2anbu\",\r\n    \"an3ch\",\r\n    \"2and.\",\r\n    \"3an3d2ac\",\r\n    \"and3arm\",\r\n    \"and3ei\",\r\n    \"anden6ga\",\r\n    \"an4d3ent\",\r\n    \"and5erob\",\r\n    \"ande4sc\",\r\n    \"an2d1ex\",\r\n    \"and4sas\",\r\n    \"and4seh\",\r\n    \"and2so\",\r\n    \"and6spar\",\r\n    \"and6spas\",\r\n    \"and2su\",\r\n    \"4andu2\",\r\n    \"an2d1ur\",\r\n    \"andy1\",\r\n    \"2ane\",\r\n    \"an3e2c\",\r\n    \"a3nee\",\r\n    \"an2ei.\",\r\n    \"an3eif\",\r\n    \"3aneig\",\r\n    \"a4neis\",\r\n    \"3a2n1e4k\",\r\n    \"ane2l\",\r\n    \"an1e2mi\",\r\n    \"a2nemo\",\r\n    \"aner4fa\",\r\n    \"a3nerg\",\r\n    \"an2erh\",\r\n    \"a4nerke\",\r\n    \"4anern\",\r\n    \"a4nerz.\",\r\n    \"an4erze\",\r\n    \"an1eth\",\r\n    \"3anex\",\r\n    \"1anf\",\r\n    \"2anf.\",\r\n    \"2anfab\",\r\n    \"3anfä\",\r\n    \"an3fe\",\r\n    \"2anfi\",\r\n    \"an4fj\",\r\n    \"anf3le\",\r\n    \"4anfors\",\r\n    \"anf5rau\",\r\n    \"2anfs\",\r\n    \"an3f2u\",\r\n    \"4ang.\",\r\n    \"1anga\",\r\n    \"2anga.\",\r\n    \"an2g1ar\",\r\n    \"2angas\",\r\n    \"2ange.\",\r\n    \"1angeb\",\r\n    \"an2g1ei\",\r\n    \"an4g3erf\",\r\n    \"an4g3er4h\",\r\n    \"an4g3er4w\",\r\n    \"an4g3erz\",\r\n    \"2angh\",\r\n    \"2angie\",\r\n    \"ang1l\",\r\n    \"an2gla\",\r\n    \"ang5n\",\r\n    \"ang1r\",\r\n    \"ang3ra\",\r\n    \"1an3gri\",\r\n    \"2angs.\",\r\n    \"ang4sto\",\r\n    \"angt2\",\r\n    \"1anh\",\r\n    \"2a3ni\",\r\n    \"an2i3d\",\r\n    \"ani3els\",\r\n    \"ani5ers.\",\r\n    \"anig2\",\r\n    \"ani3ke\",\r\n    \"3a4nim\",\r\n    \"a4nind\",\r\n    \"ani2o\",\r\n    \"an3i4on\",\r\n    \"a4niso\",\r\n    \"2anj\",\r\n    \"2ank.\",\r\n    \"an2kab\",\r\n    \"an2k1ak\",\r\n    \"an2kan\",\r\n    \"an2kei\",\r\n    \"2an3ken\",\r\n    \"ank5erfa\",\r\n    \"an3kes\",\r\n    \"2anki\",\r\n    \"an2kid\",\r\n    \"an2klö\",\r\n    \"an2klu\",\r\n    \"ank3no\",\r\n    \"an4k3opf\",\r\n    \"an2kor\",\r\n    \"ank1r\",\r\n    \"ank3ra\",\r\n    \"an4kras\",\r\n    \"ank3rä\",\r\n    \"an2kro\",\r\n    \"2anks\",\r\n    \"ank3se\",\r\n    \"anks2p\",\r\n    \"2ankt4\",\r\n    \"1anl\",\r\n    \"2anlad\",\r\n    \"3anlag\",\r\n    \"2anmo\",\r\n    \"1anmu\",\r\n    \"2ann.\",\r\n    \"1annah\",\r\n    \"an2nar\",\r\n    \"an3ne\",\r\n    \"an4nef\",\r\n    \"an4nei\",\r\n    \"an4nene\",\r\n    \"annen3s4\",\r\n    \"ann2er\",\r\n    \"2anns\",\r\n    \"ann4s3p\",\r\n    \"2annt\",\r\n    \"2ano.\",\r\n    \"1an1od\",\r\n    \"2anof\",\r\n    \"2anog\",\r\n    \"2a3nol\",\r\n    \"ano2la\",\r\n    \"1a2nom\",\r\n    \"a3nom.\",\r\n    \"2anoo\",\r\n    \"a2n1or\",\r\n    \"ano2ri\",\r\n    \"2a3nos\",\r\n    \"2a1nö\",\r\n    \"2anpu\",\r\n    \"1anr\",\r\n    \"2anrö\",\r\n    \"an4same\",\r\n    \"an3sar\",\r\n    \"1an3s2ä\",\r\n    \"3anschr\",\r\n    \"an3skr\",\r\n    \"ans1pa\",\r\n    \"ans3pon\",\r\n    \"1anspr\",\r\n    \"1anst\",\r\n    \"an3s2z\",\r\n    \"2ant.\",\r\n    \"ant3ar\",\r\n    \"anta4re\",\r\n    \"an3t2ä\",\r\n    \"1antá\",\r\n    \"3antei\",\r\n    \"an3tha\",\r\n    \"2antie\",\r\n    \"3antise\",\r\n    \"anton2\",\r\n    \"1antr\",\r\n    \"ant3rin\",\r\n    \"1antw\",\r\n    \"2anu\",\r\n    \"anu3r\",\r\n    \"anu1s\",\r\n    \"a1nü\",\r\n    \"1anw\",\r\n    \"2anwi\",\r\n    \"an2zä\",\r\n    \"2anzb\",\r\n    \"2anzd\",\r\n    \"1anzei\",\r\n    \"anz3elf\",\r\n    \"anze2n\",\r\n    \"2anzes\",\r\n    \"2anzg\",\r\n    \"2anzh\",\r\n    \"anzi2d\",\r\n    \"an2z1i4n\",\r\n    \"2anzk\",\r\n    \"2anzm\",\r\n    \"2anzr\",\r\n    \"2anzs\",\r\n    \"2anzt\",\r\n    \"1anzü\",\r\n    \"3anzün\",\r\n    \"2anzv\",\r\n    \"2anzw\",\r\n    \"an2zwi\",\r\n    \"2anzy\",\r\n    \"2ao\",\r\n    \"aof4\",\r\n    \"ao3i\",\r\n    \"a1op\",\r\n    \"aopf4\",\r\n    \"a1or\",\r\n    \"a1os5\",\r\n    \"aost2\",\r\n    \"a3ot.\",\r\n    \"ao3t4s\",\r\n    \"2a1ö2\",\r\n    \"a1p\",\r\n    \"4ap.\",\r\n    \"ap4a\",\r\n    \"apa3b\",\r\n    \"a2pe.\",\r\n    \"a3pel\",\r\n    \"a2pé\",\r\n    \"a2pf\",\r\n    \"ap2fa\",\r\n    \"1apfel\",\r\n    \"2apfes\",\r\n    \"a3pfl\",\r\n    \"a2pht\",\r\n    \"2api\",\r\n    \"2apl\",\r\n    \"ap4la\",\r\n    \"a3plä\",\r\n    \"ap3le\",\r\n    \"ap3li\",\r\n    \"ap2n\",\r\n    \"3a2pos\",\r\n    \"a2pot\",\r\n    \"ap3pu\",\r\n    \"2apr\",\r\n    \"ap2so\",\r\n    \"aps4ter\",\r\n    \"ap5t2\",\r\n    \"2a3pu\",\r\n    \"2ar.\",\r\n    \"a1ra\",\r\n    \"a3ra.\",\r\n    \"ar2ab\",\r\n    \"2ar3abb\",\r\n    \"ar3abf\",\r\n    \"ar3abt\",\r\n    \"ara3d2\",\r\n    \"ar3adr\",\r\n    \"ara3ge\",\r\n    \"2a2r3al\",\r\n    \"a3r4ale\",\r\n    \"a3rali\",\r\n    \"a3ralo\",\r\n    \"2aran\",\r\n    \"a2r1ang\",\r\n    \"a2r1anz\",\r\n    \"2arap\",\r\n    \"a4r3app\",\r\n    \"2a2rar\",\r\n    \"ara2st\",\r\n    \"ar2asy\",\r\n    \"4arat\",\r\n    \"a2r1au\",\r\n    \"a1rä\",\r\n    \"ar1äs\",\r\n    \"1arb\",\r\n    \"2arb.\",\r\n    \"2arba\",\r\n    \"ar2bak\",\r\n    \"ar2b3at\",\r\n    \"ar2bau\",\r\n    \"4arbef\",\r\n    \"ar4b3ein\",\r\n    \"2arbek\",\r\n    \"2arben\",\r\n    \"2arber\",\r\n    \"arb3erl\",\r\n    \"4arbi\",\r\n    \"2ar2bl\",\r\n    \"2arbo\",\r\n    \"2arb1r\",\r\n    \"2arbs2\",\r\n    \"arb3sk\",\r\n    \"arb3so\",\r\n    \"2arb3t2\",\r\n    \"2arbu\",\r\n    \"1ar1c\",\r\n    \"2archl\",\r\n    \"2archr\",\r\n    \"ar2dau\",\r\n    \"arde4i\",\r\n    \"ar2dop\",\r\n    \"ar2d3r\",\r\n    \"ar2du\",\r\n    \"a2rea\",\r\n    \"are5aler\",\r\n    \"a2reb4\",\r\n    \"aree2\",\r\n    \"ar1eff\",\r\n    \"a2reh\",\r\n    \"ar1ehr\",\r\n    \"2arei\",\r\n    \"a3rei.\",\r\n    \"ar1eid\",\r\n    \"a3reie\",\r\n    \"a3reih\",\r\n    \"areim3\",\r\n    \"a2rein\",\r\n    \"arein4b\",\r\n    \"arein4s\",\r\n    \"arein4t\",\r\n    \"a2rele\",\r\n    \"4arem\",\r\n    \"4aren.\",\r\n    \"aren6sem\",\r\n    \"are3r2a\",\r\n    \"arer2e\",\r\n    \"a4r3erei\",\r\n    \"a2rerg\",\r\n    \"a2rer3h\",\r\n    \"a2reri\",\r\n    \"a2rerk\",\r\n    \"a2rerl\",\r\n    \"a2rert\",\r\n    \"ar2erw\",\r\n    \"2ares\",\r\n    \"ar2et\",\r\n    \"are3u\",\r\n    \"a2rev\",\r\n    \"arf1r\",\r\n    \"arf3ra\",\r\n    \"arf2sp\",\r\n    \"4arg.\",\r\n    \"ar3gan\",\r\n    \"ar2gl\",\r\n    \"ar4gn\",\r\n    \"2arg4o\",\r\n    \"ar3g4r\",\r\n    \"arg4s\",\r\n    \"2arh\",\r\n    \"2ari\",\r\n    \"ar2ia\",\r\n    \"a2rid\",\r\n    \"ari3e2n\",\r\n    \"ari3erd\",\r\n    \"ari3erg\",\r\n    \"arin3it\",\r\n    \"arin3s4\",\r\n    \"ar1int\",\r\n    \"a3r4io\",\r\n    \"ar2ir\",\r\n    \"ar4is\",\r\n    \"ari2su\",\r\n    \"a3riu\",\r\n    \"ar2kal\",\r\n    \"ar2k1ar\",\r\n    \"ark3aue\",\r\n    \"arker2\",\r\n    \"ar2kil\",\r\n    \"2ark3l\",\r\n    \"ar4klag\",\r\n    \"ar2kle\",\r\n    \"ar2klo\",\r\n    \"ark4lö\",\r\n    \"ar2koa\",\r\n    \"ar2kor\",\r\n    \"ark3s4a\",\r\n    \"ark2se\",\r\n    \"ark3she\",\r\n    \"ark4tre\",\r\n    \"ar2les\",\r\n    \"ar3mad\",\r\n    \"arm1au\",\r\n    \"ar3m2ä\",\r\n    \"ar2m1eg\",\r\n    \"ar2m1ei\",\r\n    \"arm2or\",\r\n    \"ar2mum\",\r\n    \"4armü\",\r\n    \"4arn\",\r\n    \"ar2nan\",\r\n    \"arn2el\",\r\n    \"ar3ni\",\r\n    \"a1ro\",\r\n    \"arob2\",\r\n    \"4aroc\",\r\n    \"aro8ckeng\",\r\n    \"ar1o2d\",\r\n    \"ar1of\",\r\n    \"aro2fe\",\r\n    \"2a3rol\",\r\n    \"aro3m\",\r\n    \"a2r1op\",\r\n    \"a2ror\",\r\n    \"aros3\",\r\n    \"aro4st\",\r\n    \"1a2rou\",\r\n    \"a2r1ö4\",\r\n    \"2arp\",\r\n    \"arr1ac\",\r\n    \"ar2r1ad\",\r\n    \"ar2r1as\",\r\n    \"arre4n1\",\r\n    \"ar2rh\",\r\n    \"2arri\",\r\n    \"ar2r3or\",\r\n    \"ar3se\",\r\n    \"ar3s2h\",\r\n    \"ar3s2i\",\r\n    \"ars3ka\",\r\n    \"ars4kat\",\r\n    \"ar3sta\",\r\n    \"ar2tau\",\r\n    \"2artb\",\r\n    \"ar3t2e\",\r\n    \"2artei\",\r\n    \"2artex\",\r\n    \"ar3t2i\",\r\n    \"2arto\",\r\n    \"art3r\",\r\n    \"art4res\",\r\n    \"ar2tri\",\r\n    \"2arts\",\r\n    \"art3ske\",\r\n    \"art2sp\",\r\n    \"2artuc\",\r\n    \"2arty\",\r\n    \"2aru\",\r\n    \"a2r1uh\",\r\n    \"ar1um\",\r\n    \"a3rumm\",\r\n    \"a2rü\",\r\n    \"2arv\",\r\n    \"arwa2\",\r\n    \"2a3r2y\",\r\n    \"2arza\",\r\n    \"ar2zau\",\r\n    \"ar2zä\",\r\n    \"2arze\",\r\n    \"2arzi\",\r\n    \"ar2zö\",\r\n    \"1arzt\",\r\n    \"arz4tei\",\r\n    \"arz4tem\",\r\n    \"arz4ti\",\r\n    \"arz2t3r\",\r\n    \"2arzu\",\r\n    \"ar2z1w\",\r\n    \"2asa\",\r\n    \"a4s3aa\",\r\n    \"a2s3af\",\r\n    \"a3sag\",\r\n    \"a3s2al\",\r\n    \"asal2t1\",\r\n    \"as1am\",\r\n    \"as3art\",\r\n    \"asa2s\",\r\n    \"as3at\",\r\n    \"asau4f\",\r\n    \"a4s3aug\",\r\n    \"a2sä\",\r\n    \"as3ät\",\r\n    \"asbes2\",\r\n    \"a6sca\",\r\n    \"a4schec\",\r\n    \"a4schef\",\r\n    \"a4sch3ei\",\r\n    \"a6scher6g\",\r\n    \"a3s4chi\",\r\n    \"a2schm\",\r\n    \"2ascht\",\r\n    \"a3schu\",\r\n    \"a4schum\",\r\n    \"2asd\",\r\n    \"4ase\",\r\n    \"a2seb\",\r\n    \"a2sec\",\r\n    \"a2s1ef\",\r\n    \"as1eie\",\r\n    \"as1emi\",\r\n    \"a3sen.\",\r\n    \"ase4na\",\r\n    \"ase4n3o\",\r\n    \"asen6sem\",\r\n    \"as2er\",\r\n    \"as4erd\",\r\n    \"ase2re\",\r\n    \"aser6geb\",\r\n    \"a4s3erke\",\r\n    \"as4es\",\r\n    \"ase4t\",\r\n    \"a2sex\",\r\n    \"2asf\",\r\n    \"asges4\",\r\n    \"2ash\",\r\n    \"a3s2hi\",\r\n    \"as3hir\",\r\n    \"2asig\",\r\n    \"a2s3i2k\",\r\n    \"2asim\",\r\n    \"asin2g\",\r\n    \"as1inn\",\r\n    \"2asis\",\r\n    \"aska3s\",\r\n    \"as3ku\",\r\n    \"2aso\",\r\n    \"as3ob\",\r\n    \"as1of\",\r\n    \"a3sol\",\r\n    \"a3som\",\r\n    \"as1o2p\",\r\n    \"as1or\",\r\n    \"a4soz\",\r\n    \"a2sö\",\r\n    \"a2s1p\",\r\n    \"aspek6to\",\r\n    \"as2ph\",\r\n    \"a3s2pi\",\r\n    \"as3pik\",\r\n    \"as3pio\",\r\n    \"a4spir\",\r\n    \"2aspr\",\r\n    \"as2pra\",\r\n    \"2as3sa\",\r\n    \"ass2a3b\",\r\n    \"ass6aus.\",\r\n    \"ass2e\",\r\n    \"ass3ein\",\r\n    \"asse3le\",\r\n    \"ass2i\",\r\n    \"as3ski\",\r\n    \"as3so\",\r\n    \"as2spo\",\r\n    \"as2spr\",\r\n    \"as2st\",\r\n    \"as3sta\",\r\n    \"as3stei\",\r\n    \"as3sti\",\r\n    \"as3str\",\r\n    \"as3stu\",\r\n    \"2asta\",\r\n    \"a3stad\",\r\n    \"a1stas\",\r\n    \"as3tat\",\r\n    \"a3stä\",\r\n    \"as3te\",\r\n    \"ast2el\",\r\n    \"ast2er\",\r\n    \"as4t3ese\",\r\n    \"as4tex\",\r\n    \"as2th\",\r\n    \"ast2id\",\r\n    \"as3tie\",\r\n    \"as3til\",\r\n    \"as3to\",\r\n    \"as4tof\",\r\n    \"ast3orc\",\r\n    \"a1str\",\r\n    \"ast3re\",\r\n    \"as3t4ren\",\r\n    \"as6t5ritt\",\r\n    \"ast5roll\",\r\n    \"as3tub\",\r\n    \"2asu\",\r\n    \"as2ur\",\r\n    \"asu4s3\",\r\n    \"a2sü\",\r\n    \"aswa2s\",\r\n    \"1asy\",\r\n    \"3asyl\",\r\n    \"2asys\",\r\n    \"a1ß\",\r\n    \"aße4\",\r\n    \"aß2en3\",\r\n    \"2a1t\",\r\n    \"4ata\",\r\n    \"at1abe\",\r\n    \"at1abr\",\r\n    \"at2a1f\",\r\n    \"a5ta3g\",\r\n    \"at2ago\",\r\n    \"ata3la\",\r\n    \"a3tam\",\r\n    \"at1apf\",\r\n    \"at2ast\",\r\n    \"at3att\",\r\n    \"a2t1au\",\r\n    \"at1än\",\r\n    \"4atb\",\r\n    \"at2c\",\r\n    \"a2teb\",\r\n    \"a3tec\",\r\n    \"ateien6d\",\r\n    \"at1eig\",\r\n    \"3a2teli\",\r\n    \"3a2temg\",\r\n    \"at2en\",\r\n    \"ate4na\",\r\n    \"aten3s4e\",\r\n    \"a2tep\",\r\n    \"4ater\",\r\n    \"ate3r4al\",\r\n    \"ate3ran\",\r\n    \"at4ere\",\r\n    \"atern2\",\r\n    \"ater3st\",\r\n    \"ate2ru\",\r\n    \"4ates\",\r\n    \"ates4sa\",\r\n    \"a3tet\",\r\n    \"at2eu\",\r\n    \"a2tew\",\r\n    \"4atha\",\r\n    \"at3hag\",\r\n    \"at3hal\",\r\n    \"a3t2heb\",\r\n    \"ath3in.\",\r\n    \"3athl\",\r\n    \"a4thr\",\r\n    \"at2hu\",\r\n    \"at3hü\",\r\n    \"4a3ti\",\r\n    \"ati4kab\",\r\n    \"ati6k5erw\",\r\n    \"a4tinf\",\r\n    \"at2is\",\r\n    \"ati2sa\",\r\n    \"ati2se\",\r\n    \"a4tiso\",\r\n    \"atis3s\",\r\n    \"ati6v5erf\",\r\n    \"3atla\",\r\n    \"4atli\",\r\n    \"3atm\",\r\n    \"4atma\",\r\n    \"4atmä\",\r\n    \"4atmus\",\r\n    \"a2t1ob\",\r\n    \"3a2t4om\",\r\n    \"atom1e\",\r\n    \"ato2mo\",\r\n    \"at1op\",\r\n    \"at1ort\",\r\n    \"a3to3s\",\r\n    \"atra4t\",\r\n    \"a2t3rau\",\r\n    \"a2t3rä\",\r\n    \"at3re\",\r\n    \"at3rin\",\r\n    \"at3rom\",\r\n    \"at4ron\",\r\n    \"at3rot\",\r\n    \"at3rü\",\r\n    \"at2sa\",\r\n    \"at4schn\",\r\n    \"at2se\",\r\n    \"ats1e2h\",\r\n    \"at2si\",\r\n    \"ats1in\",\r\n    \"at2s1o\",\r\n    \"at2s1p\",\r\n    \"ats3tät\",\r\n    \"at2su\",\r\n    \"at3ta\",\r\n    \"3attac\",\r\n    \"at4tad\",\r\n    \"at4t1ak\",\r\n    \"atta2l\",\r\n    \"at4tale\",\r\n    \"at4tals\",\r\n    \"at4tang\",\r\n    \"at4tar\",\r\n    \"at4tau\",\r\n    \"at2tä\",\r\n    \"4atte.\",\r\n    \"at2t3ec\",\r\n    \"at2tei\",\r\n    \"at3t2el\",\r\n    \"4at5ter\",\r\n    \"at3thä\",\r\n    \"at3ti\",\r\n    \"4atto\",\r\n    \"at2tob\",\r\n    \"at2t3rä\",\r\n    \"att3s2\",\r\n    \"at3t2u\",\r\n    \"4atu\",\r\n    \"a3tub\",\r\n    \"atu2n\",\r\n    \"a3tü\",\r\n    \"atze4l\",\r\n    \"atz3ela\",\r\n    \"atz3elt\",\r\n    \"at2zem\",\r\n    \"at2z1er\",\r\n    \"a3tzere\",\r\n    \"at2z1in\",\r\n    \"atz3t2\",\r\n    \"at2z1w\",\r\n    \"a2u\",\r\n    \"2au.\",\r\n    \"2au3a2\",\r\n    \"2aub\",\r\n    \"au2bab\",\r\n    \"au2ban\",\r\n    \"au2b1au\",\r\n    \"aube4n\",\r\n    \"au2beu\",\r\n    \"au2blä\",\r\n    \"au2bli\",\r\n    \"au2blo\",\r\n    \"au2blu\",\r\n    \"aub2si\",\r\n    \"2auc\",\r\n    \"au2dr\",\r\n    \"2aue\",\r\n    \"aue2b\",\r\n    \"au2ere\",\r\n    \"aue3rei\",\r\n    \"auer3ö\",\r\n    \"au5erst.\",\r\n    \"au3ert\",\r\n    \"aue2s\",\r\n    \"au2fa\",\r\n    \"auf1ak\",\r\n    \"auf1an\",\r\n    \"2aufe.\",\r\n    \"2aufeh\",\r\n    \"4aufen.\",\r\n    \"3aufent\",\r\n    \"auf1er\",\r\n    \"au4fer4k\",\r\n    \"au2feu\",\r\n    \"auff4\",\r\n    \"auf3ind\",\r\n    \"1aufla\",\r\n    \"1aufn\",\r\n    \"2aufo\",\r\n    \"auf3ski\",\r\n    \"auf3t2\",\r\n    \"2auft.\",\r\n    \"2aug\",\r\n    \"au2ga\",\r\n    \"au3g2ar\",\r\n    \"4augeb\",\r\n    \"4augeh\",\r\n    \"4augel\",\r\n    \"aug2er\",\r\n    \"4augl\",\r\n    \"4augr\",\r\n    \"au3gu\",\r\n    \"au3h\",\r\n    \"2au1i\",\r\n    \"au2is\",\r\n    \"4auj\",\r\n    \"auk3t\",\r\n    \"aule2s\",\r\n    \"aul4les\",\r\n    \"au3lü\",\r\n    \"4aum\",\r\n    \"au2mal\",\r\n    \"aume4n\",\r\n    \"au4m3ent\",\r\n    \"au2m1e2r1\",\r\n    \"aum3eri\",\r\n    \"au2m1id\",\r\n    \"au4mil\",\r\n    \"au4mit\",\r\n    \"au2m1o\",\r\n    \"aumo2r\",\r\n    \"aum3p2\",\r\n    \"aum3s6\",\r\n    \"au4mun\",\r\n    \"4aun\",\r\n    \"au3n2a\",\r\n    \"aun2e\",\r\n    \"au4n3ei\",\r\n    \"au2nio\",\r\n    \"au2no\",\r\n    \"au3nu\",\r\n    \"a4unz\",\r\n    \"2aup2\",\r\n    \"2aur2\",\r\n    \"au1rh\",\r\n    \"aurü3\",\r\n    \"au2s1ah\",\r\n    \"ausan8ne.\",\r\n    \"au2sas\",\r\n    \"au2sau\",\r\n    \"2ausc\",\r\n    \"au6schmi\",\r\n    \"1ausd\",\r\n    \"2ause.\",\r\n    \"au4s1eh\",\r\n    \"2ausen\",\r\n    \"au4s3erb\",\r\n    \"au4serf\",\r\n    \"au4s3erk\",\r\n    \"aus3erp\",\r\n    \"au4serw\",\r\n    \"1ausg\",\r\n    \"au2sin\",\r\n    \"au2sis\",\r\n    \"1ausl\",\r\n    \"au2so\",\r\n    \"aus1or\",\r\n    \"au2spr\",\r\n    \"1ausr\",\r\n    \"auss2\",\r\n    \"3aussag\",\r\n    \"aus4se.\",\r\n    \"aus3st\",\r\n    \"aust2a\",\r\n    \"2auste\",\r\n    \"au5stein\",\r\n    \"aust2o\",\r\n    \"aus5tri\",\r\n    \"3ausü\",\r\n    \"1ausw\",\r\n    \"1ausz\",\r\n    \"auße2\",\r\n    \"2aut.\",\r\n    \"au2tab\",\r\n    \"au2t1äu\",\r\n    \"2autb\",\r\n    \"2aute\",\r\n    \"au4t1e2l\",\r\n    \"au4ten4g\",\r\n    \"au4t3erh\",\r\n    \"aut5ero\",\r\n    \"2autg\",\r\n    \"au2thy\",\r\n    \"1auto\",\r\n    \"au4trö\",\r\n    \"2auts\",\r\n    \"2auu\",\r\n    \"2auv\",\r\n    \"auve4\",\r\n    \"2auw\",\r\n    \"2aux\",\r\n    \"2auz\",\r\n    \"auz2w\",\r\n    \"2a1ü\",\r\n    \"a1v\",\r\n    \"av2a\",\r\n    \"a3vang\",\r\n    \"avas4\",\r\n    \"ava3t2\",\r\n    \"avener4\",\r\n    \"2avi\",\r\n    \"a2v3r\",\r\n    \"2a1w\",\r\n    \"awi3e\",\r\n    \"a2wr\",\r\n    \"a1x\",\r\n    \"ax2am\",\r\n    \"a2xans\",\r\n    \"a3x2e\",\r\n    \"a3xid\",\r\n    \"a2xio\",\r\n    \"axis1\",\r\n    \"2a1ya\",\r\n    \"a1yeu\",\r\n    \"ayma4\",\r\n    \"ay1of\",\r\n    \"ays2\",\r\n    \"aysi1\",\r\n    \"ay3t\",\r\n    \"a1z\",\r\n    \"az4a\",\r\n    \"a3za3d\",\r\n    \"3azal\",\r\n    \"a3z2i\",\r\n    \"az2o\",\r\n    \"a3z2u\",\r\n    \"az2zen\",\r\n    \"az2zw\",\r\n    \"ä1a\",\r\n    \"1ää\",\r\n    \"2ä1b\",\r\n    \"ä2b3l\",\r\n    \"äb2s\",\r\n    \"äbte1\",\r\n    \"ä1ce\",\r\n    \"ä1che\",\r\n    \"äche1e\",\r\n    \"äche4n\",\r\n    \"ä1chi\",\r\n    \"äch3l\",\r\n    \"ä2chr\",\r\n    \"äch4sa\",\r\n    \"äch2s1o\",\r\n    \"äch2sp\",\r\n    \"äch2st\",\r\n    \"ächt4e\",\r\n    \"ä1chu\",\r\n    \"ä1ck\",\r\n    \"ä1d\",\r\n    \"ä2da\",\r\n    \"äde1s2\",\r\n    \"ä2d1ia\",\r\n    \"ä2d3r\",\r\n    \"äd2s\",\r\n    \"äd3te\",\r\n    \"2ä1e\",\r\n    \"äe4k\",\r\n    \"ä3eu\",\r\n    \"äe2x\",\r\n    \"äfe4n\",\r\n    \"äf2fl\",\r\n    \"äfig3\",\r\n    \"äf3l\",\r\n    \"äf3r\",\r\n    \"äf4ro\",\r\n    \"äf2s\",\r\n    \"äf3t2e\",\r\n    \"äft4s3\",\r\n    \"ä1g\",\r\n    \"ä2g1a\",\r\n    \"1ä2gä\",\r\n    \"ägd2\",\r\n    \"ägen4e\",\r\n    \"äge2r3a\",\r\n    \"äge3s\",\r\n    \"ä2g3l\",\r\n    \"äg2n\",\r\n    \"ä2g3r\",\r\n    \"äg4ra\",\r\n    \"ägst2\",\r\n    \"äg3sta\",\r\n    \"äg3str\",\r\n    \"1ä2gy\",\r\n    \"äh1a\",\r\n    \"2ä3he\",\r\n    \"ä4h1ei\",\r\n    \"äher8gebn\",\r\n    \"äher5t\",\r\n    \"ä1hi\",\r\n    \"äh1in\",\r\n    \"ähl1a\",\r\n    \"äh3l2e\",\r\n    \"äh4l3e4be\",\r\n    \"äh5ler\",\r\n    \"2ähm\",\r\n    \"äh3na\",\r\n    \"äh3ne\",\r\n    \"1ähnl\",\r\n    \"2ähr\",\r\n    \"äh2rel\",\r\n    \"äh3ri\",\r\n    \"2ähs\",\r\n    \"2äht\",\r\n    \"ä1hu\",\r\n    \"äh1w\",\r\n    \"2äi\",\r\n    \"ä1im\",\r\n    \"ä2is\",\r\n    \"ä3is.\",\r\n    \"ä3isch.\",\r\n    \"ä3isk\",\r\n    \"ä1j\",\r\n    \"ä1k\",\r\n    \"äka2la\",\r\n    \"äk3l\",\r\n    \"ä2kle\",\r\n    \"äk4li\",\r\n    \"ä2k3r\",\r\n    \"ä1la\",\r\n    \"älbe2\",\r\n    \"äl4bl\",\r\n    \"älk3\",\r\n    \"älks4\",\r\n    \"äl2l1a\",\r\n    \"äl2p3\",\r\n    \"äl4schl\",\r\n    \"äl2st\",\r\n    \"ält2e\",\r\n    \"älte1i\",\r\n    \"ä1lu\",\r\n    \"2äm4a3\",\r\n    \"ä3me\",\r\n    \"ämer2s\",\r\n    \"ämi3en\",\r\n    \"2äml\",\r\n    \"ämoni3e\",\r\n    \"2ämp\",\r\n    \"ämp7f4e\",\r\n    \"äm2s\",\r\n    \"ämt2e\",\r\n    \"ämter3\",\r\n    \"2än.\",\r\n    \"än2dr\",\r\n    \"2än2e\",\r\n    \"äne2n1\",\r\n    \"äne1s\",\r\n    \"2än2f5\",\r\n    \"änft2\",\r\n    \"4än3g2e\",\r\n    \"änge4ra\",\r\n    \"2än2gl\",\r\n    \"äng3le\",\r\n    \"än2gr\",\r\n    \"äng3se\",\r\n    \"2ä3ni\",\r\n    \"än3k2e\",\r\n    \"än2k3l\",\r\n    \"än2kr\",\r\n    \"änk2s\",\r\n    \"2änn\",\r\n    \"än3n4e2\",\r\n    \"2äns\",\r\n    \"än4s1a\",\r\n    \"än2s1c\",\r\n    \"äns2e\",\r\n    \"2änz\",\r\n    \"ä1on\",\r\n    \"äo3s2\",\r\n    \"ä1pa\",\r\n    \"1äpfel\",\r\n    \"äp2pl\",\r\n    \"äp2pr\",\r\n    \"äp2s1c\",\r\n    \"äp4st\",\r\n    \"1äq\",\r\n    \"ä2r3a4\",\r\n    \"är4af\",\r\n    \"är1ä\",\r\n    \"är2b3le\",\r\n    \"är1c\",\r\n    \"2ärd\",\r\n    \"ärde4s\",\r\n    \"2äre\",\r\n    \"ä2r1ei\",\r\n    \"ä2r1e2l\",\r\n    \"äre2m\",\r\n    \"är1emi\",\r\n    \"äre2n\",\r\n    \"ä2rene\",\r\n    \"ä2rerh\",\r\n    \"är2es\",\r\n    \"ärf2s\",\r\n    \"är3ge\",\r\n    \"ärg4s\",\r\n    \"ä2r1ind\",\r\n    \"är1int\",\r\n    \"är3ke\",\r\n    \"ärk2s\",\r\n    \"ärm3arm\",\r\n    \"ärm3at\",\r\n    \"ärme1e\",\r\n    \"ärm3ent\",\r\n    \"ärm2s\",\r\n    \"är1ob\",\r\n    \"är1of\",\r\n    \"ä1rö\",\r\n    \"är3re\",\r\n    \"ärse2\",\r\n    \"är2seb\",\r\n    \"är4seh\",\r\n    \"ärs1er\",\r\n    \"är2si\",\r\n    \"är3spu\",\r\n    \"är2st\",\r\n    \"är3str\",\r\n    \"2ärt\",\r\n    \"ärt4e\",\r\n    \"är2th\",\r\n    \"ärt2s3\",\r\n    \"ä2rü\",\r\n    \"1ärz\",\r\n    \"är2zu\",\r\n    \"är2zw\",\r\n    \"2ä3s2e\",\r\n    \"äse3g\",\r\n    \"äse1i4\",\r\n    \"äse5ref\",\r\n    \"äser4ei\",\r\n    \"äse4ren\",\r\n    \"äser2i\",\r\n    \"ä3s2kr\",\r\n    \"ä2s1p\",\r\n    \"2äs2s1c\",\r\n    \"äss2e\",\r\n    \"äss5erkr\",\r\n    \"äss5ersa\",\r\n    \"äss3erw\",\r\n    \"äs2sp\",\r\n    \"äs2s3t\",\r\n    \"ä4s3t\",\r\n    \"äst4e\",\r\n    \"1ästh\",\r\n    \"äs4tr\",\r\n    \"ä3su\",\r\n    \"ä1ß\",\r\n    \"äß1erk\",\r\n    \"äß1ers\",\r\n    \"ä2t3a2\",\r\n    \"2ä3te\",\r\n    \"äte3a\",\r\n    \"äte1e\",\r\n    \"äte1i\",\r\n    \"äte3l2\",\r\n    \"äte2n\",\r\n    \"äteo2\",\r\n    \"äter4bl\",\r\n    \"ät2et\",\r\n    \"ät1id\",\r\n    \"ät1ob\",\r\n    \"ä2t3r\",\r\n    \"ät4s3a\",\r\n    \"ät2sä\",\r\n    \"ät4schl\",\r\n    \"ät4schr\",\r\n    \"ät2s1i2\",\r\n    \"äts3l\",\r\n    \"äts1or\",\r\n    \"ät2s1p\",\r\n    \"ät2s3t\",\r\n    \"ät2su\",\r\n    \"ät2tei\",\r\n    \"ätte4n\",\r\n    \"ät4tr\",\r\n    \"ätze3l\",\r\n    \"ät2zw\",\r\n    \"2äub\",\r\n    \"äu2b3l\",\r\n    \"äu2br\",\r\n    \"äu1c\",\r\n    \"äu3d\",\r\n    \"äude3\",\r\n    \"äuder2\",\r\n    \"2ä2uf\",\r\n    \"1äug\",\r\n    \"äug3l\",\r\n    \"2äul\",\r\n    \"2äum\",\r\n    \"äu2ma\",\r\n    \"äum3p\",\r\n    \"äumpf4\",\r\n    \"äum4s5\",\r\n    \"2ä2un\",\r\n    \"äun2e\",\r\n    \"äu3nu\",\r\n    \"2äu3r2\",\r\n    \"äure1\",\r\n    \"2ä3us.\",\r\n    \"2äusc\",\r\n    \"äu4schi\",\r\n    \"äu4schm\",\r\n    \"äu3s2e\",\r\n    \"äuse1i\",\r\n    \"ä3usg\",\r\n    \"ä3usk\",\r\n    \"ä3usn\",\r\n    \"äu2s1p\",\r\n    \"äus2s1c\",\r\n    \"1äuß\",\r\n    \"äut2e\",\r\n    \"äu2tr\",\r\n    \"ä1v\",\r\n    \"ä2vi\",\r\n    \"1äx\",\r\n    \"ä1z\",\r\n    \"ä3ze\",\r\n    \"â1t\",\r\n    \"á1n\",\r\n    \"3ba.\",\r\n    \"b2aa\",\r\n    \"b3a2ba\",\r\n    \"2babf\",\r\n    \"2babg\",\r\n    \"ba2bl\",\r\n    \"ba2br\",\r\n    \"2b1abs\",\r\n    \"bach7t4e\",\r\n    \"ba4ck3er\",\r\n    \"back3s4\",\r\n    \"ba3d2e\",\r\n    \"bade1i\",\r\n    \"2b1adel\",\r\n    \"2b1adl\",\r\n    \"2b1adm\",\r\n    \"b1a2dr\",\r\n    \"ba2du\",\r\n    \"2b1af\",\r\n    \"3bah\",\r\n    \"bah6nene\",\r\n    \"bai3d\",\r\n    \"bais2\",\r\n    \"b2ak\",\r\n    \"ba2ka\",\r\n    \"ba2k1er\",\r\n    \"ba2k1i\",\r\n    \"ba2k5l\",\r\n    \"ba2k3r\",\r\n    \"ba2lab\",\r\n    \"ba2l1ak\",\r\n    \"ba3lal\",\r\n    \"ba2lau\",\r\n    \"baler2\",\r\n    \"ba4l3erk\",\r\n    \"balk4a\",\r\n    \"balke4\",\r\n    \"bal4l3eh\",\r\n    \"bal4l3ei\",\r\n    \"bal6lerg\",\r\n    \"ball6erk\",\r\n    \"2b1am\",\r\n    \"b2a3ma\",\r\n    \"ba2me\",\r\n    \"4bamt\",\r\n    \"ban2a\",\r\n    \"3b2and\",\r\n    \"band1a\",\r\n    \"ban4dal\",\r\n    \"ban4dan\",\r\n    \"ban4dar\",\r\n    \"ban6deng\",\r\n    \"ban2dr\",\r\n    \"ba3n2e\",\r\n    \"2banf\",\r\n    \"b1ang\",\r\n    \"ban3gl\",\r\n    \"ban4k1a\",\r\n    \"banker4\",\r\n    \"ban2kl\",\r\n    \"ban2kn\",\r\n    \"ban2kr\",\r\n    \"ban2ku\",\r\n    \"2banl\",\r\n    \"b1anna\",\r\n    \"ban2o\",\r\n    \"2b1ans\",\r\n    \"b1ant\",\r\n    \"2banw\",\r\n    \"b1anz\",\r\n    \"ba2r3ab\",\r\n    \"ba2rad\",\r\n    \"bar3ast\",\r\n    \"ba2rat\",\r\n    \"bar3de\",\r\n    \"ba2rei\",\r\n    \"ba3r2en\",\r\n    \"barer5ei\",\r\n    \"barer4t\",\r\n    \"barf4\",\r\n    \"3bar2s\",\r\n    \"bar3sc\",\r\n    \"b1arz\",\r\n    \"bar3zw\",\r\n    \"3b2as\",\r\n    \"ba3sa\",\r\n    \"ba2sc\",\r\n    \"bas2i\",\r\n    \"bas4sa\",\r\n    \"bas4st\",\r\n    \"ba2st\",\r\n    \"ba4t3ent\",\r\n    \"bat2o\",\r\n    \"3bau.\",\r\n    \"bau3b\",\r\n    \"bauer4l\",\r\n    \"bauer4s\",\r\n    \"bauer4w\",\r\n    \"bau1fl\",\r\n    \"bau1fr\",\r\n    \"bau3g2\",\r\n    \"b2auk\",\r\n    \"bau3r\",\r\n    \"bau1s\",\r\n    \"bau3s2k\",\r\n    \"baus4t\",\r\n    \"b1a2x\",\r\n    \"ba1yo\",\r\n    \"3b2ä1c\",\r\n    \"3b2äd\",\r\n    \"2b1äh\",\r\n    \"b2äl\",\r\n    \"2bärz\",\r\n    \"b2äs\",\r\n    \"2bäug\",\r\n    \"4b1b\",\r\n    \"b3be\",\r\n    \"bbe4n3\",\r\n    \"bbens2\",\r\n    \"bbe4p\",\r\n    \"bb3le.\",\r\n    \"bb2lö\",\r\n    \"b3brec\",\r\n    \"b3bru\",\r\n    \"bbru2c\",\r\n    \"bb2s\",\r\n    \"bbu1\",\r\n    \"4b1c\",\r\n    \"2b5d2\",\r\n    \"bdä4\",\r\n    \"bdän3\",\r\n    \"bde1s\",\r\n    \"bdome4\",\r\n    \"1be.\",\r\n    \"3bea\",\r\n    \"be3ab\",\r\n    \"be3an\",\r\n    \"beat2m\",\r\n    \"be3au\",\r\n    \"be4au.\",\r\n    \"3beb\",\r\n    \"b1ebb\",\r\n    \"1be1c\",\r\n    \"2becht\",\r\n    \"2b1e2del\",\r\n    \"bedi4\",\r\n    \"be1e2h\",\r\n    \"bee2l\",\r\n    \"be3ela\",\r\n    \"bee4rei\",\r\n    \"be1erh\",\r\n    \"be1erl\",\r\n    \"be1ert\",\r\n    \"be1eta\",\r\n    \"bef4\",\r\n    \"2b1eff\",\r\n    \"be3g4\",\r\n    \"be2he.\",\r\n    \"beh5ri\",\r\n    \"bei3b\",\r\n    \"2b1eier\",\r\n    \"bei1f4\",\r\n    \"bei4ge.\",\r\n    \"beige4l\",\r\n    \"beige4p\",\r\n    \"bei3k4\",\r\n    \"bei3l2a\",\r\n    \"2b1eime\",\r\n    \"be1ind\",\r\n    \"be1inh\",\r\n    \"bein6hal\",\r\n    \"bein4hi\",\r\n    \"bei3sc\",\r\n    \"beis2e\",\r\n    \"bei1s4t\",\r\n    \"beit4e\",\r\n    \"beit2s\",\r\n    \"beit4sk\",\r\n    \"beits3p\",\r\n    \"3bek\",\r\n    \"3bel\",\r\n    \"be3lag\",\r\n    \"be3las\",\r\n    \"bel3d\",\r\n    \"be3lec\",\r\n    \"4be2lek\",\r\n    \"be2l1en\",\r\n    \"bel3ere\",\r\n    \"be2let\",\r\n    \"bel3f\",\r\n    \"beli4e\",\r\n    \"bel3la\",\r\n    \"belle4n3\",\r\n    \"bel3li\",\r\n    \"bel3om\",\r\n    \"be2löf\",\r\n    \"bel3sz\",\r\n    \"belt2\",\r\n    \"bel4un\",\r\n    \"1bem4\",\r\n    \"3b2em.\",\r\n    \"3b2e3ma\",\r\n    \"2b1emp\",\r\n    \"2bemul\",\r\n    \"1ben\",\r\n    \"be5nabe\",\r\n    \"ben3ar\",\r\n    \"be4nas\",\r\n    \"be4nat\",\r\n    \"be2nä\",\r\n    \"b2ene\",\r\n    \"be3nei\",\r\n    \"be4n3end\",\r\n    \"be4ners\",\r\n    \"ben2eu\",\r\n    \"3beng\",\r\n    \"be2nid\",\r\n    \"be4nis\",\r\n    \"ben3n\",\r\n    \"5benp\",\r\n    \"b2ens\",\r\n    \"ben4s3pa\",\r\n    \"ben4spr\",\r\n    \"benst4\",\r\n    \"3bensz\",\r\n    \"2b1entb\",\r\n    \"2bentd\",\r\n    \"4benteu\",\r\n    \"2bentf\",\r\n    \"ben3th\",\r\n    \"ben6thei\",\r\n    \"ben5t4r\",\r\n    \"2b1ents\",\r\n    \"2b3entw\",\r\n    \"ben3un\",\r\n    \"b2en3z2\",\r\n    \"be1o\",\r\n    \"2b1epi\",\r\n    \"2bepoc\",\r\n    \"be1ra\",\r\n    \"be2rak\",\r\n    \"be2r3am\",\r\n    \"be2ran\",\r\n    \"bera2s\",\r\n    \"berb2\",\r\n    \"berbla4\",\r\n    \"ber3d\",\r\n    \"be2r1e2b\",\r\n    \"be4reck\",\r\n    \"be4r3eiw\",\r\n    \"bere2m\",\r\n    \"be4rene\",\r\n    \"ber4erg\",\r\n    \"ber4erw\",\r\n    \"bere4sc\",\r\n    \"bere4t\",\r\n    \"berf4\",\r\n    \"ber4g3af\",\r\n    \"ber4gal\",\r\n    \"ber4gli\",\r\n    \"ber4hab\",\r\n    \"beri2d\",\r\n    \"ber4in.\",\r\n    \"be5r6inne\",\r\n    \"berin4s\",\r\n    \"be2ri4o\",\r\n    \"ber3iss\",\r\n    \"ber3ko\",\r\n    \"ber3kr\",\r\n    \"ber3n2a\",\r\n    \"bern2e\",\r\n    \"b1ernt\",\r\n    \"be2rö\",\r\n    \"3bers.\",\r\n    \"ber5se\",\r\n    \"ber3st4a\",\r\n    \"bert2a\",\r\n    \"bert2e\",\r\n    \"bert2i\",\r\n    \"berz2\",\r\n    \"ber3ze\",\r\n    \"ber2zö\",\r\n    \"3b2e1s\",\r\n    \"be3sa\",\r\n    \"bes4abb\",\r\n    \"bes2am\",\r\n    \"bes2an\",\r\n    \"be4sap\",\r\n    \"be4sar\",\r\n    \"bes2au\",\r\n    \"be2sep\",\r\n    \"be2s1er\",\r\n    \"be2s1id\",\r\n    \"bes2po\",\r\n    \"bes3sa\",\r\n    \"bess4e\",\r\n    \"b3esst.\",\r\n    \"bes3sz\",\r\n    \"be4stab\",\r\n    \"beste2\",\r\n    \"be6stein\",\r\n    \"bester4\",\r\n    \"bes6terh\",\r\n    \"be4s5tol\",\r\n    \"bes4t3o4r\",\r\n    \"bes3tos\",\r\n    \"best4r\",\r\n    \"be4s3trä\",\r\n    \"be4s3tur\",\r\n    \"be2sur\",\r\n    \"be3s4ze\",\r\n    \"3bet\",\r\n    \"be3tam\",\r\n    \"be3tha\",\r\n    \"be3thi\",\r\n    \"bet2sp\",\r\n    \"be1un\",\r\n    \"be1ur\",\r\n    \"3bev\",\r\n    \"3b2ew2\",\r\n    \"2b3e2x\",\r\n    \"3b2ez\",\r\n    \"2b5f4\",\r\n    \"bfal2\",\r\n    \"bfal3t\",\r\n    \"2b1g2\",\r\n    \"b5ga\",\r\n    \"bge3\",\r\n    \"bgel2e\",\r\n    \"bge5n\",\r\n    \"bges4\",\r\n    \"2b1h2\",\r\n    \"b5hä\",\r\n    \"1bi\",\r\n    \"bi1ak\",\r\n    \"bi2ar\",\r\n    \"3bib2\",\r\n    \"bibe2\",\r\n    \"biber1\",\r\n    \"bi2c\",\r\n    \"bi3do\",\r\n    \"bien3s\",\r\n    \"bieres4\",\r\n    \"bie2s\",\r\n    \"biet2s\",\r\n    \"3bietu\",\r\n    \"biga1\",\r\n    \"bik2a\",\r\n    \"bi2ke.\",\r\n    \"bi2kes\",\r\n    \"bi2kre\",\r\n    \"3bil\",\r\n    \"bil2an\",\r\n    \"bil3ans\",\r\n    \"bil4deb\",\r\n    \"bi2lei\",\r\n    \"4billu\",\r\n    \"bi2lu\",\r\n    \"2bimp\",\r\n    \"2b1inb\",\r\n    \"bin2e\",\r\n    \"bine4n\",\r\n    \"b1inf\",\r\n    \"bin4fo\",\r\n    \"bin2g3a\",\r\n    \"2b1inh\",\r\n    \"bi2n3ok\",\r\n    \"bin4ol\",\r\n    \"2b1int\",\r\n    \"2b1inv\",\r\n    \"bi2o3\",\r\n    \"bioi2\",\r\n    \"biri1\",\r\n    \"3bis\",\r\n    \"bi3si\",\r\n    \"b1iso\",\r\n    \"bi2sp\",\r\n    \"bis2s1c\",\r\n    \"bi2st\",\r\n    \"bi3sta\",\r\n    \"bi1s4tr\",\r\n    \"b2it.\",\r\n    \"b2ita\",\r\n    \"b2ite\",\r\n    \"b2iti\",\r\n    \"bit4r\",\r\n    \"bi2tu\",\r\n    \"bi3z2\",\r\n    \"4b1j\",\r\n    \"bjek4to\",\r\n    \"2b5k4\",\r\n    \"bl4\",\r\n    \"2bl.\",\r\n    \"bla3b4\",\r\n    \"2b1lac\",\r\n    \"b3lad\",\r\n    \"b2lanc\",\r\n    \"blas3er\",\r\n    \"b2latt\",\r\n    \"b2lau.\",\r\n    \"b3laus4\",\r\n    \"2b3law\",\r\n    \"2b1län\",\r\n    \"b2läse\",\r\n    \"3blät\",\r\n    \"b2le\",\r\n    \"3ble2a\",\r\n    \"b3leb\",\r\n    \"3blec\",\r\n    \"b3leg\",\r\n    \"4bleh\",\r\n    \"b4lei.\",\r\n    \"2b3leid\",\r\n    \"2bleih\",\r\n    \"b3lein\",\r\n    \"blei3sc\",\r\n    \"2bleit\",\r\n    \"ble3l\",\r\n    \"ble2n\",\r\n    \"b3lenk\",\r\n    \"b3lese\",\r\n    \"2blesu\",\r\n    \"ble3s4z\",\r\n    \"3blet\",\r\n    \"b3leu\",\r\n    \"2blich\",\r\n    \"3blick\",\r\n    \"b2lie\",\r\n    \"2blief\",\r\n    \"4blig\",\r\n    \"b2lind\",\r\n    \"2b5ling4\",\r\n    \"b2lis\",\r\n    \"2blis.\",\r\n    \"b2lit\",\r\n    \"b3lite\",\r\n    \"b2lo\",\r\n    \"b4lo.\",\r\n    \"3b4loc\",\r\n    \"b4loi\",\r\n    \"b3los\",\r\n    \"3b4lum\",\r\n    \"2blun\",\r\n    \"b2lus\",\r\n    \"3blut\",\r\n    \"blu4tem\",\r\n    \"blut1o\",\r\n    \"3blü\",\r\n    \"2b1m\",\r\n    \"4b5n2\",\r\n    \"bnas4\",\r\n    \"bni2\",\r\n    \"bnis1\",\r\n    \"bo4a\",\r\n    \"bo5as\",\r\n    \"b1o2b\",\r\n    \"bo3ben\",\r\n    \"bob3r\",\r\n    \"bo2c\",\r\n    \"bo3ch2\",\r\n    \"bo3d2\",\r\n    \"boe1\",\r\n    \"bo2e3i\",\r\n    \"2b1of\",\r\n    \"bo3fe\",\r\n    \"bo3he\",\r\n    \"boh2ra\",\r\n    \"boh3rer\",\r\n    \"boh2u\",\r\n    \"bo1is\",\r\n    \"bo2lan\",\r\n    \"bo2lau\",\r\n    \"bol5le\",\r\n    \"3bon.\",\r\n    \"bo3n2a\",\r\n    \"bon2da\",\r\n    \"bon2d1e\",\r\n    \"bo2ne\",\r\n    \"3bons\",\r\n    \"boo4l\",\r\n    \"boo2ti\",\r\n    \"b1op\",\r\n    \"3bor.\",\r\n    \"bo1ra\",\r\n    \"bor2an\",\r\n    \"bo2r3as\",\r\n    \"bo2rau\",\r\n    \"bo4rä\",\r\n    \"bor2da\",\r\n    \"bor2d3r\",\r\n    \"bo2rei\",\r\n    \"bo4rig\",\r\n    \"bor3m\",\r\n    \"bor2s\",\r\n    \"b1ort\",\r\n    \"bor4ter\",\r\n    \"bor6t5rat\",\r\n    \"bo4ruh\",\r\n    \"bo2sc\",\r\n    \"bo3se\",\r\n    \"bo4s3p\",\r\n    \"bos3t\",\r\n    \"3bot\",\r\n    \"bote3n4e\",\r\n    \"bo3th\",\r\n    \"bot2st\",\r\n    \"bot5t\",\r\n    \"bo2xo\",\r\n    \"b1oz\",\r\n    \"bö2b3\",\r\n    \"2böf\",\r\n    \"2b1öl\",\r\n    \"bölk3\",\r\n    \"2b1p4\",\r\n    \"bpa2g\",\r\n    \"2b1q\",\r\n    \"b2r4\",\r\n    \"2br.\",\r\n    \"b4ra.\",\r\n    \"2b3rad\",\r\n    \"2b4rah\",\r\n    \"b4ra3k\",\r\n    \"brast4\",\r\n    \"2b3rat.\",\r\n    \"brat3er4\",\r\n    \"bra6terg\",\r\n    \"2b3ratg\",\r\n    \"3brä\",\r\n    \"4bräd\",\r\n    \"brä4u\",\r\n    \"2bre.\",\r\n    \"6b5rechte\",\r\n    \"2b3red\",\r\n    \"2b3ref\",\r\n    \"2breg\",\r\n    \"b3reif\",\r\n    \"2brek\",\r\n    \"breli1\",\r\n    \"b4rem\",\r\n    \"b4ren.\",\r\n    \"2b3rent\",\r\n    \"2breo\",\r\n    \"2b3rep\",\r\n    \"b4rer\",\r\n    \"b4res.\",\r\n    \"b3rest\",\r\n    \"b4ret\",\r\n    \"bret6t5en\",\r\n    \"b4rez\",\r\n    \"bri2da\",\r\n    \"brie4fa\",\r\n    \"2b3riem\",\r\n    \"b4rien\",\r\n    \"bri2er\",\r\n    \"b3ries\",\r\n    \"2brigk\",\r\n    \"b4rina\",\r\n    \"2b3rind\",\r\n    \"b4rio\",\r\n    \"b4risc\",\r\n    \"b3ritt\",\r\n    \"brob2\",\r\n    \"2b3roh\",\r\n    \"2b3rol\",\r\n    \"bro2ma\",\r\n    \"b4ron\",\r\n    \"2b3rost\",\r\n    \"bro4tr\",\r\n    \"brot3t4\",\r\n    \"2b3rou\",\r\n    \"3b4rö\",\r\n    \"b4ruc\",\r\n    \"2bruf\",\r\n    \"b4rum\",\r\n    \"2b3rund\",\r\n    \"brus4\",\r\n    \"brust3\",\r\n    \"bru2th\",\r\n    \"3brü\",\r\n    \"4b3rüb\",\r\n    \"2b1s\",\r\n    \"b2s1ad\",\r\n    \"bs2am\",\r\n    \"bs3amb\",\r\n    \"b4s3amt\",\r\n    \"bsau2r\",\r\n    \"b4s3är\",\r\n    \"b3s2äu\",\r\n    \"b3sc\",\r\n    \"bsch2\",\r\n    \"b4schan\",\r\n    \"b6schef\",\r\n    \"bs2chi\",\r\n    \"b4sco\",\r\n    \"bs2cu\",\r\n    \"bse2b\",\r\n    \"b3sel.\",\r\n    \"bse2n1\",\r\n    \"b3sen.\",\r\n    \"b2s1ent\",\r\n    \"bs1erf\",\r\n    \"bs1erg\",\r\n    \"bs3e4r3in\",\r\n    \"bs1erk\",\r\n    \"bs1ers\",\r\n    \"b3s2es\",\r\n    \"b2sim\",\r\n    \"bsi4t\",\r\n    \"b4ski\",\r\n    \"bs2ku\",\r\n    \"b2s1of\",\r\n    \"b3s2oh\",\r\n    \"b3sol\",\r\n    \"b4sop\",\r\n    \"bso2r\",\r\n    \"b2sö\",\r\n    \"b3s2pi\",\r\n    \"bs2pl\",\r\n    \"bs2pu\",\r\n    \"bss2\",\r\n    \"bs2t\",\r\n    \"bst1a2b\",\r\n    \"bst1ak\",\r\n    \"bst3ank\",\r\n    \"bs4t1as\",\r\n    \"b3stä\",\r\n    \"bs3tät\",\r\n    \"bst3emi\",\r\n    \"bst1er\",\r\n    \"bst1h\",\r\n    \"bst3ink\",\r\n    \"b2stip\",\r\n    \"b3sto\",\r\n    \"b4stob\",\r\n    \"b4stod\",\r\n    \"bs4tol\",\r\n    \"b4stor\",\r\n    \"b3stö\",\r\n    \"b4strac\",\r\n    \"b2s3trä\",\r\n    \"b4s3treu\",\r\n    \"bs4tri\",\r\n    \"bst3ro\",\r\n    \"b3stü\",\r\n    \"b4stüb\",\r\n    \"b2s1un\",\r\n    \"bs2zep\",\r\n    \"bs2zi\",\r\n    \"4b1t\",\r\n    \"b3t2a\",\r\n    \"bta2s\",\r\n    \"btast3r\",\r\n    \"b5te\",\r\n    \"b2t1h\",\r\n    \"bt2i\",\r\n    \"bti2s\",\r\n    \"bt4r\",\r\n    \"btran2\",\r\n    \"bts2\",\r\n    \"b3tü1\",\r\n    \"buche4\",\r\n    \"bu4chec\",\r\n    \"bucher4\",\r\n    \"bu6ch5ers\",\r\n    \"bu2chi\",\r\n    \"buch3s4p\",\r\n    \"bu2e3\",\r\n    \"bu2f\",\r\n    \"bug3\",\r\n    \"bu2gr\",\r\n    \"bul2l3a\",\r\n    \"2bumf\",\r\n    \"2b3umk\",\r\n    \"2buml\",\r\n    \"2b3umr\",\r\n    \"bun4a\",\r\n    \"bun4d3er\",\r\n    \"bunde4s\",\r\n    \"b1une\",\r\n    \"bung4\",\r\n    \"b3un3gn\",\r\n    \"2b1unh\",\r\n    \"bur1c\",\r\n    \"b2ure\",\r\n    \"b2urg\",\r\n    \"burg1a\",\r\n    \"bur4gan\",\r\n    \"bur4gar\",\r\n    \"bur4gin\",\r\n    \"bur2gr\",\r\n    \"bu3r2i\",\r\n    \"2burn\",\r\n    \"b3ursa\",\r\n    \"burts3\",\r\n    \"bu2sa\",\r\n    \"bu2sc\",\r\n    \"bus3cha\",\r\n    \"bu3sche\",\r\n    \"bu6schei\",\r\n    \"bu6sch5el\",\r\n    \"busch3w\",\r\n    \"bu3shi\",\r\n    \"bu2sin\",\r\n    \"bu2s1p\",\r\n    \"buster4\",\r\n    \"bu2su\",\r\n    \"but2a\",\r\n    \"buto3re\",\r\n    \"2büb\",\r\n    \"bü1c\",\r\n    \"bügel3e\",\r\n    \"2b1v\",\r\n    \"4b5w\",\r\n    \"3b2y1\",\r\n    \"bya2\",\r\n    \"byo2\",\r\n    \"by3p2\",\r\n    \"bys4\",\r\n    \"2b1z4\",\r\n    \"b5ze\",\r\n    \"bzeit1\",\r\n    \"1c2a\",\r\n    \"cab4\",\r\n    \"ca3bl\",\r\n    \"3ca2c\",\r\n    \"ca2e3\",\r\n    \"ca3g2\",\r\n    \"ca1h\",\r\n    \"cal2a\",\r\n    \"cala3b\",\r\n    \"cal2f3\",\r\n    \"cal3t\",\r\n    \"3cam\",\r\n    \"2can\",\r\n    \"cana3\",\r\n    \"ca2pe\",\r\n    \"car5n2\",\r\n    \"carri1\",\r\n    \"car2s\",\r\n    \"ca3s2a3\",\r\n    \"cas5to\",\r\n    \"ca3t2h\",\r\n    \"ca1y2\",\r\n    \"cä3\",\r\n    \"cäs2\",\r\n    \"c1b\",\r\n    \"2cc\",\r\n    \"c1ce\",\r\n    \"c1ch2\",\r\n    \"c2d2\",\r\n    \"c3do\",\r\n    \"2cec\",\r\n    \"1ced\",\r\n    \"ce2dr\",\r\n    \"2cef\",\r\n    \"ce1i\",\r\n    \"ce3in\",\r\n    \"2cek\",\r\n    \"3cels\",\r\n    \"cen3a\",\r\n    \"ce3nu\",\r\n    \"cen3un\",\r\n    \"ceo2\",\r\n    \"1cer\",\r\n    \"cer3a\",\r\n    \"cere1\",\r\n    \"cere3u\",\r\n    \"ce3r2i\",\r\n    \"ce4ris\",\r\n    \"ce1ro\",\r\n    \"ce3s4h\",\r\n    \"1cet\",\r\n    \"ceta2\",\r\n    \"cet1am\",\r\n    \"ce1u\",\r\n    \"1cé\",\r\n    \"c1f\",\r\n    \"c1g4\",\r\n    \"c2h\",\r\n    \"4ch.\",\r\n    \"2chab\",\r\n    \"ch3a2b3i\",\r\n    \"cha2ck\",\r\n    \"2chaf\",\r\n    \"2ch1a2g\",\r\n    \"2ch1ak\",\r\n    \"chal6l5ei\",\r\n    \"chan4a\",\r\n    \"3chanc\",\r\n    \"chan3f\",\r\n    \"ch1ang\",\r\n    \"4chanl\",\r\n    \"4chanz\",\r\n    \"3chao\",\r\n    \"4char.\",\r\n    \"3chara\",\r\n    \"3chard\",\r\n    \"3charta\",\r\n    \"cha2sc\",\r\n    \"chasi1\",\r\n    \"1chato\",\r\n    \"2chatt\",\r\n    \"ch5austr\",\r\n    \"chau3t\",\r\n    \"ch1äh\",\r\n    \"ch1ärm\",\r\n    \"ch1äs\",\r\n    \"1châ\",\r\n    \"2chb\",\r\n    \"2chc\",\r\n    \"2chd\",\r\n    \"che3b4\",\r\n    \"ch3e4ben\",\r\n    \"ch3echt\",\r\n    \"ch1edi\",\r\n    \"che2el\",\r\n    \"1chef\",\r\n    \"3chef.\",\r\n    \"che4fer\",\r\n    \"3chefs\",\r\n    \"2cheh\",\r\n    \"2chei\",\r\n    \"ch1eim\",\r\n    \"4chelem\",\r\n    \"che4ler\",\r\n    \"3chemi\",\r\n    \"2chemp\",\r\n    \"che4neb\",\r\n    \"che4nid\",\r\n    \"che2no\",\r\n    \"4chents\",\r\n    \"4chentw\",\r\n    \"che2r3a\",\r\n    \"4ch3erbs\",\r\n    \"6chergeb\",\r\n    \"4cherke\",\r\n    \"cher6zie\",\r\n    \"ch3es4s\",\r\n    \"ches5t\",\r\n    \"4ch1e4ta\",\r\n    \"2ch3e4x\",\r\n    \"1ché\",\r\n    \"2chf\",\r\n    \"2chg\",\r\n    \"2chh\",\r\n    \"1chia\",\r\n    \"chi3na\",\r\n    \"4chind\",\r\n    \"3chines\",\r\n    \"2chinf\",\r\n    \"2chinh\",\r\n    \"2ch1ins\",\r\n    \"2ch1int\",\r\n    \"2ch1inv\",\r\n    \"1chip.\",\r\n    \"1chiru\",\r\n    \"2chiso\",\r\n    \"2chj\",\r\n    \"2chk\",\r\n    \"2chl4\",\r\n    \"ch2le\",\r\n    \"chle2i\",\r\n    \"ch3lein\",\r\n    \"ch4len\",\r\n    \"4chli\",\r\n    \"ch2lu\",\r\n    \"4ch2m4\",\r\n    \"4chn4\",\r\n    \"chner8ei.\",\r\n    \"2chob\",\r\n    \"cho2f\",\r\n    \"ch1off\",\r\n    \"chof4s\",\r\n    \"ch1oh\",\r\n    \"cho3l2a\",\r\n    \"ch1orc\",\r\n    \"cho4rei\",\r\n    \"ch1ori\",\r\n    \"ch2os\",\r\n    \"ch3öl\",\r\n    \"3chör\",\r\n    \"2chp\",\r\n    \"ch2r4\",\r\n    \"2chra\",\r\n    \"ch3rad\",\r\n    \"2chre\",\r\n    \"ch3rh\",\r\n    \"4chrit\",\r\n    \"3chromo\",\r\n    \"3chron\",\r\n    \"ch5ros\",\r\n    \"4chs\",\r\n    \"ch2spo\",\r\n    \"ch4stal\",\r\n    \"2cht\",\r\n    \"ch2tru\",\r\n    \"2chuf\",\r\n    \"2chuh\",\r\n    \"2chum\",\r\n    \"2ch1unf\",\r\n    \"2chunm\",\r\n    \"2chunt\",\r\n    \"2chur\",\r\n    \"ch1urs\",\r\n    \"2chut\",\r\n    \"chut4t\",\r\n    \"4chü\",\r\n    \"2chv\",\r\n    \"4chw\",\r\n    \"1chy\",\r\n    \"2chz\",\r\n    \"ci1c\",\r\n    \"ci1es\",\r\n    \"c1ind\",\r\n    \"cins2\",\r\n    \"c1int\",\r\n    \"ci2s1\",\r\n    \"1ci3t2\",\r\n    \"c1j\",\r\n    \"c2k\",\r\n    \"4ck.\",\r\n    \"c4k1a\",\r\n    \"1cka.\",\r\n    \"2cka2b\",\r\n    \"2cka2c\",\r\n    \"ck2ad\",\r\n    \"1ck2ag\",\r\n    \"2ckal\",\r\n    \"cka2m\",\r\n    \"2ckan\",\r\n    \"2ckap\",\r\n    \"cka4r1\",\r\n    \"1ckat\",\r\n    \"ck1ä\",\r\n    \"2ckb\",\r\n    \"2ckc\",\r\n    \"2ckd\",\r\n    \"1cke\",\r\n    \"2cke2c\",\r\n    \"2ck1ef\",\r\n    \"4ckeff\",\r\n    \"2ck1eh\",\r\n    \"4ck1ei\",\r\n    \"2ckemp\",\r\n    \"cke4na\",\r\n    \"6ckensem\",\r\n    \"4ckentf\",\r\n    \"4ckentw\",\r\n    \"cke2ra\",\r\n    \"ck2ere\",\r\n    \"6ckergeb\",\r\n    \"4ck3er4hö\",\r\n    \"ckerk4\",\r\n    \"cker6lau\",\r\n    \"ck2ern\",\r\n    \"2cke2ro\",\r\n    \"ck1err\",\r\n    \"6ckerzeu\",\r\n    \"4ckese\",\r\n    \"ck2et\",\r\n    \"4ckex\",\r\n    \"2ckf\",\r\n    \"2ckg\",\r\n    \"2ckh\",\r\n    \"1cki\",\r\n    \"2ck1i2d\",\r\n    \"ck1in\",\r\n    \"4ckint\",\r\n    \"3ck4is\",\r\n    \"2ckk\",\r\n    \"2ck3l\",\r\n    \"2ckm\",\r\n    \"2ck5n\",\r\n    \"2ck3o2\",\r\n    \"ckos6t\",\r\n    \"ck3ö2\",\r\n    \"2ckp\",\r\n    \"2ck3r\",\r\n    \"4cks\",\r\n    \"cks2al\",\r\n    \"ck4spen\",\r\n    \"2ckt\",\r\n    \"ck3te\",\r\n    \"ck3t2i\",\r\n    \"1cku\",\r\n    \"2ck1uh\",\r\n    \"ck1um\",\r\n    \"2ckunt\",\r\n    \"2ck1up\",\r\n    \"2ckü\",\r\n    \"2ckv\",\r\n    \"2ckw\",\r\n    \"1cky\",\r\n    \"2ckz\",\r\n    \"c2l2\",\r\n    \"cle4a\",\r\n    \"clet4\",\r\n    \"clin2g\",\r\n    \"cli2p1\",\r\n    \"clip3a\",\r\n    \"clo1c\",\r\n    \"clo2ck\",\r\n    \"clo3f\",\r\n    \"1clu\",\r\n    \"clu4b\",\r\n    \"c2m2\",\r\n    \"c3me\",\r\n    \"c3mu\",\r\n    \"1c2o\",\r\n    \"co2c\",\r\n    \"co3ch\",\r\n    \"co2d2\",\r\n    \"co3di\",\r\n    \"cof3f2\",\r\n    \"coi4\",\r\n    \"co1it\",\r\n    \"co2ke\",\r\n    \"co3la3\",\r\n    \"co2leu\",\r\n    \"co3l2o\",\r\n    \"com4te.\",\r\n    \"comtes4\",\r\n    \"con2ne\",\r\n    \"co2o\",\r\n    \"coo1p\",\r\n    \"co1p\",\r\n    \"co1ra\",\r\n    \"cor2da\",\r\n    \"co4re\",\r\n    \"cor3t\",\r\n    \"cos3t\",\r\n    \"co4te\",\r\n    \"cou3si\",\r\n    \"cô4\",\r\n    \"2cp\",\r\n    \"2c1q\",\r\n    \"1c2r2\",\r\n    \"c3rä\",\r\n    \"c4re2\",\r\n    \"cre4mes\",\r\n    \"3crew\",\r\n    \"2cri\",\r\n    \"cros4\",\r\n    \"2cry\",\r\n    \"2cs\",\r\n    \"cs2a\",\r\n    \"cs4f\",\r\n    \"c4si\",\r\n    \"cst2\",\r\n    \"c1s2ti\",\r\n    \"c1s4tr\",\r\n    \"4c5t\",\r\n    \"cti2\",\r\n    \"cti4o2\",\r\n    \"ction3\",\r\n    \"ctur6\",\r\n    \"c6tz\",\r\n    \"1c4u\",\r\n    \"2cua\",\r\n    \"cu2e\",\r\n    \"cu2p3\",\r\n    \"cup1e\",\r\n    \"cussi4\",\r\n    \"c1w\",\r\n    \"2cx\",\r\n    \"1cy\",\r\n    \"c1z\",\r\n    \"3da.\",\r\n    \"da1a\",\r\n    \"2d1ab\",\r\n    \"d3a2bak\",\r\n    \"d2abä\",\r\n    \"d2abe\",\r\n    \"d3a2ben\",\r\n    \"d3a2bi\",\r\n    \"da3blu\",\r\n    \"d3a2bo\",\r\n    \"dab4ra\",\r\n    \"da2bri\",\r\n    \"da3brie\",\r\n    \"d2ab4rü\",\r\n    \"d1ac\",\r\n    \"dach3a\",\r\n    \"da2cho\",\r\n    \"4d3achse\",\r\n    \"2d1ad\",\r\n    \"da2de\",\r\n    \"da2do\",\r\n    \"da2d4r\",\r\n    \"d1af\",\r\n    \"2daff\",\r\n    \"da1f4l\",\r\n    \"dafo4n\",\r\n    \"d1ag\",\r\n    \"dagi4\",\r\n    \"dag2o\",\r\n    \"da1h\",\r\n    \"dah3l\",\r\n    \"dail5\",\r\n    \"da1in\",\r\n    \"2d1air\",\r\n    \"da1is\",\r\n    \"da2kro\",\r\n    \"dal2a\",\r\n    \"2d1a2lar\",\r\n    \"dal3b2\",\r\n    \"4d1all\",\r\n    \"da2lop\",\r\n    \"da3lö\",\r\n    \"2d1alp\",\r\n    \"d1al3t\",\r\n    \"2dalte\",\r\n    \"da1lü\",\r\n    \"3dam\",\r\n    \"da2mei\",\r\n    \"d1amma\",\r\n    \"4d1ammä\",\r\n    \"damo3\",\r\n    \"d2amp\",\r\n    \"damp7f8erf\",\r\n    \"4d1amt\",\r\n    \"3d2an.\",\r\n    \"d1ana\",\r\n    \"da2nan\",\r\n    \"da4n4at\",\r\n    \"2danb\",\r\n    \"dan4ce.\",\r\n    \"d1and2\",\r\n    \"2danda\",\r\n    \"d2andy\",\r\n    \"3dane\",\r\n    \"4d3anei\",\r\n    \"2danf\",\r\n    \"d1ang\",\r\n    \"2danh\",\r\n    \"dan2kl\",\r\n    \"dan2k1o\",\r\n    \"dan2kr\",\r\n    \"2danl\",\r\n    \"d1ann\",\r\n    \"2danna\",\r\n    \"d1a2no\",\r\n    \"2d1ans\",\r\n    \"2dantw\",\r\n    \"2danw\",\r\n    \"d1anz\",\r\n    \"d2anz.\",\r\n    \"2danzi\",\r\n    \"2danzü\",\r\n    \"2d1ap\",\r\n    \"d2apa\",\r\n    \"d2aph\",\r\n    \"da2po\",\r\n    \"da3pos\",\r\n    \"4dapp\",\r\n    \"d3apte\",\r\n    \"4daq\",\r\n    \"da4r1a\",\r\n    \"2darb2\",\r\n    \"2d3arc\",\r\n    \"dar2d1e\",\r\n    \"dare2\",\r\n    \"daren1\",\r\n    \"dar3g\",\r\n    \"dark2a\",\r\n    \"3darl\",\r\n    \"dar2m1a\",\r\n    \"dar2m1i\",\r\n    \"dar4mu\",\r\n    \"da2r3o\",\r\n    \"3dars\",\r\n    \"2d1art\",\r\n    \"dar2th\",\r\n    \"dar2tr\",\r\n    \"da2ru\",\r\n    \"d1arz\",\r\n    \"da1s2\",\r\n    \"da3sh\",\r\n    \"d1as3p\",\r\n    \"das3s\",\r\n    \"das4t\",\r\n    \"dat2e2\",\r\n    \"da3tei\",\r\n    \"4d3a2tel\",\r\n    \"date4n\",\r\n    \"da2th\",\r\n    \"2d3atl\",\r\n    \"4datm\",\r\n    \"d3ato\",\r\n    \"dat2st\",\r\n    \"2d3atta\",\r\n    \"3daub\",\r\n    \"2daud\",\r\n    \"dau3e2\",\r\n    \"dauer3e\",\r\n    \"daue6rei\",\r\n    \"2d3au2f\",\r\n    \"2d3aug\",\r\n    \"2dauk\",\r\n    \"da3unt\",\r\n    \"2d1aus3\",\r\n    \"dau2ß\",\r\n    \"3daw\",\r\n    \"d1ax\",\r\n    \"3däc\",\r\n    \"2d1äg\",\r\n    \"2d1äh\",\r\n    \"2d1ämt\",\r\n    \"dän3a\",\r\n    \"2d1änd\",\r\n    \"2d1äp\",\r\n    \"2däq\",\r\n    \"2därz\",\r\n    \"2d1ä2u\",\r\n    \"dä3us\",\r\n    \"2däx\",\r\n    \"4d1b4\",\r\n    \"dbau2c\",\r\n    \"dbauch3\",\r\n    \"dbe2e\",\r\n    \"dbu2c\",\r\n    \"2dc\",\r\n    \"d3ch\",\r\n    \"4d1d2\",\r\n    \"d3da\",\r\n    \"d3dä\",\r\n    \"d3de\",\r\n    \"d3dh\",\r\n    \"1de\",\r\n    \"dea2d\",\r\n    \"de3ar\",\r\n    \"de3a2t\",\r\n    \"deb4\",\r\n    \"3debü\",\r\n    \"de1c\",\r\n    \"de4ca.\",\r\n    \"de2cka\",\r\n    \"de2del\",\r\n    \"de2dit\",\r\n    \"2de3e4\",\r\n    \"def4a\",\r\n    \"de2fa.\",\r\n    \"2d1eff\",\r\n    \"def4l\",\r\n    \"deg2\",\r\n    \"degene7\",\r\n    \"de3gl\",\r\n    \"deh2a\",\r\n    \"dehe2\",\r\n    \"3dehn\",\r\n    \"de3ho\",\r\n    \"2d1ehr\",\r\n    \"d1ei\",\r\n    \"3d2eic\",\r\n    \"de3i4den\",\r\n    \"de3il\",\r\n    \"3d2eim\",\r\n    \"4deime\",\r\n    \"dein2d\",\r\n    \"de3inse\",\r\n    \"de3inst\",\r\n    \"dein6sta\",\r\n    \"dein6sti\",\r\n    \"4d3einw\",\r\n    \"de3io\",\r\n    \"2deise\",\r\n    \"d4e1ism\",\r\n    \"dei2sp\",\r\n    \"2dekz\",\r\n    \"de2l1ac\",\r\n    \"del4ade\",\r\n    \"de3lak\",\r\n    \"de4l3aug\",\r\n    \"del3änd\",\r\n    \"del3b2\",\r\n    \"del3d\",\r\n    \"del1ec\",\r\n    \"3de3leg\",\r\n    \"delei4g\",\r\n    \"2delek\",\r\n    \"2delem\",\r\n    \"de2len\",\r\n    \"deler2\",\r\n    \"deler4r\",\r\n    \"2delf.\",\r\n    \"2delfm\",\r\n    \"3delik\",\r\n    \"del2la\",\r\n    \"dell3au\",\r\n    \"del2l1ä\",\r\n    \"delle2\",\r\n    \"del4l3eb\",\r\n    \"del4lei\",\r\n    \"del4l3er\",\r\n    \"de2l1ob\",\r\n    \"de2lop\",\r\n    \"del2se\",\r\n    \"del2so\",\r\n    \"del2s1p\",\r\n    \"del3t4\",\r\n    \"dem2ar\",\r\n    \"2d1emb\",\r\n    \"dement4\",\r\n    \"de6mentg\",\r\n    \"dem5ents\",\r\n    \"de3min\",\r\n    \"2d1emot\",\r\n    \"2d1emp\",\r\n    \"d2emu\",\r\n    \"d4en.\",\r\n    \"den2am\",\r\n    \"dend2\",\r\n    \"de2n1e2d\",\r\n    \"de4n3end\",\r\n    \"de2nep\",\r\n    \"4denerg\",\r\n    \"de3n2es\",\r\n    \"4d3en4ge.\",\r\n    \"de2ni\",\r\n    \"denk3li\",\r\n    \"dens4am\",\r\n    \"den6scho\",\r\n    \"dense2\",\r\n    \"4den4sem\",\r\n    \"den6sere\",\r\n    \"den6s5tau\",\r\n    \"2dentd\",\r\n    \"2dentf\",\r\n    \"2dentg\",\r\n    \"den3th\",\r\n    \"2dentn\",\r\n    \"2dentw\",\r\n    \"2dentz\",\r\n    \"den6zers\",\r\n    \"de2ob\",\r\n    \"2deol\",\r\n    \"dep4l\",\r\n    \"2depoc\",\r\n    \"d4er.\",\r\n    \"der3af\",\r\n    \"de2rak\",\r\n    \"dera2n\",\r\n    \"de3rand\",\r\n    \"de2r3ap\",\r\n    \"de1r2a4s\",\r\n    \"de4r3asi\",\r\n    \"der2bl\",\r\n    \"4d1erbs\",\r\n    \"2derdb\",\r\n    \"de2r1e2b\",\r\n    \"de4reck\",\r\n    \"de4r3ei4s\",\r\n    \"5d4erem\",\r\n    \"d4eren\",\r\n    \"de4r3end\",\r\n    \"5d4erer\",\r\n    \"der4erf\",\r\n    \"derer3n\",\r\n    \"der3ero\",\r\n    \"derer4t\",\r\n    \"derer6ze\",\r\n    \"5d4eres\",\r\n    \"de2r3eu\",\r\n    \"derf4\",\r\n    \"d4erfl\",\r\n    \"d3erheb\",\r\n    \"d2erhü\",\r\n    \"de2r3id\",\r\n    \"derin4f\",\r\n    \"de6rinnu\",\r\n    \"derin8teg\",\r\n    \"der3k2\",\r\n    \"4derklä\",\r\n    \"d2erm\",\r\n    \"de1ro\",\r\n    \"derö2\",\r\n    \"der3r\",\r\n    \"derst2\",\r\n    \"der3sta\",\r\n    \"dert7ende.\",\r\n    \"derter6e\",\r\n    \"dert4ra\",\r\n    \"6dertrag\",\r\n    \"der8trage\",\r\n    \"3de3ru\",\r\n    \"de4ruh\",\r\n    \"de4rum\",\r\n    \"2d1erz.\",\r\n    \"2d1erzv\",\r\n    \"d2es.\",\r\n    \"de2sa\",\r\n    \"des1ah\",\r\n    \"de4sam\",\r\n    \"de2s1än\",\r\n    \"de2seb\",\r\n    \"de4se2h\",\r\n    \"de2sei\",\r\n    \"de4seil\",\r\n    \"2d1esel\",\r\n    \"des3elt\",\r\n    \"de3sem\",\r\n    \"de3s4end\",\r\n    \"desen3e\",\r\n    \"de2set\",\r\n    \"de2sin\",\r\n    \"des1o\",\r\n    \"de2sor\",\r\n    \"de2s1p\",\r\n    \"de3spe\",\r\n    \"de3spu\",\r\n    \"dess2\",\r\n    \"dess4t\",\r\n    \"dest5alt\",\r\n    \"des6temp\",\r\n    \"de5stern\",\r\n    \"des4tex\",\r\n    \"de1sto\",\r\n    \"dest5rat\",\r\n    \"de3stri\",\r\n    \"des4tum\",\r\n    \"de2su\",\r\n    \"des1un\",\r\n    \"3desw\",\r\n    \"det2\",\r\n    \"de3ta\",\r\n    \"deten4t\",\r\n    \"2d1e2th\",\r\n    \"2d1etw\",\r\n    \"2d1eul\",\r\n    \"de1un\",\r\n    \"de1url\",\r\n    \"de3us\",\r\n    \"2d1e2vid\",\r\n    \"devil2\",\r\n    \"de1x2a\",\r\n    \"de2xer\",\r\n    \"de2xis\",\r\n    \"2dexpe\",\r\n    \"2dexpo\",\r\n    \"2d1f6\",\r\n    \"2d1g2\",\r\n    \"dgas3tr\",\r\n    \"d2ge.\",\r\n    \"dger2\",\r\n    \"dge3s\",\r\n    \"d2gesh\",\r\n    \"dge2t3a\",\r\n    \"dge4t1e\",\r\n    \"2d1h2\",\r\n    \"dha1s4\",\r\n    \"4dho\",\r\n    \"d3hu\",\r\n    \"1di\",\r\n    \"di4ap\",\r\n    \"di2a3s4\",\r\n    \"diat4\",\r\n    \"di4ath\",\r\n    \"3dic\",\r\n    \"di1ce\",\r\n    \"di3chl\",\r\n    \"dicht6er\",\r\n    \"di4ck3el\",\r\n    \"4d3i2co\",\r\n    \"3dida\",\r\n    \"d1ide\",\r\n    \"2didee\",\r\n    \"di2den\",\r\n    \"2didy\",\r\n    \"di2e\",\r\n    \"di3e4d\",\r\n    \"di3enb\",\r\n    \"die4neb\",\r\n    \"diener6l\",\r\n    \"di3e2ni\",\r\n    \"dienst5r\",\r\n    \"die2p\",\r\n    \"di3ers.\",\r\n    \"dies1c\",\r\n    \"di3e4th\",\r\n    \"3dif\",\r\n    \"3dig\",\r\n    \"dige2s\",\r\n    \"dig4n\",\r\n    \"dik2a\",\r\n    \"dil2s3\",\r\n    \"2d1imb\",\r\n    \"2dimp\",\r\n    \"din4a\",\r\n    \"2d1ind\",\r\n    \"di3n2e\",\r\n    \"2d1inf\",\r\n    \"3ding\",\r\n    \"2d1inh\",\r\n    \"di3ni\",\r\n    \"2d1inj\",\r\n    \"2d1ink\",\r\n    \"2d1ins\",\r\n    \"2d3int\",\r\n    \"2d1inv\",\r\n    \"di2o3b\",\r\n    \"dion3in\",\r\n    \"dion3s4\",\r\n    \"di3ora\",\r\n    \"dios2\",\r\n    \"di2osk\",\r\n    \"di1p2\",\r\n    \"di3pt\",\r\n    \"d1i2ra\",\r\n    \"di4re.\",\r\n    \"di2ren\",\r\n    \"di2rin\",\r\n    \"di2ris\",\r\n    \"2d1irl\",\r\n    \"2d1irr\",\r\n    \"di2s1a2\",\r\n    \"2d1iso\",\r\n    \"di2sp\",\r\n    \"di3s4per\",\r\n    \"2d1isr\",\r\n    \"dist2\",\r\n    \"di1s4ta\",\r\n    \"di2s3te\",\r\n    \"di4stra\",\r\n    \"di4sz\",\r\n    \"di2ta\",\r\n    \"dite1c\",\r\n    \"di4t3erl\",\r\n    \"di4t3erm\",\r\n    \"di4t3ers\",\r\n    \"di1the\",\r\n    \"di2tin\",\r\n    \"di2tob\",\r\n    \"di4t3r\",\r\n    \"dit3s\",\r\n    \"di2t1u\",\r\n    \"di5v2\",\r\n    \"di3z2\",\r\n    \"2d1j\",\r\n    \"d2jar\",\r\n    \"2d1k4\",\r\n    \"4d1l2\",\r\n    \"d3la\",\r\n    \"dla3g\",\r\n    \"dlap4\",\r\n    \"d3le\",\r\n    \"dle2ra\",\r\n    \"dli4f\",\r\n    \"dl3m\",\r\n    \"dl3s\",\r\n    \"2d3m2\",\r\n    \"4d3n2\",\r\n    \"dni2\",\r\n    \"dnis1\",\r\n    \"do5at\",\r\n    \"2d1ob\",\r\n    \"3d2oba\",\r\n    \"dob2s\",\r\n    \"d1of\",\r\n    \"do2fe\",\r\n    \"2d1oh\",\r\n    \"do3ha\",\r\n    \"dole4\",\r\n    \"doll2\",\r\n    \"dol3la\",\r\n    \"d3o2ly\",\r\n    \"3dom\",\r\n    \"do2mal\",\r\n    \"do2mar\",\r\n    \"domen1\",\r\n    \"do4ming\",\r\n    \"4domn\",\r\n    \"do2mu\",\r\n    \"don2a\",\r\n    \"do3nan\",\r\n    \"doni1e\",\r\n    \"4dony\",\r\n    \"2dope\",\r\n    \"2d1opf\",\r\n    \"do1r4a\",\r\n    \"2d1orc\",\r\n    \"2d1ord\",\r\n    \"dor2f1a\",\r\n    \"dor2fä\",\r\n    \"dor2f1i\",\r\n    \"dor2fl\",\r\n    \"dor2fo\",\r\n    \"dor2fr\",\r\n    \"dor2f3u\",\r\n    \"2d1org\",\r\n    \"d2orn\",\r\n    \"2dort\",\r\n    \"dor4ter\",\r\n    \"dor4tr\",\r\n    \"d1os2\",\r\n    \"d2os.\",\r\n    \"2d3osm\",\r\n    \"dos3s\",\r\n    \"dos4t1\",\r\n    \"dost3a\",\r\n    \"dosten4\",\r\n    \"do4stu\",\r\n    \"do3ta\",\r\n    \"do2tof\",\r\n    \"do3un\",\r\n    \"dow2s\",\r\n    \"d2o3x2\",\r\n    \"d1ö\",\r\n    \"dö2d\",\r\n    \"dö2f\",\r\n    \"döl1\",\r\n    \"döll2\",\r\n    \"d2ön\",\r\n    \"3d2ör\",\r\n    \"dö2s1c\",\r\n    \"4d3p2\",\r\n    \"dpass3\",\r\n    \"dpol4n\",\r\n    \"dpost1\",\r\n    \"2d1q\",\r\n    \"d2r4\",\r\n    \"3d4ra.\",\r\n    \"3d4rab\",\r\n    \"4d3rad\",\r\n    \"2drahm\",\r\n    \"2d3rak\",\r\n    \"3d4ral\",\r\n    \"d3ramp\",\r\n    \"d3rand\",\r\n    \"dran3k\",\r\n    \"2d3rast\",\r\n    \"dra4tin\",\r\n    \"2draub\",\r\n    \"2d3rauc\",\r\n    \"d4rauf\",\r\n    \"2draum\",\r\n    \"2draup\",\r\n    \"2dräd\",\r\n    \"d4räh\",\r\n    \"2d3rät\",\r\n    \"2d3räu\",\r\n    \"4dre.\",\r\n    \"2d3rea\",\r\n    \"d4rea.\",\r\n    \"d4reas\",\r\n    \"3d4reck\",\r\n    \"2d3ref\",\r\n    \"4dreg\",\r\n    \"3d4reh\",\r\n    \"dre2ha\",\r\n    \"2d3reic\",\r\n    \"3d4reie\",\r\n    \"d4reiv\",\r\n    \"d4rej\",\r\n    \"dreli1\",\r\n    \"4drem\",\r\n    \"4d3ren\",\r\n    \"d4reo\",\r\n    \"4d3rep\",\r\n    \"4d3rer\",\r\n    \"4dres.\",\r\n    \"d4resc\",\r\n    \"dres6sei\",\r\n    \"dres6sel\",\r\n    \"d4rew\",\r\n    \"2drez\",\r\n    \"2d3rh\",\r\n    \"d4ria\",\r\n    \"4d3ric\",\r\n    \"d3rieg\",\r\n    \"3drif\",\r\n    \"4d3riff\",\r\n    \"d4rift\",\r\n    \"4d3rind\",\r\n    \"2d3rip\",\r\n    \"2d3risi\",\r\n    \"2driss\",\r\n    \"2d3ritu\",\r\n    \"2d3rob\",\r\n    \"d3rod\",\r\n    \"2drogg\",\r\n    \"2drohr\",\r\n    \"3d4rohu\",\r\n    \"2d3roll\",\r\n    \"2d3rose\",\r\n    \"d4ross\",\r\n    \"2d3rost\",\r\n    \"2d3rot\",\r\n    \"2d3rou\",\r\n    \"2d3rov\",\r\n    \"d3row\",\r\n    \"drö2sc\",\r\n    \"d5rub\",\r\n    \"3d4ruc\",\r\n    \"2d3rud\",\r\n    \"2d3ruh\",\r\n    \"2d5rut\",\r\n    \"drü1b\",\r\n    \"drü5cke\",\r\n    \"3d4rüs\",\r\n    \"2d1s\",\r\n    \"4ds.\",\r\n    \"4dsa\",\r\n    \"ds3ab\",\r\n    \"d2s1ad\",\r\n    \"ds1al\",\r\n    \"d2salk\",\r\n    \"d2sall\",\r\n    \"d4s1amt\",\r\n    \"d2san\",\r\n    \"ds3ane\",\r\n    \"ds3assi\",\r\n    \"dsau2\",\r\n    \"d2saut\",\r\n    \"ds1än\",\r\n    \"ds2äu\",\r\n    \"4dsb\",\r\n    \"d4schef\",\r\n    \"d4schin\",\r\n    \"d3s4co\",\r\n    \"d2scr\",\r\n    \"d2s1e2b\",\r\n    \"dse2e\",\r\n    \"d2s1ef\",\r\n    \"ds1ehr\",\r\n    \"ds4eign\",\r\n    \"d2sein\",\r\n    \"d2s1emb\",\r\n    \"dsen3er\",\r\n    \"d2s1eng\",\r\n    \"d2s1ent\",\r\n    \"d2s1erf\",\r\n    \"d2serh\",\r\n    \"d2s1erk\",\r\n    \"d2s1erl\",\r\n    \"ds1err\",\r\n    \"d2s1ers\",\r\n    \"d2s1ert\",\r\n    \"d2serz\",\r\n    \"dse4t\",\r\n    \"d2s1eta\",\r\n    \"d2s1ev\",\r\n    \"d2sex\",\r\n    \"d3sha2\",\r\n    \"ds2hak\",\r\n    \"d4shal\",\r\n    \"d3sho\",\r\n    \"d4shor\",\r\n    \"4dsi\",\r\n    \"d2sid\",\r\n    \"d2s1im\",\r\n    \"d3s2inf\",\r\n    \"ds2kal\",\r\n    \"d3s2kel\",\r\n    \"d4sko\",\r\n    \"4dsl\",\r\n    \"d4sli\",\r\n    \"d3soh\",\r\n    \"d2sop\",\r\n    \"dso2r\",\r\n    \"ds1ori\",\r\n    \"d2sö\",\r\n    \"ds1pas\",\r\n    \"d2s1pat\",\r\n    \"d2spä\",\r\n    \"d2s1pec\",\r\n    \"ds2pen\",\r\n    \"d4speri\",\r\n    \"d2s3ph\",\r\n    \"d3s2pi\",\r\n    \"ds2por\",\r\n    \"d6sporto\",\r\n    \"d3spri\",\r\n    \"d2spro\",\r\n    \"ds2pu\",\r\n    \"dss4\",\r\n    \"dst2\",\r\n    \"d4stag\",\r\n    \"d2stas\",\r\n    \"ds3tauf\",\r\n    \"d4s3täti\",\r\n    \"d2ste\",\r\n    \"d3stec\",\r\n    \"d3stei\",\r\n    \"d4steil\",\r\n    \"d5stell\",\r\n    \"d4stem\",\r\n    \"d4sten\",\r\n    \"d3s4tern\",\r\n    \"ds2ti\",\r\n    \"ds4til\",\r\n    \"d4stoch\",\r\n    \"ds4tol\",\r\n    \"d5strei\",\r\n    \"d3s4tro\",\r\n    \"ds2tur\",\r\n    \"dsu2m\",\r\n    \"d2sun\",\r\n    \"ds1url\",\r\n    \"ds2zen\",\r\n    \"2d1t\",\r\n    \"dta2be\",\r\n    \"d3t2ac\",\r\n    \"dtach3\",\r\n    \"dta2d\",\r\n    \"dt2ag\",\r\n    \"dta2n\",\r\n    \"dt3ane\",\r\n    \"d3t2as\",\r\n    \"dt2ax\",\r\n    \"d5tea\",\r\n    \"dte3mo\",\r\n    \"dt2et\",\r\n    \"d2th\",\r\n    \"d4thei\",\r\n    \"d3to2\",\r\n    \"d4tob\",\r\n    \"dt2op\",\r\n    \"d3tö\",\r\n    \"dt3r\",\r\n    \"dtran2\",\r\n    \"dt3sa\",\r\n    \"dt5st\",\r\n    \"dtt4\",\r\n    \"dt2un\",\r\n    \"d3t2ur\",\r\n    \"d3tü\",\r\n    \"d3ty\",\r\n    \"1du\",\r\n    \"du1alv\",\r\n    \"du1ar\",\r\n    \"du2b3li\",\r\n    \"du1ce\",\r\n    \"duel3la\",\r\n    \"du2f\",\r\n    \"2d1ufe\",\r\n    \"duf4ter\",\r\n    \"duf4to\",\r\n    \"duf2tr\",\r\n    \"2d1uh\",\r\n    \"du1i\",\r\n    \"du2in\",\r\n    \"du2kr\",\r\n    \"dul3art\",\r\n    \"2d1umb\",\r\n    \"2dumd\",\r\n    \"2d1u2m1e\",\r\n    \"2dumf\",\r\n    \"2dumg\",\r\n    \"4d3umk\",\r\n    \"2duml\",\r\n    \"d2ump\",\r\n    \"2dumr\",\r\n    \"2d1ums\",\r\n    \"d2ums.\",\r\n    \"2d1umv\",\r\n    \"du2n\",\r\n    \"2d3und\",\r\n    \"2d1unf\",\r\n    \"dung4\",\r\n    \"2dungl\",\r\n    \"2d1uni\",\r\n    \"dun3ke\",\r\n    \"dun2kl\",\r\n    \"2dunr\",\r\n    \"dun2s\",\r\n    \"2dunsi\",\r\n    \"dunst3r\",\r\n    \"2dunt\",\r\n    \"2dunw\",\r\n    \"2d3unz\",\r\n    \"du1os\",\r\n    \"dup4\",\r\n    \"dur2\",\r\n    \"dur3au\",\r\n    \"durch3\",\r\n    \"2d1urk\",\r\n    \"2d1url\",\r\n    \"2d1urn\",\r\n    \"2d1ursa\",\r\n    \"2d1ur3t\",\r\n    \"du4schn\",\r\n    \"du4schr\",\r\n    \"du4sch3w\",\r\n    \"1dü\",\r\n    \"2düb\",\r\n    \"d3über\",\r\n    \"2d1v2\",\r\n    \"2d1w\",\r\n    \"dwa2\",\r\n    \"dwa4r\",\r\n    \"dwer3te\",\r\n    \"dwes2\",\r\n    \"dwest1\",\r\n    \"1dy\",\r\n    \"dy2l1\",\r\n    \"dym3\",\r\n    \"3dyn\",\r\n    \"dy2s1c\",\r\n    \"dy2sp\",\r\n    \"4d3z2\",\r\n    \"2e1a\",\r\n    \"ea2be\",\r\n    \"ea2b3l\",\r\n    \"ea4br\",\r\n    \"ea2c\",\r\n    \"eadli4\",\r\n    \"e3a2dr\",\r\n    \"ea2g\",\r\n    \"ea3ga4\",\r\n    \"ea3g4l\",\r\n    \"eakt2\",\r\n    \"e2akta\",\r\n    \"e3akto\",\r\n    \"ea2la\",\r\n    \"e3alei\",\r\n    \"e4alem\",\r\n    \"ea4l3ent\",\r\n    \"ealen4z\",\r\n    \"ealer2\",\r\n    \"e3a4lerg\",\r\n    \"e3alex\",\r\n    \"e3a2lin\",\r\n    \"eal1o\",\r\n    \"ea2lon\",\r\n    \"ea2lop\",\r\n    \"e2alti2\",\r\n    \"eal3tr\",\r\n    \"ea2l3u2\",\r\n    \"eam3\",\r\n    \"e2am4e\",\r\n    \"eam1o\",\r\n    \"eamt2\",\r\n    \"ea4na\",\r\n    \"ean3a2r\",\r\n    \"e3anf\",\r\n    \"e2ano\",\r\n    \"e3ar.\",\r\n    \"ea2ra\",\r\n    \"ea3rat\",\r\n    \"e2are\",\r\n    \"e4are.\",\r\n    \"ea2r1ei\",\r\n    \"ea4rene\",\r\n    \"e4arer\",\r\n    \"e4ares\",\r\n    \"ea2ro\",\r\n    \"e3arz\",\r\n    \"e3a2sc\",\r\n    \"e3asf\",\r\n    \"easin4\",\r\n    \"ea4sp\",\r\n    \"eas3s\",\r\n    \"eate2\",\r\n    \"eater1\",\r\n    \"eat4mes\",\r\n    \"eat2mu\",\r\n    \"eat4mun\",\r\n    \"ea5tr\",\r\n    \"eat3s2\",\r\n    \"e3at5t2\",\r\n    \"eatu2\",\r\n    \"e3aue\",\r\n    \"e3auf\",\r\n    \"eau2fe\",\r\n    \"eau4fl\",\r\n    \"e4aufo\",\r\n    \"eau3n\",\r\n    \"e2av\",\r\n    \"e2az\",\r\n    \"e3ä2\",\r\n    \"e1b\",\r\n    \"2eba\",\r\n    \"e3bak\",\r\n    \"eba2p\",\r\n    \"e3bän\",\r\n    \"2ebec\",\r\n    \"ebe1er\",\r\n    \"ebein7h\",\r\n    \"eb2el\",\r\n    \"ebe4ler\",\r\n    \"ebe2lo\",\r\n    \"ebels4t\",\r\n    \"ebel5ste\",\r\n    \"ebenen3\",\r\n    \"ebe4ras\",\r\n    \"ebert4\",\r\n    \"ebese2\",\r\n    \"ebe4s3eh\",\r\n    \"ebe2so\",\r\n    \"2ebet\",\r\n    \"ebet4s\",\r\n    \"2ebh\",\r\n    \"2ebi\",\r\n    \"2ebl\",\r\n    \"e3blä\",\r\n    \"eb3le.\",\r\n    \"eb3ler\",\r\n    \"eb4leu\",\r\n    \"e3blie\",\r\n    \"eb3lo\",\r\n    \"eb2lö\",\r\n    \"2ebo\",\r\n    \"e2bob\",\r\n    \"ebot2\",\r\n    \"ebö2s\",\r\n    \"2ebr\",\r\n    \"e5brau\",\r\n    \"eb4rea\",\r\n    \"eb2s1\",\r\n    \"eb4sche\",\r\n    \"ebse2\",\r\n    \"ebs7panne\",\r\n    \"ebs3tau\",\r\n    \"eb4stät\",\r\n    \"ebs3tem\",\r\n    \"ebs3t2h\",\r\n    \"ebs3ti\",\r\n    \"eb3str\",\r\n    \"2ebu\",\r\n    \"e2bunt\",\r\n    \"ebu2t3\",\r\n    \"eby4t\",\r\n    \"2e3ca\",\r\n    \"2e3ce\",\r\n    \"ech1am\",\r\n    \"ech1ä\",\r\n    \"2e1che\",\r\n    \"ech1ei\",\r\n    \"ech2en1\",\r\n    \"e6ch5erzi\",\r\n    \"e1chi\",\r\n    \"ech3l\",\r\n    \"ech3m\",\r\n    \"ech3n\",\r\n    \"e2cho.\",\r\n    \"ech3ö2\",\r\n    \"ech3r\",\r\n    \"ech4ri\",\r\n    \"echs4er\",\r\n    \"echst5re\",\r\n    \"ech3tab\",\r\n    \"ech3t4ei\",\r\n    \"ech6terh\",\r\n    \"echter8ha\",\r\n    \"e1chu\",\r\n    \"ech1w\",\r\n    \"2echz\",\r\n    \"e1ci\",\r\n    \"eci2a\",\r\n    \"ec4k\",\r\n    \"ecke4n1\",\r\n    \"e4ckerr\",\r\n    \"eck3ser\",\r\n    \"eck4sta\",\r\n    \"2eckt\",\r\n    \"3eckty\",\r\n    \"2e1cl\",\r\n    \"2eco\",\r\n    \"2e3cr\",\r\n    \"ec1s\",\r\n    \"2ect\",\r\n    \"e1d\",\r\n    \"ed2a\",\r\n    \"ed2dr\",\r\n    \"ed4e\",\r\n    \"ede2al\",\r\n    \"ede3n4er\",\r\n    \"edens1\",\r\n    \"eden4sa\",\r\n    \"eden4se\",\r\n    \"eden4sp\",\r\n    \"edeo2\",\r\n    \"ede2r\",\r\n    \"eder3a\",\r\n    \"ede3rat\",\r\n    \"eder3t2\",\r\n    \"edes2t\",\r\n    \"ed2i\",\r\n    \"e3di.\",\r\n    \"2edip\",\r\n    \"edi6teng\",\r\n    \"e3d2o\",\r\n    \"ed2ö\",\r\n    \"e3drei\",\r\n    \"ed4rö\",\r\n    \"ed2sal\",\r\n    \"ed4seh\",\r\n    \"ed2s1es\",\r\n    \"ed2si\",\r\n    \"ed2s1o\",\r\n    \"ed2s1p\",\r\n    \"ed2sto\",\r\n    \"ed2s3tr\",\r\n    \"ed2s1u\",\r\n    \"edun3\",\r\n    \"edund2\",\r\n    \"e3dy3\",\r\n    \"edys4\",\r\n    \"2ee\",\r\n    \"ee3a4\",\r\n    \"eeb2l\",\r\n    \"ee1c\",\r\n    \"ee4ce\",\r\n    \"ee2cho\",\r\n    \"e1e2ck\",\r\n    \"eede3\",\r\n    \"eede1s\",\r\n    \"eed3s2\",\r\n    \"ee1e2\",\r\n    \"e1eff\",\r\n    \"eef4l\",\r\n    \"eeg4\",\r\n    \"e1ei\",\r\n    \"ee2i3e\",\r\n    \"eein4se\",\r\n    \"eei4sc\",\r\n    \"eeis3s\",\r\n    \"e2ela\",\r\n    \"eel2e\",\r\n    \"e3e2lek\",\r\n    \"eele4n\",\r\n    \"eel2ö\",\r\n    \"e2e3m2a\",\r\n    \"e1emb\",\r\n    \"ee3min\",\r\n    \"e1emp\",\r\n    \"e1en\",\r\n    \"eena2g\",\r\n    \"e2enä\",\r\n    \"e2enc\",\r\n    \"een1e\",\r\n    \"e3eng\",\r\n    \"ee3ni\",\r\n    \"e3enk\",\r\n    \"e3enl\",\r\n    \"e2eno4\",\r\n    \"een3s\",\r\n    \"een2z\",\r\n    \"ee3o\",\r\n    \"e2ep\",\r\n    \"ee3po\",\r\n    \"eer4at\",\r\n    \"e1erbt\",\r\n    \"e1erd\",\r\n    \"ee3re\",\r\n    \"eer1ei\",\r\n    \"ee4r3en4g\",\r\n    \"eer2e2s\",\r\n    \"eere2t\",\r\n    \"eer3eti\",\r\n    \"e1ermä\",\r\n    \"ee1ro\",\r\n    \"ee1rö\",\r\n    \"e1eröf\",\r\n    \"eer2ös\",\r\n    \"ee3r2un\",\r\n    \"e1erz\",\r\n    \"ee1s2\",\r\n    \"ee3sh\",\r\n    \"ees3k\",\r\n    \"ee3sp\",\r\n    \"ee3s4t\",\r\n    \"e2et.\",\r\n    \"ee3t2a\",\r\n    \"ee4tat\",\r\n    \"ee2th\",\r\n    \"eet2i\",\r\n    \"ee3t4r\",\r\n    \"ee2tu\",\r\n    \"ee1u2\",\r\n    \"eewa4r\",\r\n    \"e1e2x\",\r\n    \"e1f\",\r\n    \"e2f1ad\",\r\n    \"e3fah\",\r\n    \"ef1ana\",\r\n    \"ef1ar\",\r\n    \"e2farc\",\r\n    \"ef3arm\",\r\n    \"e2fat\",\r\n    \"2efä\",\r\n    \"ef2äl\",\r\n    \"e2fäu\",\r\n    \"2efe\",\r\n    \"e2f1e2b\",\r\n    \"e3fef\",\r\n    \"efe4l3ei\",\r\n    \"ef1em\",\r\n    \"e2femi\",\r\n    \"efe2n1\",\r\n    \"3e2f1ene\",\r\n    \"e2fent\",\r\n    \"efer5f\",\r\n    \"eferin6d\",\r\n    \"efeuil4\",\r\n    \"3effek\",\r\n    \"1effi\",\r\n    \"ef2fl\",\r\n    \"ef3flu\",\r\n    \"2efi\",\r\n    \"ef1id\",\r\n    \"e2f1ins\",\r\n    \"efi2s\",\r\n    \"2efl\",\r\n    \"ef4le\",\r\n    \"e3f4lu\",\r\n    \"e3flü\",\r\n    \"2e3f2o\",\r\n    \"2efr\",\r\n    \"ef4reih\",\r\n    \"ef3rol\",\r\n    \"ef3rom\",\r\n    \"ef4ru\",\r\n    \"ef4rü\",\r\n    \"efs2\",\r\n    \"efs4c\",\r\n    \"ef3so\",\r\n    \"ef3sp\",\r\n    \"ef2tan\",\r\n    \"ef2tei\",\r\n    \"ef2tro\",\r\n    \"2efu\",\r\n    \"e2fum\",\r\n    \"e1g\",\r\n    \"ega2m\",\r\n    \"e3g2anz\",\r\n    \"egd4\",\r\n    \"e3ge\",\r\n    \"egein3\",\r\n    \"ege4lan\",\r\n    \"ege4l3au\",\r\n    \"ege8l7ei8er\",\r\n    \"ege4ler\",\r\n    \"ege2lo\",\r\n    \"eg2en\",\r\n    \"ege4n1a\",\r\n    \"ege6nero\",\r\n    \"ege2ra\",\r\n    \"ege5stal\",\r\n    \"ege4s3tr\",\r\n    \"ege1u\",\r\n    \"2egi\",\r\n    \"2egl\",\r\n    \"e2glo\",\r\n    \"e2glu\",\r\n    \"e2gn\",\r\n    \"eg3nä\",\r\n    \"eg3ni\",\r\n    \"ego1p\",\r\n    \"eg4sal\",\r\n    \"egsau3g\",\r\n    \"eg3se\",\r\n    \"eg4sei\",\r\n    \"egse3l\",\r\n    \"eg3si\",\r\n    \"eg4sk\",\r\n    \"egst2\",\r\n    \"eg4sto\",\r\n    \"eg2th\",\r\n    \"egung4\",\r\n    \"egus3\",\r\n    \"2e1ha\",\r\n    \"eh1ach\",\r\n    \"eh1ad\",\r\n    \"eh2ade\",\r\n    \"e3h2ah\",\r\n    \"eh2al\",\r\n    \"ehalt4s\",\r\n    \"e3hand\",\r\n    \"e2harz\",\r\n    \"e3haut\",\r\n    \"e1hä\",\r\n    \"e1he\",\r\n    \"eh1eff\",\r\n    \"eh1ein\",\r\n    \"eh1elt\",\r\n    \"e4hense\",\r\n    \"e4h3ente\",\r\n    \"ehen6tr\",\r\n    \"ehe3o\",\r\n    \"1e2hep\",\r\n    \"2eher\",\r\n    \"ehe1ra\",\r\n    \"e2h1er2f\",\r\n    \"e2h1er2l\",\r\n    \"ehe3str\",\r\n    \"2e1hi\",\r\n    \"eh3im\",\r\n    \"eh1lam\",\r\n    \"eh2l3au\",\r\n    \"eh1lä\",\r\n    \"ehl3ein\",\r\n    \"eh4lent\",\r\n    \"eh5l2er\",\r\n    \"ehlo2\",\r\n    \"ehl1or\",\r\n    \"eh2lö\",\r\n    \"ehl2se\",\r\n    \"ehls2t\",\r\n    \"2ehm\",\r\n    \"eh2mab\",\r\n    \"eh4mant\",\r\n    \"eh3mu\",\r\n    \"eh3na\",\r\n    \"eh3no\",\r\n    \"2e1ho\",\r\n    \"eho2f\",\r\n    \"eho2l\",\r\n    \"eh3oly\",\r\n    \"2e3hö\",\r\n    \"ehö4rer\",\r\n    \"eh2r1a2\",\r\n    \"ehr1ä\",\r\n    \"ehr1e2c\",\r\n    \"eh2rei\",\r\n    \"eh2rel\",\r\n    \"ehr6erle\",\r\n    \"ehr4ern\",\r\n    \"ehre3s\",\r\n    \"eh4rin\",\r\n    \"eh1roc\",\r\n    \"ehr1of\",\r\n    \"eh1rö\",\r\n    \"ehs2\",\r\n    \"eh3sh\",\r\n    \"eh1ste\",\r\n    \"2eh3t2\",\r\n    \"eht3h\",\r\n    \"eht4r\",\r\n    \"2e1hu\",\r\n    \"e2hum\",\r\n    \"eh1unf\",\r\n    \"e2huni\",\r\n    \"e3hur\",\r\n    \"e1hü\",\r\n    \"eh3üb\",\r\n    \"eh1w\",\r\n    \"e1hy\",\r\n    \"2ei3a2\",\r\n    \"eia4t\",\r\n    \"ei2bar\",\r\n    \"ei2bli\",\r\n    \"ei4blu\",\r\n    \"eibu4t\",\r\n    \"ei4b3ute\",\r\n    \"e4ic\",\r\n    \"ei1ce\",\r\n    \"ei2cho\",\r\n    \"e2id\",\r\n    \"ei2d1a\",\r\n    \"ei3de\",\r\n    \"ei4deis\",\r\n    \"eid5erre\",\r\n    \"2eidn\",\r\n    \"ei3do\",\r\n    \"ei3dr\",\r\n    \"ei1e\",\r\n    \"eie2b\",\r\n    \"eie2d\",\r\n    \"ei3e2l\",\r\n    \"eie2m\",\r\n    \"4ei3e2n3\",\r\n    \"eienge4\",\r\n    \"ei3es\",\r\n    \"eie2t\",\r\n    \"4eif.\",\r\n    \"ei1flo\",\r\n    \"1eifr\",\r\n    \"eif3t\",\r\n    \"2eig.\",\r\n    \"2eiga\",\r\n    \"eig2ar\",\r\n    \"2eigä\",\r\n    \"2eige.\",\r\n    \"2eigeb\",\r\n    \"2eigeh\",\r\n    \"4eigeno\",\r\n    \"5eigensc\",\r\n    \"4eig2er\",\r\n    \"2eiges\",\r\n    \"2eigew\",\r\n    \"2eigi\",\r\n    \"1ei2g3n\",\r\n    \"ei2go\",\r\n    \"ei4g3rat\",\r\n    \"2eigre\",\r\n    \"2eigrö\",\r\n    \"2eigru\",\r\n    \"2eigrü\",\r\n    \"2eigs\",\r\n    \"2eigt\",\r\n    \"2eigu\",\r\n    \"4eih\",\r\n    \"ei2hum\",\r\n    \"ei2kab\",\r\n    \"ei2kak\",\r\n    \"eik4am\",\r\n    \"eik2ar\",\r\n    \"eik2i\",\r\n    \"eik2l\",\r\n    \"ei3k4la\",\r\n    \"ei3klä\",\r\n    \"eik2o\",\r\n    \"e2il\",\r\n    \"4eil.\",\r\n    \"ei4l3ab\",\r\n    \"ei2lam\",\r\n    \"eila2n\",\r\n    \"ei4l3ane\",\r\n    \"ei4lang\",\r\n    \"ei4lanz\",\r\n    \"ei2lar\",\r\n    \"2eilb\",\r\n    \"eil3d4\",\r\n    \"ei4lein\",\r\n    \"eile2n1\",\r\n    \"ei2let\",\r\n    \"eil3f4\",\r\n    \"eilm2\",\r\n    \"ei2lob\",\r\n    \"eil2ö\",\r\n    \"2eim.\",\r\n    \"ei2mab\",\r\n    \"ei2m1ag\",\r\n    \"eim3all\",\r\n    \"eim3alp\",\r\n    \"ei2m1or\",\r\n    \"2eimö\",\r\n    \"2eimp\",\r\n    \"eim2p4l\",\r\n    \"eim3sa\",\r\n    \"ei2mur\",\r\n    \"e4i2n1a\",\r\n    \"ei4na2d\",\r\n    \"ei4nae\",\r\n    \"ei4n3an\",\r\n    \"ei4na4s\",\r\n    \"ei4n3at\",\r\n    \"ei2n3ä\",\r\n    \"ein3d2e\",\r\n    \"ein6derk\",\r\n    \"e1indu\",\r\n    \"2eineb\",\r\n    \"einen4e\",\r\n    \"ei4n3en4g\",\r\n    \"ei6nen6se\",\r\n    \"ein5erbe\",\r\n    \"ei4nerf\",\r\n    \"ei4nerk\",\r\n    \"ein5er6la\",\r\n    \"einer6sc\",\r\n    \"ei2neu\",\r\n    \"ein4fiz\",\r\n    \"2einfo\",\r\n    \"ein4fo.\",\r\n    \"ein4fos\",\r\n    \"ein3g2\",\r\n    \"3einger\",\r\n    \"e2ingr\",\r\n    \"e2inhä\",\r\n    \"ei2nie\",\r\n    \"e1init\",\r\n    \"ein3k4\",\r\n    \"ein6karn\",\r\n    \"3einkä\",\r\n    \"e2inl\",\r\n    \"ein3n2\",\r\n    \"3einna\",\r\n    \"ei2n1o2\",\r\n    \"1einri\",\r\n    \"e6insa\",\r\n    \"3einsat\",\r\n    \"e2insc\",\r\n    \"5einschä\",\r\n    \"ein6stal\",\r\n    \"ein6terv\",\r\n    \"3eintö\",\r\n    \"1einu\",\r\n    \"ei3o\",\r\n    \"eio2p\",\r\n    \"eio4s\",\r\n    \"ei1p\",\r\n    \"eip2f\",\r\n    \"2eir\",\r\n    \"eir2c\",\r\n    \"ei3re\",\r\n    \"e1irr\",\r\n    \"e4is.\",\r\n    \"ei2sa\",\r\n    \"ei3sas\",\r\n    \"ei6schwu\",\r\n    \"e4ise\",\r\n    \"ei4ser4g\",\r\n    \"ei4s3er4l\",\r\n    \"ei6s5erst\",\r\n    \"ei4s3erw\",\r\n    \"1eisho\",\r\n    \"ei3s2ky\",\r\n    \"ei2so\",\r\n    \"eis2pe\",\r\n    \"e2iss\",\r\n    \"eisser6s\",\r\n    \"4ei1sto\",\r\n    \"ei2sum\",\r\n    \"ei2sur\",\r\n    \"1eiswo\",\r\n    \"e2it\",\r\n    \"ei2t1a2b\",\r\n    \"ei2tal\",\r\n    \"ei2t1an\",\r\n    \"ei2tap\",\r\n    \"ei2tar\",\r\n    \"ei4tat\",\r\n    \"2eitä\",\r\n    \"ei2tän\",\r\n    \"eite4ra\",\r\n    \"ei4tess\",\r\n    \"ei2t1h\",\r\n    \"ei2tin\",\r\n    \"eito2\",\r\n    \"ei4trau\",\r\n    \"ei4tro\",\r\n    \"eitsa4g\",\r\n    \"eit3t4\",\r\n    \"4eitu\",\r\n    \"ei4t1um\",\r\n    \"ei2t1ur\",\r\n    \"eit3z2\",\r\n    \"eiv2\",\r\n    \"eive4\",\r\n    \"ei2zar\",\r\n    \"eiz1in\",\r\n    \"2e3j\",\r\n    \"e1k\",\r\n    \"2ek.\",\r\n    \"2e3k2a\",\r\n    \"1ekd\",\r\n    \"ek2e\",\r\n    \"e3ke.\",\r\n    \"e3ke4n\",\r\n    \"e3kes\",\r\n    \"e3key\",\r\n    \"e3k2l\",\r\n    \"ek4lo\",\r\n    \"ek4n\",\r\n    \"e3k2o\",\r\n    \"ekor4da\",\r\n    \"2e3kr\",\r\n    \"ek4s1p\",\r\n    \"4ekt\",\r\n    \"ek2tan\",\r\n    \"ek5t6ante\",\r\n    \"ekt3at\",\r\n    \"ek2t1ä\",\r\n    \"ek2te2l\",\r\n    \"ekt3erf\",\r\n    \"ekt3erk\",\r\n    \"ek4t3er4z\",\r\n    \"ekt2o\",\r\n    \"ek2t3o4b\",\r\n    \"ek5tri\",\r\n    \"2e3ku\",\r\n    \"ekur2a\",\r\n    \"e3k2w\",\r\n    \"1ekz\",\r\n    \"e1la\",\r\n    \"el2abt\",\r\n    \"el3abu\",\r\n    \"ela2ck\",\r\n    \"el3ader\",\r\n    \"el1af\",\r\n    \"ela4h\",\r\n    \"e2l1ak\",\r\n    \"e2l1a2m\",\r\n    \"el2a3mi\",\r\n    \"e3lamp\",\r\n    \"el1ana\",\r\n    \"e4landa\",\r\n    \"e2lanm\",\r\n    \"e4l1ans\",\r\n    \"e2l1ant\",\r\n    \"e4lanw\",\r\n    \"el1anz\",\r\n    \"2elao\",\r\n    \"e2l1ap\",\r\n    \"e2l1ar\",\r\n    \"el3a2ri\",\r\n    \"ela2s\",\r\n    \"el1a4si\",\r\n    \"el1asp\",\r\n    \"ela3su\",\r\n    \"el3aufw\",\r\n    \"2e1lä\",\r\n    \"2elbil\",\r\n    \"2elbr\",\r\n    \"2eld\",\r\n    \"elda2r\",\r\n    \"eld3ari\",\r\n    \"eld4arm\",\r\n    \"el4d3erf\",\r\n    \"elder4p\",\r\n    \"elder4s\",\r\n    \"eld5erst\",\r\n    \"el3des\",\r\n    \"elds2\",\r\n    \"4e3le.\",\r\n    \"2e3lea\",\r\n    \"elea2r\",\r\n    \"2e3leb\",\r\n    \"4ele2c\",\r\n    \"el1ech\",\r\n    \"1elefa\",\r\n    \"eleg3s\",\r\n    \"4eleh\",\r\n    \"el3ehe.\",\r\n    \"2elei\",\r\n    \"e6l5ei6ern\",\r\n    \"e2l1ein\",\r\n    \"e3leine\",\r\n    \"e5leit\",\r\n    \"1elek\",\r\n    \"2eleko\",\r\n    \"e2l1el\",\r\n    \"1e2lem\",\r\n    \"2e3lem.\",\r\n    \"e3lema\",\r\n    \"ele2mi\",\r\n    \"e3lemm\",\r\n    \"2el1emp\",\r\n    \"2e3len.\",\r\n    \"elen4k3l\",\r\n    \"e4lense\",\r\n    \"e2l1ent\",\r\n    \"e3lep\",\r\n    \"2eler\",\r\n    \"e3ler.\",\r\n    \"eler2a\",\r\n    \"el1erd\",\r\n    \"e6lereig\",\r\n    \"el1erf\",\r\n    \"e4ler4fa\",\r\n    \"e4lerfi\",\r\n    \"e2lerg\",\r\n    \"el1erh\",\r\n    \"el1erk\",\r\n    \"e2l1erl\",\r\n    \"e4l3ernä\",\r\n    \"eler2ö\",\r\n    \"e2l1err\",\r\n    \"el3eru\",\r\n    \"el1erw\",\r\n    \"e2l1ess\",\r\n    \"e2l1e4ta\",\r\n    \"ele2ti\",\r\n    \"elet4ta\",\r\n    \"2el1ex\",\r\n    \"e3lex.\",\r\n    \"1elf.\",\r\n    \"elf2er\",\r\n    \"1elfm\",\r\n    \"elf4r\",\r\n    \"1elft\",\r\n    \"elgi5er.\",\r\n    \"elgi5ers\",\r\n    \"el3g2l\",\r\n    \"elg4r\",\r\n    \"e2l1id\",\r\n    \"2e3lie\",\r\n    \"eli3ef.\",\r\n    \"2elig\",\r\n    \"e2lim\",\r\n    \"elin3a\",\r\n    \"eli3no\",\r\n    \"el1ins\",\r\n    \"2elk\",\r\n    \"el4larb\",\r\n    \"ellar4t\",\r\n    \"el3lär\",\r\n    \"el5le.\",\r\n    \"ell2ei\",\r\n    \"ell3ein\",\r\n    \"ell3eis\",\r\n    \"el4lel\",\r\n    \"el5lend\",\r\n    \"ellenen5\",\r\n    \"ell2er\",\r\n    \"eller8fas\",\r\n    \"eller7g\",\r\n    \"ell3erh\",\r\n    \"el3les\",\r\n    \"el2lim\",\r\n    \"1ellip\",\r\n    \"el2lor\",\r\n    \"ell2ö\",\r\n    \"ell3sp\",\r\n    \"el3ma\",\r\n    \"elm2e\",\r\n    \"elm3ein\",\r\n    \"2eln\",\r\n    \"el3na\",\r\n    \"2elo\",\r\n    \"e2l3oa\",\r\n    \"e2lof\",\r\n    \"e2lol\",\r\n    \"e2lom\",\r\n    \"e2lonk\",\r\n    \"el1opf\",\r\n    \"e2l1or\",\r\n    \"e3lore\",\r\n    \"elo2ri\",\r\n    \"e3lot\",\r\n    \"e3l2ov\",\r\n    \"2elö\",\r\n    \"elö2s\",\r\n    \"el3p4\",\r\n    \"el4s5ein\",\r\n    \"el3sen\",\r\n    \"els4tri\",\r\n    \"el2sum\",\r\n    \"el4tans\",\r\n    \"elte4m\",\r\n    \"el5ten.\",\r\n    \"el4t3ent\",\r\n    \"elter4b\",\r\n    \"elter4f\",\r\n    \"elt3erh\",\r\n    \"elter6le\",\r\n    \"3elter4n\",\r\n    \"elt5ero\",\r\n    \"elter6sc\",\r\n    \"elte2s\",\r\n    \"el4tesc\",\r\n    \"elt3eth\",\r\n    \"el3the\",\r\n    \"el5tri\",\r\n    \"elts3pa\",\r\n    \"2e1lu\",\r\n    \"el1uf\",\r\n    \"e2l1um\",\r\n    \"e2l3u2r\",\r\n    \"elu2s\",\r\n    \"el3use\",\r\n    \"elu2t\",\r\n    \"el3uto\",\r\n    \"e1lü\",\r\n    \"2ely\",\r\n    \"e2lya\",\r\n    \"el3z2ac\",\r\n    \"el2zar\",\r\n    \"el4zene\",\r\n    \"elz1in\",\r\n    \"el2zwa\",\r\n    \"2elzy\",\r\n    \"e1m\",\r\n    \"e2m3a2b\",\r\n    \"e2m1alk\",\r\n    \"em3anf\",\r\n    \"e2m1ano\",\r\n    \"em1ans\",\r\n    \"1emanz\",\r\n    \"e4m1a4s3p\",\r\n    \"em1au\",\r\n    \"2e3mä\",\r\n    \"em2äh\",\r\n    \"1emba\",\r\n    \"1embo\",\r\n    \"1embry\",\r\n    \"em2dä\",\r\n    \"emd1r\",\r\n    \"em2dra\",\r\n    \"2eme\",\r\n    \"e2m1e2b\",\r\n    \"e2mef\",\r\n    \"eme2i\",\r\n    \"e2mele\",\r\n    \"em2en\",\r\n    \"emen6gel\",\r\n    \"emen4t3h\",\r\n    \"eme3r2i\",\r\n    \"e2m1er2l\",\r\n    \"em1erw\",\r\n    \"e4mesu\",\r\n    \"3e2meti\",\r\n    \"e2m1i2d\",\r\n    \"emi2ei\",\r\n    \"e2mig\",\r\n    \"emik2\",\r\n    \"em1im\",\r\n    \"2emin\",\r\n    \"emi3n2a\",\r\n    \"e3mind\",\r\n    \"em1int\",\r\n    \"1e2mir\",\r\n    \"e3misc\",\r\n    \"emi3tr\",\r\n    \"emma3u\",\r\n    \"em2m1ei\",\r\n    \"e2moa\",\r\n    \"e3mol\",\r\n    \"emo3s\",\r\n    \"1empf4\",\r\n    \"em3pfl\",\r\n    \"em3po\",\r\n    \"empo1s\",\r\n    \"em2sa\",\r\n    \"em4scha\",\r\n    \"em4sei\",\r\n    \"em2sim\",\r\n    \"em2spr\",\r\n    \"em2st\",\r\n    \"ems5tr\",\r\n    \"ems3tro\",\r\n    \"em3t2\",\r\n    \"1e2mul\",\r\n    \"3emuls\",\r\n    \"emune7\",\r\n    \"e3mur\",\r\n    \"2emü\",\r\n    \"e2na\",\r\n    \"4ena.\",\r\n    \"e4na2b\",\r\n    \"en3aba\",\r\n    \"en3abo\",\r\n    \"4ena2c\",\r\n    \"en3ache\",\r\n    \"e4n3ack\",\r\n    \"enadi4\",\r\n    \"e4naf\",\r\n    \"4enah\",\r\n    \"en3ak\",\r\n    \"en1al\",\r\n    \"enal2a\",\r\n    \"e4nalb\",\r\n    \"e3nale\",\r\n    \"en2alg\",\r\n    \"ena3l2i\",\r\n    \"e4nalk\",\r\n    \"e4nalm\",\r\n    \"e4nalo\",\r\n    \"enal3p\",\r\n    \"4en1am\",\r\n    \"ena4n\",\r\n    \"e4nand\",\r\n    \"en3ane\",\r\n    \"e4nant\",\r\n    \"e4nanz\",\r\n    \"en1ap\",\r\n    \"ena2pa\",\r\n    \"en3are\",\r\n    \"en3ark\",\r\n    \"en3aro\",\r\n    \"en1as\",\r\n    \"ena2sc\",\r\n    \"e4nast\",\r\n    \"2enat\",\r\n    \"4e5nati\",\r\n    \"e4natl\",\r\n    \"enat4s\",\r\n    \"e4n3att\",\r\n    \"4enatu\",\r\n    \"e4nau2f\",\r\n    \"en3aug\",\r\n    \"e4n3aur\",\r\n    \"e6nausta\",\r\n    \"e4naut\",\r\n    \"en1a2x\",\r\n    \"en1a4z\",\r\n    \"en1ä\",\r\n    \"en3äb\",\r\n    \"e3näi\",\r\n    \"e2när\",\r\n    \"en2ä3s\",\r\n    \"en3äst\",\r\n    \"en2ce.\",\r\n    \"end2ac\",\r\n    \"en2dal\",\r\n    \"en4dang\",\r\n    \"2endel\",\r\n    \"ende4lä\",\r\n    \"en4d3es4s\",\r\n    \"en2dex\",\r\n    \"en2did\",\r\n    \"en3d4ort\",\r\n    \"end3s4au\",\r\n    \"end3s2l\",\r\n    \"end3s2p\",\r\n    \"end3sz\",\r\n    \"en3d2um\",\r\n    \"en3d2ü\",\r\n    \"2ene.\",\r\n    \"en3e4ben\",\r\n    \"en1e2c\",\r\n    \"e2neff\",\r\n    \"ene2h\",\r\n    \"en2eid\",\r\n    \"e3neien\",\r\n    \"e4neige\",\r\n    \"4eneigu\",\r\n    \"e4nein\",\r\n    \"e4neis\",\r\n    \"e2n1el\",\r\n    \"ene4le\",\r\n    \"2ene2m\",\r\n    \"e2n1emi\",\r\n    \"2enen\",\r\n    \"e4nense\",\r\n    \"e4n1ent\",\r\n    \"en4entr\",\r\n    \"en3envi\",\r\n    \"en1ep\",\r\n    \"4e3ner.\",\r\n    \"en2era\",\r\n    \"e2n1erd\",\r\n    \"en3erei\",\r\n    \"e2nerf\",\r\n    \"en4erfr\",\r\n    \"1energ\",\r\n    \"e2nerh\",\r\n    \"e2nerk\",\r\n    \"e2n1erl\",\r\n    \"e4nermi\",\r\n    \"e4n3ermo\",\r\n    \"4enern\",\r\n    \"e4n3erne\",\r\n    \"ene2ro\",\r\n    \"e2n1err\",\r\n    \"en1ers\",\r\n    \"4eners.\",\r\n    \"e2n1ert\",\r\n    \"en4ert.\",\r\n    \"e2n3eru\",\r\n    \"e2n1erw\",\r\n    \"2enes\",\r\n    \"e3nes.\",\r\n    \"e2n1e2sc\",\r\n    \"e2n1esk\",\r\n    \"e2n1ess\",\r\n    \"en1eta\",\r\n    \"e2n1eth\",\r\n    \"en1eul\",\r\n    \"e2n1e2v\",\r\n    \"e4ne2x\",\r\n    \"en3f\",\r\n    \"enf2u\",\r\n    \"1engad\",\r\n    \"1engag\",\r\n    \"en3g2al\",\r\n    \"enge3r4a\",\r\n    \"en3g2i\",\r\n    \"en3gn\",\r\n    \"en3g2o\",\r\n    \"1engp\",\r\n    \"eng4ra\",\r\n    \"eng3se\",\r\n    \"2eni\",\r\n    \"e3ni.\",\r\n    \"e3nic\",\r\n    \"4e3nie\",\r\n    \"eni3er.\",\r\n    \"eni3erp\",\r\n    \"eni5ers.\",\r\n    \"en3i2ko\",\r\n    \"en3ill\",\r\n    \"eni4m\",\r\n    \"en1ima\",\r\n    \"en1imi\",\r\n    \"e2n1in\",\r\n    \"e3nio\",\r\n    \"eni2ö\",\r\n    \"e2nir\",\r\n    \"eni4sa\",\r\n    \"e4n3iso\",\r\n    \"e3nit2\",\r\n    \"e3niv\",\r\n    \"enk3aus\",\r\n    \"3enkeli\",\r\n    \"enk3erg\",\r\n    \"en4k3erk\",\r\n    \"en3k2ü\",\r\n    \"en2nef\",\r\n    \"en2nel\",\r\n    \"en4ner4f\",\r\n    \"enn3erg\",\r\n    \"en4n3erl\",\r\n    \"enn2i\",\r\n    \"enni6ger\",\r\n    \"2enniv\",\r\n    \"enns2\",\r\n    \"enn3ste\",\r\n    \"e2n3oa\",\r\n    \"e2n1ob\",\r\n    \"e3nobel\",\r\n    \"eno2br\",\r\n    \"e2nof\",\r\n    \"en3olm\",\r\n    \"eno2ma\",\r\n    \"eno4n\",\r\n    \"e2n1op\",\r\n    \"e2n1o2r\",\r\n    \"en2ora\",\r\n    \"eno4ri\",\r\n    \"4enorm\",\r\n    \"e2n1ost\",\r\n    \"4e3not\",\r\n    \"eno2w\",\r\n    \"2e1nö\",\r\n    \"en1ö2d\",\r\n    \"en3sabb\",\r\n    \"en2san\",\r\n    \"en5sche\",\r\n    \"en2seb\",\r\n    \"1ensem\",\r\n    \"ensen3e\",\r\n    \"ens3ere\",\r\n    \"en3spo\",\r\n    \"ens4por\",\r\n    \"enst5alt\",\r\n    \"en4s3tät\",\r\n    \"ens4tel\",\r\n    \"ens6temp\",\r\n    \"ens2th\",\r\n    \"2ensto\",\r\n    \"enst2ü\",\r\n    \"en5t2ag\",\r\n    \"en4tanm\",\r\n    \"en4tanw\",\r\n    \"en3t4ark\",\r\n    \"1entd\",\r\n    \"en3t2el\",\r\n    \"ente2n\",\r\n    \"3entera\",\r\n    \"en4terb\",\r\n    \"1entf\",\r\n    \"2entfo\",\r\n    \"1entg\",\r\n    \"3entgeg\",\r\n    \"en2thi\",\r\n    \"1enthu\",\r\n    \"1enthü\",\r\n    \"en4t1id\",\r\n    \"3entla\",\r\n    \"1entn\",\r\n    \"en2tob\",\r\n    \"entopf3\",\r\n    \"en2t1os\",\r\n    \"2entö\",\r\n    \"en4t3rol\",\r\n    \"1entsc\",\r\n    \"1entso\",\r\n    \"ent4sto\",\r\n    \"1entw\",\r\n    \"4entwet\",\r\n    \"3entwic\",\r\n    \"1entz\",\r\n    \"e2n1u\",\r\n    \"e3nu.\",\r\n    \"e4nu4r\",\r\n    \"2enu4t\",\r\n    \"e4nuto\",\r\n    \"e1nü\",\r\n    \"enü1st\",\r\n    \"4enwü\",\r\n    \"2e1ny\",\r\n    \"en3zare\",\r\n    \"enz2äp\",\r\n    \"1enzep\",\r\n    \"enz3erg\",\r\n    \"en4z3erk\",\r\n    \"en4zerl\",\r\n    \"en4z3erm\",\r\n    \"enz5ersc\",\r\n    \"enzi2d\",\r\n    \"enzlan4\",\r\n    \"enzo2l\",\r\n    \"1enzy\",\r\n    \"e1ñ\",\r\n    \"4eo\",\r\n    \"e1o2b1\",\r\n    \"eo3ben\",\r\n    \"eo3bl\",\r\n    \"eo3bo\",\r\n    \"eo3br\",\r\n    \"eo1c\",\r\n    \"eoch2\",\r\n    \"eo3dr\",\r\n    \"e1of\",\r\n    \"eo3g2\",\r\n    \"e1oh\",\r\n    \"eo3la\",\r\n    \"e3o2ly\",\r\n    \"e1on\",\r\n    \"e3o2nat\",\r\n    \"eo1o\",\r\n    \"e1opf\",\r\n    \"eop4r\",\r\n    \"e1or\",\r\n    \"e3or.\",\r\n    \"eo1ra\",\r\n    \"e3orb\",\r\n    \"eorgi1\",\r\n    \"e3ors\",\r\n    \"eort2\",\r\n    \"e3orw\",\r\n    \"eo1s2\",\r\n    \"e3os.\",\r\n    \"eo3se\",\r\n    \"e1oste\",\r\n    \"e1ou4\",\r\n    \"eo1ul\",\r\n    \"e1ö4\",\r\n    \"e1p\",\r\n    \"2ep2a\",\r\n    \"epa2g\",\r\n    \"epas6ser\",\r\n    \"2eper\",\r\n    \"e3p2f4\",\r\n    \"e5pfi\",\r\n    \"1e2pid\",\r\n    \"e2pig\",\r\n    \"e2pik\",\r\n    \"1e2pile\",\r\n    \"e3pio\",\r\n    \"1epis\",\r\n    \"2epist\",\r\n    \"1e2pit\",\r\n    \"ep3le\",\r\n    \"1epoc\",\r\n    \"eport4\",\r\n    \"1e2pos.\",\r\n    \"ep2p1a\",\r\n    \"eppe3l\",\r\n    \"ep2pl\",\r\n    \"ep2pr\",\r\n    \"2epr\",\r\n    \"ep3sh\",\r\n    \"ep2tal\",\r\n    \"ept2an\",\r\n    \"ep2tau\",\r\n    \"2e3pu\",\r\n    \"epu2s\",\r\n    \"4e3q\",\r\n    \"er1a\",\r\n    \"e3ra.\",\r\n    \"era2be\",\r\n    \"e2r3a2ch\",\r\n    \"e3rad.\",\r\n    \"e3radi\",\r\n    \"e2radj\",\r\n    \"e2radm\",\r\n    \"e4radmi\",\r\n    \"e4r3adr\",\r\n    \"eraf4a\",\r\n    \"era2g\",\r\n    \"e1rah\",\r\n    \"e1rai\",\r\n    \"er3aic\",\r\n    \"e3rake\",\r\n    \"e1rald\",\r\n    \"eral4eb\",\r\n    \"er3alke\",\r\n    \"e2r3all\",\r\n    \"er2an.\",\r\n    \"era4n4a\",\r\n    \"eran3d\",\r\n    \"e3rand.\",\r\n    \"e4rangr\",\r\n    \"e2ranh\",\r\n    \"e2rano\",\r\n    \"e1rap\",\r\n    \"er3apa\",\r\n    \"er3apf\",\r\n    \"e2rar\",\r\n    \"er3are\",\r\n    \"e3rari\",\r\n    \"e3ras.\",\r\n    \"era2si\",\r\n    \"e1rast\",\r\n    \"era2ß\",\r\n    \"e4ratel\",\r\n    \"e2ratl\",\r\n    \"e1raub\",\r\n    \"e1rauc\",\r\n    \"er3aue\",\r\n    \"erau2f\",\r\n    \"er3aug\",\r\n    \"e2ra2v\",\r\n    \"e1raw\",\r\n    \"e2r3ax\",\r\n    \"e1raz\",\r\n    \"e1rä\",\r\n    \"er1äf\",\r\n    \"er1äh\",\r\n    \"er1ä2m\",\r\n    \"er1äp\",\r\n    \"e2r1äs\",\r\n    \"er1ätz\",\r\n    \"3erbarm\",\r\n    \"erb2au\",\r\n    \"erb2e\",\r\n    \"2erbru\",\r\n    \"erb2sp\",\r\n    \"er1c\",\r\n    \"er3chl\",\r\n    \"erch2o\",\r\n    \"erd2am\",\r\n    \"erda3me\",\r\n    \"1erdb\",\r\n    \"2erdec\",\r\n    \"2erdel\",\r\n    \"er4d3en4g\",\r\n    \"erd3erw\",\r\n    \"erdes4t\",\r\n    \"erdeu2\",\r\n    \"1erdg\",\r\n    \"erd3st\",\r\n    \"2erdy\",\r\n    \"4ere.\",\r\n    \"er3e4ben\",\r\n    \"e3r2ech\",\r\n    \"er3echs\",\r\n    \"er1e2ck\",\r\n    \"er1edi\",\r\n    \"ere4dit\",\r\n    \"er1eff\",\r\n    \"e2r1e2h\",\r\n    \"ere4i\",\r\n    \"4e3rei.\",\r\n    \"e3reib\",\r\n    \"er1eig\",\r\n    \"4ereih\",\r\n    \"e4r3eime\",\r\n    \"e4reink\",\r\n    \"er3eis.\",\r\n    \"er5eisar\",\r\n    \"er3eisb\",\r\n    \"er3eisf\",\r\n    \"er3eisr\",\r\n    \"erei5str\",\r\n    \"e4rek\",\r\n    \"er1e2l\",\r\n    \"e2rele\",\r\n    \"ere3lev\",\r\n    \"ereli1\",\r\n    \"2erem\",\r\n    \"4erem.\",\r\n    \"er1emi\",\r\n    \"ere4mis\",\r\n    \"e2remp\",\r\n    \"2eren\",\r\n    \"4e3ren.\",\r\n    \"e3rena\",\r\n    \"eren1e\",\r\n    \"e4rense\",\r\n    \"e4rentn\",\r\n    \"e4rents\",\r\n    \"e3renz\",\r\n    \"eren8z7en8d\",\r\n    \"er1epe\",\r\n    \"4erer.\",\r\n    \"2ererb\",\r\n    \"erer3fa\",\r\n    \"e4r3erfo\",\r\n    \"e2rerh\",\r\n    \"e2rerk\",\r\n    \"e2rer2l\",\r\n    \"erer5lau\",\r\n    \"4erern.\",\r\n    \"e4rerne\",\r\n    \"e2rer2o\",\r\n    \"erer4ri\",\r\n    \"er1ers\",\r\n    \"4erers.\",\r\n    \"e8rersche\",\r\n    \"e2rert\",\r\n    \"2ererv\",\r\n    \"2ererw\",\r\n    \"2eres\",\r\n    \"4eres.\",\r\n    \"ere2sp\",\r\n    \"er1ess\",\r\n    \"eres3sk\",\r\n    \"er1eta\",\r\n    \"er1eu\",\r\n    \"ere4vid\",\r\n    \"erf2e\",\r\n    \"4erform\",\r\n    \"erf4r\",\r\n    \"4erfür\",\r\n    \"er4g3are\",\r\n    \"4ergebi\",\r\n    \"3ergebn\",\r\n    \"4ergebü\",\r\n    \"4ergeha\",\r\n    \"4ergehä\",\r\n    \"ergel4s3\",\r\n    \"erg5elst\",\r\n    \"4ergeni\",\r\n    \"2ergn\",\r\n    \"er2gop\",\r\n    \"4ergrem\",\r\n    \"erg1s\",\r\n    \"erg3s2o\",\r\n    \"ergs2p\",\r\n    \"ergs4t\",\r\n    \"e4rh\",\r\n    \"1erhab\",\r\n    \"er3hag\",\r\n    \"2erhai\",\r\n    \"4erhals\",\r\n    \"2erham\",\r\n    \"2erhan\",\r\n    \"2erhas\",\r\n    \"er3hei\",\r\n    \"2erher\",\r\n    \"er3hu\",\r\n    \"2eri\",\r\n    \"e2riat\",\r\n    \"e3rib\",\r\n    \"4e3ric\",\r\n    \"e4r3ico\",\r\n    \"er1id\",\r\n    \"4e3rie\",\r\n    \"eri3en1\",\r\n    \"e3ri3k\",\r\n    \"erik4l\",\r\n    \"4e3rin.\",\r\n    \"e2r1ind\",\r\n    \"e2r1ini\",\r\n    \"er1ink\",\r\n    \"er1inl\",\r\n    \"er1int\",\r\n    \"er1inz\",\r\n    \"e2ri2on\",\r\n    \"4eris\",\r\n    \"e2riso\",\r\n    \"e2risr\",\r\n    \"er1ita\",\r\n    \"3eritr\",\r\n    \"e3riv\",\r\n    \"2erk.\",\r\n    \"2erkaj\",\r\n    \"er3ker\",\r\n    \"1erklä\",\r\n    \"2erkm\",\r\n    \"2erkre\",\r\n    \"erk5t4\",\r\n    \"er2kum\",\r\n    \"2erl.\",\r\n    \"2erlag\",\r\n    \"3erlebn\",\r\n    \"4erleh\",\r\n    \"2erln\",\r\n    \"er3m2\",\r\n    \"ermen4s\",\r\n    \"er4m3ers\",\r\n    \"er4n3alt\",\r\n    \"er3ne\",\r\n    \"er4nene\",\r\n    \"er4nerf\",\r\n    \"er4nerk\",\r\n    \"3erneue\",\r\n    \"er2nob\",\r\n    \"erno2r\",\r\n    \"ern1os\",\r\n    \"2e1ro.\",\r\n    \"e1roa\",\r\n    \"er1ob\",\r\n    \"ero2bl\",\r\n    \"ero2br\",\r\n    \"e2r1o2f\",\r\n    \"e1rog\",\r\n    \"e1roh\",\r\n    \"e1rok\",\r\n    \"e1rol\",\r\n    \"er3oly\",\r\n    \"e1rom\",\r\n    \"er3omb\",\r\n    \"2e3ron\",\r\n    \"e2r1oo\",\r\n    \"er1op\",\r\n    \"2e4ro4r\",\r\n    \"eror2a\",\r\n    \"e1ros\",\r\n    \"1erosi\",\r\n    \"e3rosit\",\r\n    \"e1rou\",\r\n    \"e1row\",\r\n    \"er1o2x\",\r\n    \"er1oz\",\r\n    \"erö2d\",\r\n    \"2eröh\",\r\n    \"erö4l\",\r\n    \"er1ös\",\r\n    \"erö2sc\",\r\n    \"er3p\",\r\n    \"er3rä\",\r\n    \"2erren\",\r\n    \"er3ro\",\r\n    \"2errü\",\r\n    \"er3s2a\",\r\n    \"ers4ana\",\r\n    \"ersch4\",\r\n    \"er5schn\",\r\n    \"4ersei\",\r\n    \"ers2el\",\r\n    \"er3sen\",\r\n    \"er5s2i\",\r\n    \"er3sk\",\r\n    \"4ersted\",\r\n    \"er3stel\",\r\n    \"erst5ers\",\r\n    \"4erstil\",\r\n    \"ers4tod\",\r\n    \"ers6tr\",\r\n    \"er3swi\",\r\n    \"er3sz\",\r\n    \"ert1ab\",\r\n    \"er3tat\",\r\n    \"er4t3erf\",\r\n    \"er4t3er4g\",\r\n    \"er4ter4h\",\r\n    \"er4ter4k\",\r\n    \"er4ters\",\r\n    \"ert1h\",\r\n    \"er2tho\",\r\n    \"4ertö\",\r\n    \"er5tri\",\r\n    \"4ertru\",\r\n    \"erts2e\",\r\n    \"erts2p\",\r\n    \"2eru\",\r\n    \"eruf4s3\",\r\n    \"e4r3uhr\",\r\n    \"er1u2m1\",\r\n    \"er1und\",\r\n    \"e4rundu\",\r\n    \"erung4\",\r\n    \"er1up.\",\r\n    \"er3ur\",\r\n    \"er3use\",\r\n    \"e2r3uz\",\r\n    \"erü4b\",\r\n    \"3erweck\",\r\n    \"er4zerk\",\r\n    \"er4z3ers\",\r\n    \"es3ab\",\r\n    \"e4sabe\",\r\n    \"e2s1a2d\",\r\n    \"e3saf\",\r\n    \"es3ak\",\r\n    \"e4s3all\",\r\n    \"es1ami\",\r\n    \"es3ampl\",\r\n    \"es2ank\",\r\n    \"es2anm\",\r\n    \"es2anr\",\r\n    \"es3anz\",\r\n    \"e3sap\",\r\n    \"es2apa\",\r\n    \"esa2ra\",\r\n    \"e3sa2s\",\r\n    \"es2ast\",\r\n    \"esa2v\",\r\n    \"es1ax\",\r\n    \"2esb\",\r\n    \"esbi5er.\",\r\n    \"e3s2ce\",\r\n    \"esch2\",\r\n    \"es4chi\",\r\n    \"e2s3ec\",\r\n    \"es1ehr\",\r\n    \"esein4s\",\r\n    \"es2el\",\r\n    \"ese4nal\",\r\n    \"ese4neu\",\r\n    \"esen3o\",\r\n    \"es2ens\",\r\n    \"esen3sk\",\r\n    \"esen3th\",\r\n    \"eser4at\",\r\n    \"ese4r1u2\",\r\n    \"eses2k\",\r\n    \"e2s3e2x\",\r\n    \"2esf\",\r\n    \"2esh\",\r\n    \"es2har\",\r\n    \"es3he\",\r\n    \"2esi\",\r\n    \"esi1er\",\r\n    \"e2s3i2k\",\r\n    \"e2s1il\",\r\n    \"esi2st\",\r\n    \"es2kat\",\r\n    \"e4s3ke\",\r\n    \"e4s3kl\",\r\n    \"es3ku\",\r\n    \"e4s3ky\",\r\n    \"es3l\",\r\n    \"2esm\",\r\n    \"e2s3oa\",\r\n    \"e4s3ob\",\r\n    \"e2s1od\",\r\n    \"es2oh\",\r\n    \"eso2r\",\r\n    \"es1ora\",\r\n    \"eso3re\",\r\n    \"es2ort\",\r\n    \"e3sot\",\r\n    \"e3s2ö\",\r\n    \"4esp\",\r\n    \"e3spal\",\r\n    \"es4park\",\r\n    \"es2pek\",\r\n    \"e4spers\",\r\n    \"e2sph\",\r\n    \"e3s2pi\",\r\n    \"e3s2por\",\r\n    \"2esr\",\r\n    \"2ess.\",\r\n    \"es2s1ag\",\r\n    \"essali3\",\r\n    \"essau4s\",\r\n    \"1essay\",\r\n    \"2essä\",\r\n    \"2es3sc\",\r\n    \"ess6ere\",\r\n    \"ess4erf\",\r\n    \"ess3erg\",\r\n    \"ess5er6la\",\r\n    \"2essk\",\r\n    \"2esso\",\r\n    \"es2sof\",\r\n    \"2essp\",\r\n    \"es2s1pa\",\r\n    \"es2spu\",\r\n    \"es4stab\",\r\n    \"ess3tie\",\r\n    \"es3stu\",\r\n    \"estab4b\",\r\n    \"esta3ge\",\r\n    \"est1ak\",\r\n    \"es4tanb\",\r\n    \"es4tang\",\r\n    \"e4stant\",\r\n    \"e1st4ap\",\r\n    \"e1star\",\r\n    \"e4starb\",\r\n    \"e2st1a4s\",\r\n    \"e1stat\",\r\n    \"e4stat.\",\r\n    \"e4staum\",\r\n    \"e4staus\",\r\n    \"es2tec\",\r\n    \"este4i\",\r\n    \"est5eing\",\r\n    \"est5eink\",\r\n    \"est5einl\",\r\n    \"e1ste2l\",\r\n    \"es4t3emi\",\r\n    \"e4sten\",\r\n    \"es4t3eng\",\r\n    \"est5entr\",\r\n    \"est5erha\",\r\n    \"es4ter4ö\",\r\n    \"es4t3erz\",\r\n    \"es4t3ess\",\r\n    \"es2th\",\r\n    \"es2tid\",\r\n    \"e4stig\",\r\n    \"e1stil\",\r\n    \"e2stip\",\r\n    \"es2tis\",\r\n    \"estmo6de\",\r\n    \"1estn\",\r\n    \"e2stom\",\r\n    \"e3strec\",\r\n    \"es4tri\",\r\n    \"e1strö\",\r\n    \"e1stu\",\r\n    \"est3ums\",\r\n    \"es2tur\",\r\n    \"e1s6tü\",\r\n    \"e3sty\",\r\n    \"e3suh\",\r\n    \"e2s1um\",\r\n    \"es3ums\",\r\n    \"es3unt\",\r\n    \"es1ur\",\r\n    \"esu4s\",\r\n    \"2es3w\",\r\n    \"e3sy\",\r\n    \"es3z\",\r\n    \"es4zene\",\r\n    \"2e1ß\",\r\n    \"e2ß1el\",\r\n    \"e2ßent\",\r\n    \"eße3re\",\r\n    \"e2ß1er2g\",\r\n    \"e2ß1erl\",\r\n    \"eß3t\",\r\n    \"e1t\",\r\n    \"etab4\",\r\n    \"eta2c\",\r\n    \"2e3taf\",\r\n    \"2etal\",\r\n    \"et1ami\",\r\n    \"et4an.\",\r\n    \"et4at\",\r\n    \"etat3r\",\r\n    \"et1äh\",\r\n    \"2e3te\",\r\n    \"ete2e\",\r\n    \"e4t1ef\",\r\n    \"e4t1ein\",\r\n    \"ete3ke\",\r\n    \"eten3d2\",\r\n    \"ete2o\",\r\n    \"eter4hö\",\r\n    \"ete1ro\",\r\n    \"eter4tr\",\r\n    \"ete2s\",\r\n    \"2eth.\",\r\n    \"et2ha\",\r\n    \"e4t3hal\",\r\n    \"e3the\",\r\n    \"et2hi\",\r\n    \"e4thik\",\r\n    \"3ethn\",\r\n    \"et2hu\",\r\n    \"e4t1i2d\",\r\n    \"eti2m\",\r\n    \"etin1\",\r\n    \"et1ini\",\r\n    \"et2it\",\r\n    \"eti2ta\",\r\n    \"eti2th\",\r\n    \"et3l\",\r\n    \"2e3to\",\r\n    \"e2tob\",\r\n    \"e4t1o2f\",\r\n    \"et4on\",\r\n    \"eto4n3al\",\r\n    \"etons4\",\r\n    \"e4torg\",\r\n    \"eto2s\",\r\n    \"2etr\",\r\n    \"et3rad\",\r\n    \"e4traum\",\r\n    \"et3rec\",\r\n    \"e2t3res\",\r\n    \"et4ros\",\r\n    \"ets2c\",\r\n    \"etscher7e\",\r\n    \"etsch3w\",\r\n    \"ets1p\",\r\n    \"et2spe\",\r\n    \"et2ste\",\r\n    \"ett1a\",\r\n    \"et2ta2b\",\r\n    \"et2tad\",\r\n    \"et2tak\",\r\n    \"et4tans\",\r\n    \"ett2as\",\r\n    \"et2tau\",\r\n    \"et2tei\",\r\n    \"ette4n1\",\r\n    \"ett4er\",\r\n    \"et2t1h\",\r\n    \"et2t3r\",\r\n    \"et2t1um\",\r\n    \"3e2tui\",\r\n    \"e3tur\",\r\n    \"e3tü\",\r\n    \"etwa4r\",\r\n    \"1e2tym\",\r\n    \"2etz\",\r\n    \"et2zw\",\r\n    \"eu1a2\",\r\n    \"eu3b4\",\r\n    \"2euc\",\r\n    \"euch4ta\",\r\n    \"2eud\",\r\n    \"eude1s\",\r\n    \"eudi4e\",\r\n    \"2eue\",\r\n    \"eu2eb\",\r\n    \"eue6r5eif\",\r\n    \"eue6reis\",\r\n    \"euerer6s\",\r\n    \"euerer6t\",\r\n    \"eu3eri\",\r\n    \"eu3erk\",\r\n    \"eu3err\",\r\n    \"eu2esc\",\r\n    \"4euf\",\r\n    \"eu2fer\",\r\n    \"eu2g1a\",\r\n    \"euge4mi\",\r\n    \"eu6gense\",\r\n    \"eu3g2er\",\r\n    \"eugin2\",\r\n    \"eugin4f\",\r\n    \"eu4gin4g\",\r\n    \"eu2gre\",\r\n    \"eu2gri\",\r\n    \"eugs4\",\r\n    \"eug3sp\",\r\n    \"eu3h\",\r\n    \"eu1id\",\r\n    \"eu1in1\",\r\n    \"e4uk\",\r\n    \"1eukal\",\r\n    \"eu2kä\",\r\n    \"eulan2\",\r\n    \"euland3\",\r\n    \"eu3l2e\",\r\n    \"eul2i\",\r\n    \"2e1um\",\r\n    \"e3um.\",\r\n    \"eu3m4a\",\r\n    \"e3umb\",\r\n    \"e3umf\",\r\n    \"e3uml\",\r\n    \"e3um2s1\",\r\n    \"eum5st\",\r\n    \"e3umw\",\r\n    \"2eun\",\r\n    \"eu2na\",\r\n    \"eun2e\",\r\n    \"eu4nei\",\r\n    \"e3un2g\",\r\n    \"eu2nio\",\r\n    \"eu4nis\",\r\n    \"eunk2\",\r\n    \"eun3ka\",\r\n    \"eu1o2\",\r\n    \"eu1p\",\r\n    \"e1up.\",\r\n    \"eu3p2f\",\r\n    \"e3upg\",\r\n    \"eu4r1an\",\r\n    \"eu4r3ast\",\r\n    \"eura3t\",\r\n    \"eu2rau\",\r\n    \"eur1c\",\r\n    \"e2ure\",\r\n    \"euren2\",\r\n    \"eu4rens\",\r\n    \"eur4er\",\r\n    \"eur3f4\",\r\n    \"1euro\",\r\n    \"2eus\",\r\n    \"e3usar\",\r\n    \"eusch4o\",\r\n    \"eus2i\",\r\n    \"eu4sk\",\r\n    \"eu3sp\",\r\n    \"eust4\",\r\n    \"eu1sta\",\r\n    \"eu1sto\",\r\n    \"eu1s4tr\",\r\n    \"2eut\",\r\n    \"eut2e\",\r\n    \"eut2h\",\r\n    \"3eu3tha\",\r\n    \"eut2i\",\r\n    \"eu5t2o\",\r\n    \"eut6scha\",\r\n    \"eut6schn\",\r\n    \"eut6schr\",\r\n    \"2eux\",\r\n    \"eu2za\",\r\n    \"eu2zo\",\r\n    \"eu2z1w\",\r\n    \"e3ü\",\r\n    \"e1v\",\r\n    \"e2vak\",\r\n    \"e3var\",\r\n    \"eva4s3\",\r\n    \"2ev2e\",\r\n    \"eve5ri\",\r\n    \"evie3le\",\r\n    \"2e3vor\",\r\n    \"e1w\",\r\n    \"ewä2s\",\r\n    \"e2we.\",\r\n    \"ewei4sc\",\r\n    \"ewert4\",\r\n    \"ewer3te\",\r\n    \"e3wir\",\r\n    \"ewi2s\",\r\n    \"e3wit\",\r\n    \"2ex.\",\r\n    \"1exam\",\r\n    \"ex3at\",\r\n    \"2exc\",\r\n    \"2exd\",\r\n    \"e2xel\",\r\n    \"ex1er\",\r\n    \"2exes\",\r\n    \"e1xi\",\r\n    \"2exik\",\r\n    \"e2xil\",\r\n    \"e2x1in\",\r\n    \"e3xio\",\r\n    \"1exis\",\r\n    \"ex3l\",\r\n    \"1exp\",\r\n    \"2expu\",\r\n    \"2exs\",\r\n    \"2ext.\",\r\n    \"2ex2ta\",\r\n    \"ex2tin\",\r\n    \"1extr\",\r\n    \"2extu\",\r\n    \"2extv\",\r\n    \"2exu\",\r\n    \"e2xum\",\r\n    \"2e1xy\",\r\n    \"2ey1\",\r\n    \"eyl2\",\r\n    \"ey2n\",\r\n    \"ey3no\",\r\n    \"eys4\",\r\n    \"e1z\",\r\n    \"e3z2a\",\r\n    \"ez2ä\",\r\n    \"e2z1enn\",\r\n    \"e3zi\",\r\n    \"ezi2s\",\r\n    \"e3z2o\",\r\n    \"ez2w\",\r\n    \"ez3z2\",\r\n    \"é1b\",\r\n    \"é1c\",\r\n    \"é1g\",\r\n    \"égi2\",\r\n    \"é1h\",\r\n    \"é1l2\",\r\n    \"élu2\",\r\n    \"é1m2\",\r\n    \"é1n\",\r\n    \"é1o\",\r\n    \"é1p\",\r\n    \"é1r2\",\r\n    \"é1s\",\r\n    \"ési2s\",\r\n    \"é1t\",\r\n    \"é1u2\",\r\n    \"é1v\",\r\n    \"é1z2\",\r\n    \"è1c\",\r\n    \"è1m\",\r\n    \"ène1\",\r\n    \"ènes4\",\r\n    \"è1r\",\r\n    \"1ën\",\r\n    \"ë1t\",\r\n    \"ê1p\",\r\n    \"ê4t\",\r\n    \"1fa\",\r\n    \"fab4\",\r\n    \"2f1ab5b\",\r\n    \"fa2ben\",\r\n    \"2fabf\",\r\n    \"2fabg\",\r\n    \"2f1a2b5l\",\r\n    \"2fabn\",\r\n    \"3f2abr\",\r\n    \"2f1ab5s\",\r\n    \"2fabw\",\r\n    \"fa4cheb\",\r\n    \"fa4chel\",\r\n    \"fa2ch1i\",\r\n    \"fa2cho\",\r\n    \"fach3s4p\",\r\n    \"fa2dan\",\r\n    \"fa2del\",\r\n    \"f1ader\",\r\n    \"fa2di\",\r\n    \"fa2dr\",\r\n    \"fa3e\",\r\n    \"fah6l5ent\",\r\n    \"3fahre\",\r\n    \"5fahrt\",\r\n    \"fai3b\",\r\n    \"f1a2ka\",\r\n    \"fa2ke\",\r\n    \"f3aktio\",\r\n    \"f4akto\",\r\n    \"3f2aku\",\r\n    \"fa3la\",\r\n    \"fa3le\",\r\n    \"fal2kl\",\r\n    \"fal2l1a\",\r\n    \"fal4l3ei\",\r\n    \"fall5ent\",\r\n    \"fal6lerk\",\r\n    \"faller6s\",\r\n    \"fal6scha\",\r\n    \"fal6schl\",\r\n    \"fal6schm\",\r\n    \"fal2tr\",\r\n    \"fa2mei\",\r\n    \"f1amp\",\r\n    \"f1amt\",\r\n    \"3f2an.\",\r\n    \"fa2nar\",\r\n    \"fand2a\",\r\n    \"f2anf\",\r\n    \"fan2ga\",\r\n    \"fan2gr\",\r\n    \"2f1an3k\",\r\n    \"2fanl\",\r\n    \"4fann\",\r\n    \"f1anp\",\r\n    \"2fanr\",\r\n    \"2fanw\",\r\n    \"2f1an3z\",\r\n    \"2f1a2p\",\r\n    \"f2ar\",\r\n    \"far2b1a\",\r\n    \"far4bel\",\r\n    \"far4b3er\",\r\n    \"far4bin\",\r\n    \"farb1l\",\r\n    \"far2bo\",\r\n    \"far2b3r\",\r\n    \"far2b3u\",\r\n    \"f3arc\",\r\n    \"3fa5ri\",\r\n    \"far2r1a\",\r\n    \"farr3s\",\r\n    \"2f3art\",\r\n    \"2f3arz\",\r\n    \"fa3s4a\",\r\n    \"fa3sh\",\r\n    \"fa2st\",\r\n    \"2f1astr\",\r\n    \"fa2ß\",\r\n    \"f3at\",\r\n    \"f4at.\",\r\n    \"fa2to\",\r\n    \"f4ats\",\r\n    \"2f1auf\",\r\n    \"f3aug\",\r\n    \"fau2s\",\r\n    \"f1ausb\",\r\n    \"faus4t3r\",\r\n    \"3f4av\",\r\n    \"fa2xa\",\r\n    \"1fä\",\r\n    \"3fä1c\",\r\n    \"fäh4rin\",\r\n    \"fäh2ru\",\r\n    \"f1älte\",\r\n    \"2fäq\",\r\n    \"3färb\",\r\n    \"2f1ärm\",\r\n    \"2färz\",\r\n    \"fässer4\",\r\n    \"fäs6serk\",\r\n    \"fäs6serw\",\r\n    \"fä2ßer\",\r\n    \"2f1ätz\",\r\n    \"2fäug\",\r\n    \"2fäx\",\r\n    \"4f1b4\",\r\n    \"fbau1\",\r\n    \"fber2\",\r\n    \"2f1c\",\r\n    \"f3ch\",\r\n    \"2f3d4\",\r\n    \"fdien2\",\r\n    \"1fe\",\r\n    \"3fe.\",\r\n    \"featu4\",\r\n    \"fe2c\",\r\n    \"f2ech\",\r\n    \"fe3che\",\r\n    \"fe2del\",\r\n    \"fe2dr\",\r\n    \"fe2e1i\",\r\n    \"feein5\",\r\n    \"fe1em\",\r\n    \"2f1e2he\",\r\n    \"fehle2\",\r\n    \"feh4lei\",\r\n    \"f2eie\",\r\n    \"f2eind\",\r\n    \"2f1eing\",\r\n    \"fe3ini\",\r\n    \"fe3ins.\",\r\n    \"fei4nu\",\r\n    \"2f1einw\",\r\n    \"f1eis\",\r\n    \"fek4tin\",\r\n    \"fe2l3a2\",\r\n    \"fe2l1ä\",\r\n    \"fel2da\",\r\n    \"felde4m\",\r\n    \"feld6erh\",\r\n    \"fel2dr\",\r\n    \"2fe2lek\",\r\n    \"2felem\",\r\n    \"fe2l1er\",\r\n    \"fe2les\",\r\n    \"fe2l1o\",\r\n    \"fel4s3oh\",\r\n    \"fels2t\",\r\n    \"felt4\",\r\n    \"6fel6tern\",\r\n    \"f2em.\",\r\n    \"2femb\",\r\n    \"fem4m\",\r\n    \"2femp\",\r\n    \"fen3a\",\r\n    \"fe2nä\",\r\n    \"fend2\",\r\n    \"4fenerg\",\r\n    \"fe2ni\",\r\n    \"fe2no\",\r\n    \"fen3s2a\",\r\n    \"fen5s2c\",\r\n    \"fenst2\",\r\n    \"f1ent\",\r\n    \"fen3t2a\",\r\n    \"2f3entf\",\r\n    \"f2enti\",\r\n    \"4fentla\",\r\n    \"f2ento\",\r\n    \"2f3entw\",\r\n    \"4f3entz\",\r\n    \"3fep\",\r\n    \"fe2pi\",\r\n    \"f2er.\",\r\n    \"fe1ra\",\r\n    \"fe2rab\",\r\n    \"fer3a2d\",\r\n    \"fe2ral\",\r\n    \"fe4rang\",\r\n    \"fer4ant\",\r\n    \"fe4ranz\",\r\n    \"fe2rau\",\r\n    \"fe2r1ä\",\r\n    \"2ferd.\",\r\n    \"fer3da\",\r\n    \"fer3d2e3\",\r\n    \"f2ere\",\r\n    \"fe2r1e2b\",\r\n    \"fe2rec\",\r\n    \"3fer2ei\",\r\n    \"4f3ereig\",\r\n    \"fer3eis\",\r\n    \"f4erel\",\r\n    \"fer3ell\",\r\n    \"fe4rer4g\",\r\n    \"fer4fah\",\r\n    \"fer4fol\",\r\n    \"ferg4\",\r\n    \"f4ergr\",\r\n    \"feri2d\",\r\n    \"ferie4n3\",\r\n    \"feri4on\",\r\n    \"4fer4leb\",\r\n    \"f2ern.\",\r\n    \"fer4nei\",\r\n    \"fe2rö\",\r\n    \"f4erpa\",\r\n    \"f4erpf\",\r\n    \"f4erpl\",\r\n    \"f4erra\",\r\n    \"fer4reg\",\r\n    \"ferri2\",\r\n    \"f2ers.\",\r\n    \"f2ert\",\r\n    \"fert4r\",\r\n    \"f2erz\",\r\n    \"fess2e\",\r\n    \"fe2st\",\r\n    \"fest3a4b\",\r\n    \"fest3an\",\r\n    \"fest3ei\",\r\n    \"fes4tel\",\r\n    \"fes4t1o\",\r\n    \"fes4t3r\",\r\n    \"2f1e2ta\",\r\n    \"fe4tag\",\r\n    \"3fete\",\r\n    \"fe2th\",\r\n    \"fet4t3a\",\r\n    \"fetti3s\",\r\n    \"2feu.\",\r\n    \"feuer3ö\",\r\n    \"3few\",\r\n    \"2f1ex\",\r\n    \"fe1y2\",\r\n    \"3fez\",\r\n    \"1fé\",\r\n    \"4f1f\",\r\n    \"ffab6s\",\r\n    \"ff1a2d\",\r\n    \"f3f2ak\",\r\n    \"ff3ar\",\r\n    \"f3fas\",\r\n    \"ffa2t\",\r\n    \"ff1au\",\r\n    \"f2f1e2b\",\r\n    \"ffe2e\",\r\n    \"f2f1ef\",\r\n    \"f2f1ei\",\r\n    \"ffe3in.\",\r\n    \"f5fek\",\r\n    \"ff1e2m\",\r\n    \"f2femi\",\r\n    \"ff2en\",\r\n    \"ff3erle\",\r\n    \"fff4\",\r\n    \"ffi3k\",\r\n    \"f2fim\",\r\n    \"ffin3s\",\r\n    \"ff1lag\",\r\n    \"ff3le\",\r\n    \"ff3li\",\r\n    \"f3flü\",\r\n    \"ffo2r\",\r\n    \"ff1ox\",\r\n    \"f3f4rä\",\r\n    \"ff3ro\",\r\n    \"ffs2am\",\r\n    \"ff2s1p\",\r\n    \"ffs3tie\",\r\n    \"ffs3tut\",\r\n    \"ff3stü\",\r\n    \"ff3t2\",\r\n    \"ffus3s\",\r\n    \"f2fy\",\r\n    \"4f3g2\",\r\n    \"fgeb2\",\r\n    \"fge3s\",\r\n    \"fglim2\",\r\n    \"4f3h2\",\r\n    \"1fi\",\r\n    \"3fi.\",\r\n    \"fi4ak\",\r\n    \"fi2ar\",\r\n    \"fi3at\",\r\n    \"fid4\",\r\n    \"fi2do\",\r\n    \"f2ie\",\r\n    \"fi2e1i\",\r\n    \"fien3\",\r\n    \"fi1er2f\",\r\n    \"fi2gr\",\r\n    \"fi2k1as\",\r\n    \"fi2kel\",\r\n    \"fi2kin\",\r\n    \"fi2kn\",\r\n    \"fi2k1o4\",\r\n    \"fi4k3r\",\r\n    \"f2il\",\r\n    \"fi2l1an\",\r\n    \"fil3d\",\r\n    \"fi2les\",\r\n    \"fil2et\",\r\n    \"filg4\",\r\n    \"fi3li\",\r\n    \"fi4lin\",\r\n    \"fil2ip\",\r\n    \"fil2ma\",\r\n    \"fil2mä\",\r\n    \"fil4med\",\r\n    \"fil4mei\",\r\n    \"fi2lo\",\r\n    \"2fimp\",\r\n    \"3f2in2a\",\r\n    \"fin2e\",\r\n    \"2f1inf\",\r\n    \"fing2\",\r\n    \"fing4s4\",\r\n    \"fi3ni\",\r\n    \"f2ink\",\r\n    \"fin2s\",\r\n    \"fin3sc\",\r\n    \"fin3sti\",\r\n    \"2f1int\",\r\n    \"fi2o\",\r\n    \"fi3ol\",\r\n    \"fi2r\",\r\n    \"fi3ra\",\r\n    \"fi4re\",\r\n    \"fir3me\",\r\n    \"fi3s2a\",\r\n    \"fi4sch3a\",\r\n    \"fi6schei\",\r\n    \"fisch3o\",\r\n    \"fi4schr\",\r\n    \"fi4sch3w\",\r\n    \"fi3s2h\",\r\n    \"2f1iso\",\r\n    \"fis2p\",\r\n    \"fi2s3t\",\r\n    \"fite2\",\r\n    \"fi2tin\",\r\n    \"fit1o2\",\r\n    \"fi4tor\",\r\n    \"five4\",\r\n    \"fi2xel\",\r\n    \"fi2za\",\r\n    \"2f1j\",\r\n    \"3f2jo\",\r\n    \"4f1k4\",\r\n    \"fka4t3\",\r\n    \"f2l2\",\r\n    \"2fl.\",\r\n    \"f3lad\",\r\n    \"f5land\",\r\n    \"f4lans\",\r\n    \"f3lap\",\r\n    \"f4lasc\",\r\n    \"f3lats\",\r\n    \"flauma4\",\r\n    \"1flä\",\r\n    \"3f4läc\",\r\n    \"4fläd\",\r\n    \"2fläh\",\r\n    \"2f3län\",\r\n    \"2flär\",\r\n    \"2f3läu\",\r\n    \"f5le.\",\r\n    \"2f3leb\",\r\n    \"f4lee\",\r\n    \"2f5lein\",\r\n    \"flek3\",\r\n    \"flekt2\",\r\n    \"f3ler\",\r\n    \"f4lex\",\r\n    \"f3li.\",\r\n    \"3f4lim\",\r\n    \"f3lind\",\r\n    \"fli4ne\",\r\n    \"f3ling\",\r\n    \"2f3lins\",\r\n    \"2f5lon\",\r\n    \"1f4lop\",\r\n    \"1floß\",\r\n    \"1f4lot\",\r\n    \"flo2w\",\r\n    \"f3lö\",\r\n    \"4flöf\",\r\n    \"f4lög\",\r\n    \"3f4luc\",\r\n    \"f3luf\",\r\n    \"1f4lug\",\r\n    \"1f4luss\",\r\n    \"f4lut\",\r\n    \"flut1o\",\r\n    \"f4lü\",\r\n    \"f5lüm\",\r\n    \"fly1\",\r\n    \"4f3m2\",\r\n    \"fma5che\",\r\n    \"fma2d\",\r\n    \"4f3n2\",\r\n    \"fni2s\",\r\n    \"1fo\",\r\n    \"f1ob\",\r\n    \"fo2be\",\r\n    \"2fober\",\r\n    \"fob2l\",\r\n    \"2f1o2f\",\r\n    \"5foli3\",\r\n    \"fo2na\",\r\n    \"fo4nan\",\r\n    \"fon3au\",\r\n    \"fon3dr\",\r\n    \"fo4n3in\",\r\n    \"fo2nop\",\r\n    \"fons4\",\r\n    \"fo2nu\",\r\n    \"2f1op\",\r\n    \"4f3org\",\r\n    \"3form\",\r\n    \"for4m3a4g\",\r\n    \"for4mas\",\r\n    \"for4m3ei\",\r\n    \"for4min\",\r\n    \"forni7er.\",\r\n    \"for6schl\",\r\n    \"for4st\",\r\n    \"for4t3ei\",\r\n    \"for4ter\",\r\n    \"for2t1h\",\r\n    \"for2t3r\",\r\n    \"fort3s2\",\r\n    \"for3tu\",\r\n    \"for2u\",\r\n    \"fot4r\",\r\n    \"1fö\",\r\n    \"2fö2f\",\r\n    \"2f1ök\",\r\n    \"4f1öl\",\r\n    \"för4s5\",\r\n    \"4f3p4\",\r\n    \"2f1q\",\r\n    \"f2r4\",\r\n    \"f3ra.\",\r\n    \"frach6tr\",\r\n    \"2f3rad\",\r\n    \"2f3rah\",\r\n    \"fra4m\",\r\n    \"f3rand\",\r\n    \"f5rap\",\r\n    \"fras3ta\",\r\n    \"f3rat\",\r\n    \"1frau.\",\r\n    \"f3rauc\",\r\n    \"2fräd\",\r\n    \"1f4rän\",\r\n    \"2fre.\",\r\n    \"f3rec\",\r\n    \"f3red\",\r\n    \"2fref\",\r\n    \"f4rei.\",\r\n    \"f3reic\",\r\n    \"f4reie\",\r\n    \"frei1f\",\r\n    \"f4reig\",\r\n    \"frei3k2\",\r\n    \"2frein\",\r\n    \"2frek\",\r\n    \"2f3rep\",\r\n    \"2frest\",\r\n    \"3f4reu\",\r\n    \"2f3ric\",\r\n    \"fricht6e\",\r\n    \"fri3d\",\r\n    \"fri2e\",\r\n    \"2frig\",\r\n    \"f4ri3k\",\r\n    \"f3rip\",\r\n    \"1fris\",\r\n    \"f4risc\",\r\n    \"f4rist\",\r\n    \"2f3roc\",\r\n    \"2frol\",\r\n    \"1f4ro2n\",\r\n    \"fro4n1a\",\r\n    \"f4rop\",\r\n    \"fro2s\",\r\n    \"f3rot\",\r\n    \"frös2\",\r\n    \"f3ru\",\r\n    \"f4ruc\",\r\n    \"f3rü\",\r\n    \"4f1s\",\r\n    \"f2s1al\",\r\n    \"f2sa2n\",\r\n    \"fs3ane\",\r\n    \"f4s3ar\",\r\n    \"f2s1a2s\",\r\n    \"fsa2t\",\r\n    \"fs3ate\",\r\n    \"f2saut\",\r\n    \"fs2än\",\r\n    \"f3sc\",\r\n    \"f4sca\",\r\n    \"f4sce\",\r\n    \"f4schan\",\r\n    \"f4schef\",\r\n    \"f4schro\",\r\n    \"f4scr\",\r\n    \"f2s1e2b\",\r\n    \"fse2ei\",\r\n    \"f4s1ehr\",\r\n    \"fse2n\",\r\n    \"fs1en1e\",\r\n    \"f2s1ent\",\r\n    \"f2s1er\",\r\n    \"fse4t\",\r\n    \"f2s1eta\",\r\n    \"f2s1i4d\",\r\n    \"f3s2ky\",\r\n    \"f2s1o2\",\r\n    \"f3soh\",\r\n    \"f3sol\",\r\n    \"f3spann\",\r\n    \"f2s1pas\",\r\n    \"f2sph\",\r\n    \"f3s2pl\",\r\n    \"f3s2por\",\r\n    \"f2spre\",\r\n    \"f2spro\",\r\n    \"fs2pul\",\r\n    \"fs3s4\",\r\n    \"fs2t\",\r\n    \"fst2a\",\r\n    \"fs3tak\",\r\n    \"f2stas\",\r\n    \"f3stat\",\r\n    \"fs3tät\",\r\n    \"f4stäti\",\r\n    \"f3stel\",\r\n    \"f3stern\",\r\n    \"fs3th\",\r\n    \"f2stip\",\r\n    \"fs4tol\",\r\n    \"fs4tor\",\r\n    \"fst4r\",\r\n    \"f4s3tres\",\r\n    \"fs3trü\",\r\n    \"f4stüte\",\r\n    \"f2s1un\",\r\n    \"f3sy\",\r\n    \"4f1t\",\r\n    \"f4ta.\",\r\n    \"ft1a2be\",\r\n    \"ft1abl\",\r\n    \"ft1af\",\r\n    \"ft2ag\",\r\n    \"ft1ala\",\r\n    \"ft1an\",\r\n    \"f2t1ap\",\r\n    \"ft1a2r\",\r\n    \"ft3att\",\r\n    \"f2t1äu\",\r\n    \"fte2c\",\r\n    \"ft1eck\",\r\n    \"ft1edi\",\r\n    \"ft1eh\",\r\n    \"fte2he\",\r\n    \"ft1eig\",\r\n    \"ft1ein\",\r\n    \"ft1eis\",\r\n    \"ft1eli\",\r\n    \"fte3ma\",\r\n    \"ft1emi\",\r\n    \"f4t1ent\",\r\n    \"ft3erfü\",\r\n    \"ft1erk\",\r\n    \"f2t1erl\",\r\n    \"f2t1erz\",\r\n    \"f2t1e2ti\",\r\n    \"f2t1ex\",\r\n    \"f2t1h\",\r\n    \"f4t3hei\",\r\n    \"f2t1id\",\r\n    \"f3tik\",\r\n    \"f2tim\",\r\n    \"f2t1in\",\r\n    \"ft2ing\",\r\n    \"fto2\",\r\n    \"f2t1of\",\r\n    \"f2t3ot\",\r\n    \"f3t4ran\",\r\n    \"f2t3res\",\r\n    \"f3treu\",\r\n    \"ft4rit\",\r\n    \"ft3ro\",\r\n    \"ft3ruh\",\r\n    \"ft2s1\",\r\n    \"ft4sam\",\r\n    \"ft3s2c\",\r\n    \"ft4sche\",\r\n    \"ftse2\",\r\n    \"ft4seh\",\r\n    \"ftsen1\",\r\n    \"ft3st\",\r\n    \"ft4staf\",\r\n    \"fts3tät\",\r\n    \"ft4stei\",\r\n    \"ft4stem\",\r\n    \"ft6stier\",\r\n    \"ft6s5treu\",\r\n    \"ftstro4\",\r\n    \"ft4stru\",\r\n    \"f2tum\",\r\n    \"ft1urk\",\r\n    \"ft1url\",\r\n    \"f3tü\",\r\n    \"ftwa4\",\r\n    \"ftwa6r\",\r\n    \"ft3z2\",\r\n    \"ftze3d\",\r\n    \"1fu\",\r\n    \"3fuc\",\r\n    \"3fug\",\r\n    \"f2uh\",\r\n    \"fuku3\",\r\n    \"fulb4\",\r\n    \"f1um1\",\r\n    \"fu2mei\",\r\n    \"f2umm\",\r\n    \"fund3er\",\r\n    \"fun6derg\",\r\n    \"fun6derh\",\r\n    \"2f1unf\",\r\n    \"fung4\",\r\n    \"2fungl\",\r\n    \"2f1u2ni\",\r\n    \"fun2kl\",\r\n    \"fun2ko\",\r\n    \"fun2k3r\",\r\n    \"fun2ku\",\r\n    \"2f1unm\",\r\n    \"2funr\",\r\n    \"2funt\",\r\n    \"f2ur\",\r\n    \"furch2\",\r\n    \"fu4re.\",\r\n    \"2f3url\",\r\n    \"fus2sa\",\r\n    \"fus2s1p\",\r\n    \"fus2st\",\r\n    \"fu2ß1er\",\r\n    \"3fut\",\r\n    \"1fü\",\r\n    \"2füb\",\r\n    \"fühl4sc\",\r\n    \"fün2\",\r\n    \"fü2r\",\r\n    \"2f1v\",\r\n    \"4f1w\",\r\n    \"f1y\",\r\n    \"4f1z\",\r\n    \"fz2a\",\r\n    \"fzeiten6\",\r\n    \"fzei8t7end\",\r\n    \"fz2ö\",\r\n    \"fzu2ga\",\r\n    \"fz2w\",\r\n    \"3ga.\",\r\n    \"2gabf\",\r\n    \"2gabg\",\r\n    \"2g1a2b3l\",\r\n    \"gab2o\",\r\n    \"g1abr\",\r\n    \"gab4ri\",\r\n    \"2gabsc\",\r\n    \"g2abt.\",\r\n    \"2gabtr\",\r\n    \"ga3bu\",\r\n    \"2gabw\",\r\n    \"2gabz\",\r\n    \"ga1c\",\r\n    \"gade2r\",\r\n    \"ga3d2i\",\r\n    \"gadi4e\",\r\n    \"ga2dr\",\r\n    \"gae2\",\r\n    \"ga1fl\",\r\n    \"5gag.\",\r\n    \"ga1k\",\r\n    \"ga2ka\",\r\n    \"ga2ku\",\r\n    \"gal2a\",\r\n    \"ga3laf\",\r\n    \"ga2lar\",\r\n    \"2g1alau\",\r\n    \"2g1alb\",\r\n    \"2g1alg\",\r\n    \"gal3lo\",\r\n    \"2g1alp\",\r\n    \"2g1alta\",\r\n    \"2g1altd\",\r\n    \"g1a2lu\",\r\n    \"ga2mec\",\r\n    \"ga3mel\",\r\n    \"gam3ma\",\r\n    \"5g4amo\",\r\n    \"2g1amt\",\r\n    \"g1a2na\",\r\n    \"2ganal\",\r\n    \"gan3d4\",\r\n    \"2ganf\",\r\n    \"2ganga\",\r\n    \"4gangeb\",\r\n    \"gan2gr\",\r\n    \"gang4sp\",\r\n    \"gan2g1u\",\r\n    \"2g1ank\",\r\n    \"2ganl\",\r\n    \"2ganmu\",\r\n    \"3g2ano\",\r\n    \"ga2nob\",\r\n    \"2ganr\",\r\n    \"gans2\",\r\n    \"g2ans.\",\r\n    \"2g1ansi\",\r\n    \"2ganst\",\r\n    \"2ganw\",\r\n    \"ga1ny\",\r\n    \"2g1anz\",\r\n    \"ga3pe\",\r\n    \"2g1app\",\r\n    \"ga1q\",\r\n    \"3gar.\",\r\n    \"g2ara\",\r\n    \"2garc\",\r\n    \"3g2ard\",\r\n    \"ga3ret\",\r\n    \"ga3r2i\",\r\n    \"2g3arm\",\r\n    \"ga3r2o\",\r\n    \"gar2s\",\r\n    \"2g1arti\",\r\n    \"ga3ru\",\r\n    \"2g1arz\",\r\n    \"g2as.\",\r\n    \"ga2sa\",\r\n    \"ga4s3al\",\r\n    \"ga4sam\",\r\n    \"gasche4\",\r\n    \"gase2\",\r\n    \"ga2sei\",\r\n    \"ga2sel\",\r\n    \"ga2se4m\",\r\n    \"ga2si\",\r\n    \"ga2sor\",\r\n    \"gas3s2\",\r\n    \"5g4asse.\",\r\n    \"g3asses\",\r\n    \"6gassess\",\r\n    \"ga2st\",\r\n    \"ga4ste\",\r\n    \"gas4t3el\",\r\n    \"ga4str\",\r\n    \"gast3rä\",\r\n    \"ga3t2a\",\r\n    \"2gatm\",\r\n    \"gat4r\",\r\n    \"gau1c\",\r\n    \"2g1auf\",\r\n    \"2g3aug\",\r\n    \"g2auk\",\r\n    \"gau5ne\",\r\n    \"2g1aus\",\r\n    \"2g1aut\",\r\n    \"ga3z\",\r\n    \"2g1äp\",\r\n    \"gär3th\",\r\n    \"2gärz\",\r\n    \"gä4u\",\r\n    \"2g5b4\",\r\n    \"gber2\",\r\n    \"gbi2\",\r\n    \"gby4t\",\r\n    \"2g1c\",\r\n    \"2gd\",\r\n    \"g1da\",\r\n    \"g3d2ad\",\r\n    \"gda3de\",\r\n    \"g2d1ak\",\r\n    \"g2d1an\",\r\n    \"g2d1ar\",\r\n    \"g2d1au\",\r\n    \"g1dä1\",\r\n    \"g2dei4\",\r\n    \"gd1els\",\r\n    \"g2dent\",\r\n    \"g2d1er\",\r\n    \"g2d1et\",\r\n    \"g2d1in\",\r\n    \"g1do\",\r\n    \"g2dop\",\r\n    \"g1dö\",\r\n    \"g1dr\",\r\n    \"gd3re\",\r\n    \"gd3ru\",\r\n    \"gd3s2\",\r\n    \"gdt4\",\r\n    \"ge3a2\",\r\n    \"ge4ate\",\r\n    \"geb2a\",\r\n    \"ge3ble\",\r\n    \"geb4lin\",\r\n    \"geb4lo\",\r\n    \"gebot4\",\r\n    \"3gebü\",\r\n    \"ge1c\",\r\n    \"ge3ck\",\r\n    \"ge1e2\",\r\n    \"ge3ec\",\r\n    \"ge2es\",\r\n    \"geest3\",\r\n    \"ge5fa\",\r\n    \"3gefä\",\r\n    \"4g1eff\",\r\n    \"gef4l\",\r\n    \"gef4r\",\r\n    \"ge3fu\",\r\n    \"g4eg\",\r\n    \"gege2n1\",\r\n    \"gegene4\",\r\n    \"gegen3s4\",\r\n    \"ge3g2l\",\r\n    \"geg4r\",\r\n    \"geher3l\",\r\n    \"ge3ho\",\r\n    \"2g1eid\",\r\n    \"ge4ie2\",\r\n    \"ge4ig\",\r\n    \"g2eil\",\r\n    \"ge1in1\",\r\n    \"ge2inf\",\r\n    \"gein4h\",\r\n    \"2g1einr\",\r\n    \"gein2s\",\r\n    \"gein2v\",\r\n    \"ge1ir\",\r\n    \"2g1eise\",\r\n    \"gei3sh\",\r\n    \"geis4s3c\",\r\n    \"gei2st\",\r\n    \"geist3r\",\r\n    \"2gek.\",\r\n    \"ge4lanz\",\r\n    \"gelb1r\",\r\n    \"gel4b3ra\",\r\n    \"gelb3s\",\r\n    \"gel4den\",\r\n    \"gelder4\",\r\n    \"gel6derh\",\r\n    \"gel6ders\",\r\n    \"ge3lec\",\r\n    \"gele5cke\",\r\n    \"ge2lef\",\r\n    \"2ge2lek\",\r\n    \"2gelem\",\r\n    \"gelen1\",\r\n    \"ge4lene\",\r\n    \"gel3ere\",\r\n    \"ge4lerk\",\r\n    \"geler3ö\",\r\n    \"ge4l3ers\",\r\n    \"ge2l1ev\",\r\n    \"gel3f\",\r\n    \"gel1i4m\",\r\n    \"gel3la\",\r\n    \"gell2i\",\r\n    \"gel2ö\",\r\n    \"gel3sa\",\r\n    \"gels2p\",\r\n    \"gels2t\",\r\n    \"gel3ste\",\r\n    \"gel3sz\",\r\n    \"gel3ta\",\r\n    \"gelt4r\",\r\n    \"gel3z2\",\r\n    \"gem2\",\r\n    \"ge4ma.\",\r\n    \"gem6e\",\r\n    \"4g1emp\",\r\n    \"ge3mu\",\r\n    \"g4en.\",\r\n    \"ge3na\",\r\n    \"ge4n1ac\",\r\n    \"ge4nad\",\r\n    \"ge4nak\",\r\n    \"ge4n3al\",\r\n    \"ge4nam\",\r\n    \"ge4nap\",\r\n    \"ge4nar\",\r\n    \"ge4nat\",\r\n    \"gen4aug\",\r\n    \"4genda.\",\r\n    \"gend3in3\",\r\n    \"4g3endmo\",\r\n    \"gen2d3r\",\r\n    \"gen3eid\",\r\n    \"gener4f\",\r\n    \"4generg\",\r\n    \"ge4n3ern\",\r\n    \"gen6erwe\",\r\n    \"gener4z\",\r\n    \"ge2nim\",\r\n    \"gen3k4\",\r\n    \"gen3n\",\r\n    \"ge2noc\",\r\n    \"gen4sam\",\r\n    \"gen6semb\",\r\n    \"gen3sk\",\r\n    \"gen3sz\",\r\n    \"gen3tä\",\r\n    \"2gentf\",\r\n    \"gen3t2h\",\r\n    \"gen5tr\",\r\n    \"2gentw\",\r\n    \"gen3zw\",\r\n    \"ge1oo\",\r\n    \"geo2ri\",\r\n    \"g2ep4\",\r\n    \"ge3pl\",\r\n    \"ge3po\",\r\n    \"ge1ra\",\r\n    \"ge2rab\",\r\n    \"ge2rak\",\r\n    \"ge2r3al\",\r\n    \"ge3rann\",\r\n    \"ge4rant\",\r\n    \"ge4r3a2r\",\r\n    \"ger2as\",\r\n    \"2gerdg\",\r\n    \"ge3rem\",\r\n    \"ge4rene\",\r\n    \"ge4reng\",\r\n    \"ge4ren4s\",\r\n    \"ge4r3ent\",\r\n    \"ger2er\",\r\n    \"gerin4d\",\r\n    \"gerin4f\",\r\n    \"ger4inn\",\r\n    \"gerin4t\",\r\n    \"4ger4klä\",\r\n    \"g3erlas\",\r\n    \"ger5me\",\r\n    \"ger3no\",\r\n    \"2g1ernt\",\r\n    \"ge1ro\",\r\n    \"ge2rob\",\r\n    \"ge1r2ö\",\r\n    \"ger4sat\",\r\n    \"4g3er4seh\",\r\n    \"ge3r2u\",\r\n    \"ge1s2\",\r\n    \"g4es.\",\r\n    \"ges3auf\",\r\n    \"3ge3sc\",\r\n    \"gesch4\",\r\n    \"ge6sche.\",\r\n    \"ge2s3eb\",\r\n    \"4g3e4sel.\",\r\n    \"ges3elt\",\r\n    \"ge2s3er\",\r\n    \"ge3sha\",\r\n    \"ge3si\",\r\n    \"ge3so\",\r\n    \"ge3spa\",\r\n    \"ges4pi\",\r\n    \"ges3se\",\r\n    \"ges3s4t\",\r\n    \"gest2\",\r\n    \"gest4a\",\r\n    \"ge3stak\",\r\n    \"ges4tan\",\r\n    \"ge3st6e\",\r\n    \"ge4s3ter\",\r\n    \"ges3th\",\r\n    \"ges6tier\",\r\n    \"ge4s3tur\",\r\n    \"ge3t2a\",\r\n    \"ge4tang\",\r\n    \"ge4tant\",\r\n    \"g1etap\",\r\n    \"ge2thi\",\r\n    \"ge5trei\",\r\n    \"ge5tri\",\r\n    \"ge5t4u\",\r\n    \"2g1e1ul\",\r\n    \"ge3unk\",\r\n    \"ge1urt\",\r\n    \"ge3u4t\",\r\n    \"4g1e2x\",\r\n    \"2g5f4\",\r\n    \"gfi2l\",\r\n    \"2g1g\",\r\n    \"gga4t\",\r\n    \"g5ge\",\r\n    \"gge2ne\",\r\n    \"gg2l\",\r\n    \"g3gla\",\r\n    \"g3glo\",\r\n    \"g2g3n\",\r\n    \"gg4r\",\r\n    \"ggs2\",\r\n    \"2g1h\",\r\n    \"4gh.\",\r\n    \"gh2a\",\r\n    \"3ghale\",\r\n    \"gh2e\",\r\n    \"3g2het\",\r\n    \"3g2hie\",\r\n    \"gh1l\",\r\n    \"3gh2r\",\r\n    \"ghs4\",\r\n    \"gh3sc\",\r\n    \"g2hu\",\r\n    \"gh1w\",\r\n    \"gi3alo\",\r\n    \"gich2\",\r\n    \"gicht1\",\r\n    \"gie3g\",\r\n    \"gi2e1i\",\r\n    \"gi2e3l\",\r\n    \"giel2a\",\r\n    \"gie5n2e\",\r\n    \"gi4eno\",\r\n    \"gie3res\",\r\n    \"gie1st\",\r\n    \"gift5s\",\r\n    \"gi2gu\",\r\n    \"gi2kel\",\r\n    \"2g1ill\",\r\n    \"gi2me.\",\r\n    \"gi4mes\",\r\n    \"gi2met\",\r\n    \"2gimp\",\r\n    \"2gin2d\",\r\n    \"gi3ne\",\r\n    \"2g1inf\",\r\n    \"2gin4h\",\r\n    \"2g1ins\",\r\n    \"gin2sa\",\r\n    \"2g3int\",\r\n    \"2gin2v\",\r\n    \"gi2ob\",\r\n    \"2giok\",\r\n    \"2g3isel\",\r\n    \"git2a\",\r\n    \"gitt4e\",\r\n    \"gi3tu\",\r\n    \"gi4us\",\r\n    \"2g1j\",\r\n    \"4g5k4\",\r\n    \"gl2\",\r\n    \"4gl.\",\r\n    \"4g1lab\",\r\n    \"2g1lac\",\r\n    \"2gladu\",\r\n    \"2g1lag\",\r\n    \"2g1lam\",\r\n    \"2gland\",\r\n    \"gla2s1c\",\r\n    \"glas3t4\",\r\n    \"3g2laub\",\r\n    \"2g1lauf\",\r\n    \"2gländ\",\r\n    \"2gläuf\",\r\n    \"gl3b\",\r\n    \"g2l4e\",\r\n    \"2g3le.\",\r\n    \"3glea\",\r\n    \"2g3leb\",\r\n    \"g3lec\",\r\n    \"4g3led\",\r\n    \"g3lee\",\r\n    \"2g3leg\",\r\n    \"2gleh\",\r\n    \"g4leic\",\r\n    \"4g3lein\",\r\n    \"gleiter8s\",\r\n    \"glei4t5r\",\r\n    \"g3len\",\r\n    \"4glenk\",\r\n    \"4g3ler\",\r\n    \"glerei4\",\r\n    \"2gles\",\r\n    \"3gles.\",\r\n    \"g3lese\",\r\n    \"g2lia\",\r\n    \"2glib\",\r\n    \"3g2lid\",\r\n    \"3g2lie\",\r\n    \"4g3lieb\",\r\n    \"2glif\",\r\n    \"g2lik\",\r\n    \"4glil\",\r\n    \"g2lim\",\r\n    \"2glin\",\r\n    \"g2lio\",\r\n    \"2glis\",\r\n    \"g2lit\",\r\n    \"g3lite\",\r\n    \"g2liz\",\r\n    \"g3lize\",\r\n    \"g2loa\",\r\n    \"g2lob\",\r\n    \"g2loc\",\r\n    \"2g3loch\",\r\n    \"g2lok\",\r\n    \"g2lom\",\r\n    \"g2lop\",\r\n    \"2glorb\",\r\n    \"2glos\",\r\n    \"g2lot\",\r\n    \"2glöch\",\r\n    \"2glös\",\r\n    \"2glöw\",\r\n    \"2gls\",\r\n    \"g1lu\",\r\n    \"2g3luf\",\r\n    \"2gluk\",\r\n    \"2g3lun\",\r\n    \"g2lut\",\r\n    \"3g2lü\",\r\n    \"g3lüg\",\r\n    \"2glw\",\r\n    \"3g2ly\",\r\n    \"2g1m2\",\r\n    \"gmen4tr\",\r\n    \"gmi2s\",\r\n    \"g1n\",\r\n    \"2gn.\",\r\n    \"g2n2a\",\r\n    \"g4na.\",\r\n    \"2gnac\",\r\n    \"g4nad\",\r\n    \"2g5nah\",\r\n    \"gn4al\",\r\n    \"gna4l3er3\",\r\n    \"2gnanl\",\r\n    \"3g2nä\",\r\n    \"2gnb\",\r\n    \"2gnc\",\r\n    \"2gnd\",\r\n    \"gn2e\",\r\n    \"g3neh\",\r\n    \"2gn3ent\",\r\n    \"gne2tr\",\r\n    \"gneu1\",\r\n    \"2gnf\",\r\n    \"2gng\",\r\n    \"2gnh\",\r\n    \"g2nie\",\r\n    \"g2nif\",\r\n    \"g4nin\",\r\n    \"2gnint\",\r\n    \"2gni4s3\",\r\n    \"gnise2\",\r\n    \"2gnk\",\r\n    \"2gnl\",\r\n    \"2gnm\",\r\n    \"g2no\",\r\n    \"3g4non\",\r\n    \"gno1r\",\r\n    \"g3not\",\r\n    \"2gnp\",\r\n    \"2gnr\",\r\n    \"2gns\",\r\n    \"2gnt\",\r\n    \"2gnu\",\r\n    \"3g2num.\",\r\n    \"g2nü\",\r\n    \"2gnv\",\r\n    \"2gnw\",\r\n    \"g2ny\",\r\n    \"2gnz\",\r\n    \"go4a\",\r\n    \"goa3li\",\r\n    \"g1ob\",\r\n    \"gobe3l\",\r\n    \"2gobj\",\r\n    \"g2ob2l\",\r\n    \"gob2s\",\r\n    \"2g1o2f\",\r\n    \"2gog\",\r\n    \"2g1oh2\",\r\n    \"goh3ren\",\r\n    \"go1i\",\r\n    \"gol2a\",\r\n    \"gol2da\",\r\n    \"gol2fr\",\r\n    \"3gon.\",\r\n    \"go4nat\",\r\n    \"gon2e\",\r\n    \"3gons\",\r\n    \"3g2opa\",\r\n    \"gopf4\",\r\n    \"go2pos\",\r\n    \"2gopt\",\r\n    \"gor2a\",\r\n    \"2g1ord\",\r\n    \"2g1org\",\r\n    \"go2si\",\r\n    \"go2s3p\",\r\n    \"go1ste\",\r\n    \"2g1osz\",\r\n    \"go3t2h\",\r\n    \"got6terb\",\r\n    \"got6t5erg\",\r\n    \"gotte4s\",\r\n    \"3gou\",\r\n    \"go1y\",\r\n    \"gö2f\",\r\n    \"g1öl\",\r\n    \"3göt\",\r\n    \"2g3p4\",\r\n    \"2g1q\",\r\n    \"g2r4\",\r\n    \"g4rab\",\r\n    \"gra2ba\",\r\n    \"gra2bi\",\r\n    \"gra4bl\",\r\n    \"2g3radl\",\r\n    \"2g3rah\",\r\n    \"2g3rak\",\r\n    \"gram1\",\r\n    \"grammen6\",\r\n    \"gram8m7end\",\r\n    \"gram6mer\",\r\n    \"g3rand.\",\r\n    \"2gra2r\",\r\n    \"grar1e\",\r\n    \"gra4s3a\",\r\n    \"gra4sh\",\r\n    \"gra4sp\",\r\n    \"gra2st\",\r\n    \"2g3raub\",\r\n    \"grau3f\",\r\n    \"2graum\",\r\n    \"grau3sk\",\r\n    \"2gräd\",\r\n    \"gräs1c\",\r\n    \"g3räu\",\r\n    \"2g5re.\",\r\n    \"g4reb\",\r\n    \"2g3rec\",\r\n    \"g3rede\",\r\n    \"g4re2e\",\r\n    \"2g3ref\",\r\n    \"gre2fr\",\r\n    \"2grege\",\r\n    \"2g3reic\",\r\n    \"grei4fr\",\r\n    \"2g3reih\",\r\n    \"g3rein\",\r\n    \"g3reit\",\r\n    \"3g4rem\",\r\n    \"3gren\",\r\n    \"4g3renn\",\r\n    \"gre3no\",\r\n    \"gren6z5ei\",\r\n    \"grenz3w\",\r\n    \"g4rer\",\r\n    \"2grese\",\r\n    \"gres6ser6\",\r\n    \"g3ret\",\r\n    \"g3rev\",\r\n    \"2g3ric\",\r\n    \"gri2e\",\r\n    \"2g3riem\",\r\n    \"g3riese\",\r\n    \"2grig\",\r\n    \"gril4la\",\r\n    \"4g3ring\",\r\n    \"4g3rinn\",\r\n    \"gro2b3a\",\r\n    \"gro3ber\",\r\n    \"gro2bl\",\r\n    \"gro2b3r\",\r\n    \"2groc\",\r\n    \"2groh\",\r\n    \"2g3rol\",\r\n    \"2g3rose\",\r\n    \"g4ross\",\r\n    \"gros6sel\",\r\n    \"g4rot\",\r\n    \"2gröh\",\r\n    \"2gruf.\",\r\n    \"g4ruft\",\r\n    \"2g3ruh\",\r\n    \"g3rui\",\r\n    \"2g3rum\",\r\n    \"grun2g\",\r\n    \"3grup\",\r\n    \"3grus\",\r\n    \"3gruß\",\r\n    \"2g3rut\",\r\n    \"2g3rüc\",\r\n    \"4g2s1\",\r\n    \"gs3a2b\",\r\n    \"g4sac\",\r\n    \"g5sack\",\r\n    \"gsa2d\",\r\n    \"gs3a2k\",\r\n    \"g3sal\",\r\n    \"g4s3alb\",\r\n    \"g4sall\",\r\n    \"g4salm\",\r\n    \"g4salt\",\r\n    \"gs2am\",\r\n    \"g4s3ama\",\r\n    \"gs3amb\",\r\n    \"g4s3amp\",\r\n    \"gs3a4p\",\r\n    \"gs3a2r\",\r\n    \"g3sat\",\r\n    \"gsau2g\",\r\n    \"gsau4r\",\r\n    \"gsa2v\",\r\n    \"g3säu\",\r\n    \"g3s2c\",\r\n    \"g4sca\",\r\n    \"g4s3ce\",\r\n    \"gsch4\",\r\n    \"g4schef\",\r\n    \"gs4chi\",\r\n    \"g4sco\",\r\n    \"gse2\",\r\n    \"gs2e3h\",\r\n    \"gs4eil\",\r\n    \"gse4kl\",\r\n    \"g3sel.\",\r\n    \"g4sela\",\r\n    \"g3seln\",\r\n    \"gs3em\",\r\n    \"gsen1\",\r\n    \"g4s3ent\",\r\n    \"g4s3er\",\r\n    \"g3sere\",\r\n    \"gser1i\",\r\n    \"g4se4s\",\r\n    \"gse4t\",\r\n    \"g4seu\",\r\n    \"gsfi2l\",\r\n    \"gsgene4\",\r\n    \"gs3ha\",\r\n    \"gsi2d\",\r\n    \"gs3i2k\",\r\n    \"g3sil\",\r\n    \"gs3io\",\r\n    \"g4s3ita\",\r\n    \"gs2ki1e\",\r\n    \"gs3kr\",\r\n    \"gso2\",\r\n    \"g4s3o4b\",\r\n    \"g3sol\",\r\n    \"gs4on\",\r\n    \"g4s3op\",\r\n    \"g5s4orge\",\r\n    \"gs4pant\",\r\n    \"g4s3pas\",\r\n    \"g3spei\",\r\n    \"g3s2pek\",\r\n    \"g3s2pi\",\r\n    \"g5s6pie\",\r\n    \"g4s3pl\",\r\n    \"g5s6port.\",\r\n    \"g4s3pru\",\r\n    \"gsrat4\",\r\n    \"gsrü2c\",\r\n    \"gs3s4\",\r\n    \"gs3ta\",\r\n    \"g3s4tad\",\r\n    \"g4stag\",\r\n    \"g3s4tan\",\r\n    \"g4stanz\",\r\n    \"g3star\",\r\n    \"gs4tati\",\r\n    \"gs3tä\",\r\n    \"g3steh\",\r\n    \"g3s4tein\",\r\n    \"g3st2el\",\r\n    \"gs4tell\",\r\n    \"gste2r\",\r\n    \"gst3err\",\r\n    \"g1steu\",\r\n    \"gs2thy\",\r\n    \"g3stif\",\r\n    \"g3stil\",\r\n    \"g3stim\",\r\n    \"g3stir\",\r\n    \"g3sto\",\r\n    \"g4stoch\",\r\n    \"g4stod\",\r\n    \"g4stor\",\r\n    \"gs3tö\",\r\n    \"gs4tör\",\r\n    \"gs3tr\",\r\n    \"gst4ra\",\r\n    \"gs4tras\",\r\n    \"gs4trat\",\r\n    \"gst5reit\",\r\n    \"gst4res\",\r\n    \"g4streu\",\r\n    \"gst3rit\",\r\n    \"gst3ros\",\r\n    \"g3stun\",\r\n    \"gs3tü\",\r\n    \"gs3un\",\r\n    \"g3sy\",\r\n    \"2g1t\",\r\n    \"g3te\",\r\n    \"gtei3s\",\r\n    \"gt1h\",\r\n    \"gt2hy\",\r\n    \"gt2i\",\r\n    \"gti2m\",\r\n    \"g3to\",\r\n    \"gt4r\",\r\n    \"gt4s\",\r\n    \"g3tü\",\r\n    \"gu4ale\",\r\n    \"gu3am\",\r\n    \"gu1an.\",\r\n    \"gu1ant\",\r\n    \"gu1as\",\r\n    \"gu1c\",\r\n    \"gu4d3r\",\r\n    \"gu2e\",\r\n    \"2gued\",\r\n    \"guet4\",\r\n    \"2g1u2f\",\r\n    \"2g1uh\",\r\n    \"gu3ins\",\r\n    \"gu1is\",\r\n    \"gum2e\",\r\n    \"3gumm\",\r\n    \"gummi1\",\r\n    \"gun2e\",\r\n    \"2g1unf\",\r\n    \"gunge2\",\r\n    \"4gungew\",\r\n    \"2gungl\",\r\n    \"2g1u2ni\",\r\n    \"2g3unk\",\r\n    \"2gunr\",\r\n    \"gun2s\",\r\n    \"2gunt\",\r\n    \"3gur\",\r\n    \"gure4\",\r\n    \"4g1url\",\r\n    \"gur2t3h\",\r\n    \"gur2tr\",\r\n    \"gurt3s\",\r\n    \"guru1\",\r\n    \"gu2s\",\r\n    \"gu4s3a\",\r\n    \"gu3sc\",\r\n    \"guschi5\",\r\n    \"gu3se\",\r\n    \"guss1o\",\r\n    \"gus2sp\",\r\n    \"gus2st\",\r\n    \"gu4st\",\r\n    \"gust3a4b\",\r\n    \"gus3te\",\r\n    \"gus6t5en6d\",\r\n    \"gus6terl\",\r\n    \"gus4tr\",\r\n    \"gu2t\",\r\n    \"gut1a\",\r\n    \"gut3er4h\",\r\n    \"gut1h\",\r\n    \"gut2s3p\",\r\n    \"2güb\",\r\n    \"3gür3\",\r\n    \"gü2s3\",\r\n    \"2g1v\",\r\n    \"2g1w\",\r\n    \"gy3n\",\r\n    \"gy4na\",\r\n    \"2g3z2\",\r\n    \"gzeu4gi\",\r\n    \"2ha.\",\r\n    \"hab2a\",\r\n    \"hab2e\",\r\n    \"h3abf\",\r\n    \"hab2i\",\r\n    \"h1ablu\",\r\n    \"2habn\",\r\n    \"h1a2br\",\r\n    \"h1abs\",\r\n    \"2habw\",\r\n    \"ha4ch3en\",\r\n    \"ha2cho\",\r\n    \"hacks4\",\r\n    \"2hada\",\r\n    \"ha2del\",\r\n    \"hade2n\",\r\n    \"h1adle\",\r\n    \"h1a2dr\",\r\n    \"ha3dri\",\r\n    \"2hae\",\r\n    \"ha3el\",\r\n    \"ha4far\",\r\n    \"haf2e\",\r\n    \"h1affä\",\r\n    \"haf3f4l\",\r\n    \"h2aft\",\r\n    \"haf4to\",\r\n    \"haf2tr\",\r\n    \"haf4tre\",\r\n    \"haft4s3p\",\r\n    \"hag2a\",\r\n    \"h2agg\",\r\n    \"h1ah\",\r\n    \"ha3ha\",\r\n    \"h2ahs\",\r\n    \"h2ai\",\r\n    \"3hai.\",\r\n    \"h2aj\",\r\n    \"2haka\",\r\n    \"ha1kl\",\r\n    \"2h2al.\",\r\n    \"ha3l2al\",\r\n    \"halan4c\",\r\n    \"h1a2lar\",\r\n    \"ha2lau\",\r\n    \"hal2ba\",\r\n    \"hal4bel\",\r\n    \"hal4bin\",\r\n    \"hal2b3r\",\r\n    \"hal2bu\",\r\n    \"2hale\",\r\n    \"2halh\",\r\n    \"hal2i\",\r\n    \"hal2l1a\",\r\n    \"hal6lere\",\r\n    \"haller6f\",\r\n    \"hal6lerg\",\r\n    \"ha3lo\",\r\n    \"4halp\",\r\n    \"hal4sk\",\r\n    \"hal2sp\",\r\n    \"hal4tal\",\r\n    \"hal4tei\",\r\n    \"hal2t3r\",\r\n    \"hamot4\",\r\n    \"2h1amt\",\r\n    \"h2an.\",\r\n    \"2hana\",\r\n    \"ha2nal\",\r\n    \"ha2nan\",\r\n    \"han2au\",\r\n    \"2hanb\",\r\n    \"h2anbe\",\r\n    \"h2and\",\r\n    \"han2da\",\r\n    \"han4d3er\",\r\n    \"han2d3r\",\r\n    \"hand3s\",\r\n    \"ha2nem\",\r\n    \"han2f1\",\r\n    \"han6g5end\",\r\n    \"han4gro\",\r\n    \"han2k1\",\r\n    \"2hanl\",\r\n    \"2hano\",\r\n    \"2hanr\",\r\n    \"h1ansc\",\r\n    \"2hanz\",\r\n    \"2h1ap\",\r\n    \"3h2ape\",\r\n    \"ha2pl\",\r\n    \"ha2po\",\r\n    \"ha2pr\",\r\n    \"h2a3ra\",\r\n    \"ha4rab\",\r\n    \"2harb\",\r\n    \"2harc\",\r\n    \"h2ard\",\r\n    \"har2fr\",\r\n    \"h1arm.\",\r\n    \"har3ma\",\r\n    \"h2arme\",\r\n    \"har4me.\",\r\n    \"har4ne\",\r\n    \"ha2rom\",\r\n    \"2hars\",\r\n    \"hart4e\",\r\n    \"har2th\",\r\n    \"h1arti\",\r\n    \"har4tr\",\r\n    \"har2za\",\r\n    \"h2as\",\r\n    \"2has.\",\r\n    \"2ha3sa\",\r\n    \"has4c\",\r\n    \"has2h3\",\r\n    \"has4sa\",\r\n    \"hasser4\",\r\n    \"has4s3t\",\r\n    \"ha2str\",\r\n    \"h1a2ß\",\r\n    \"ha2ta\",\r\n    \"hat2i\",\r\n    \"h3atl\",\r\n    \"ha2t3r\",\r\n    \"2hats\",\r\n    \"hat5t2\",\r\n    \"h3attr\",\r\n    \"h1audi\",\r\n    \"h1aufb\",\r\n    \"hau5f6lie\",\r\n    \"hau3f4lo\",\r\n    \"2h1aufm\",\r\n    \"h1aufs\",\r\n    \"h3au3g2\",\r\n    \"h1aukt\",\r\n    \"hau2sa\",\r\n    \"hau4san\",\r\n    \"hau2s1c\",\r\n    \"h2ause\",\r\n    \"hau4sel\",\r\n    \"hau6s5ent\",\r\n    \"hau4spa\",\r\n    \"hau4spe\",\r\n    \"haussen6\",\r\n    \"hau4sur\",\r\n    \"hau2t1a\",\r\n    \"hau4t3r\",\r\n    \"ha2ve.\",\r\n    \"häde2\",\r\n    \"h1äff\",\r\n    \"2häi\",\r\n    \"hä2kl\",\r\n    \"2härz\",\r\n    \"hä6s5chen\",\r\n    \"2h1äst\",\r\n    \"2häug\",\r\n    \"häu2s1c\",\r\n    \"hä3usp\",\r\n    \"2h3b4\",\r\n    \"hba4ras\",\r\n    \"hber2e\",\r\n    \"2h1c\",\r\n    \"2h3d2\",\r\n    \"hdan2\",\r\n    \"2hea\",\r\n    \"he2ad\",\r\n    \"he3be\",\r\n    \"heb3eis\",\r\n    \"he2b3l\",\r\n    \"he3br\",\r\n    \"he3bu\",\r\n    \"he3ch2e\",\r\n    \"he3chi\",\r\n    \"he1cho\",\r\n    \"h3echs\",\r\n    \"he3cke\",\r\n    \"hed2g\",\r\n    \"he2dit\",\r\n    \"he1e4m\",\r\n    \"hee2n\",\r\n    \"hee2s\",\r\n    \"he1e2t\",\r\n    \"h2ef.\",\r\n    \"he2fan\",\r\n    \"he2fau\",\r\n    \"he2f1ei\",\r\n    \"he3f2em\",\r\n    \"hef3erm\",\r\n    \"2heff\",\r\n    \"he2fid\",\r\n    \"he4f3in4g\",\r\n    \"he2f5le\",\r\n    \"2hefr\",\r\n    \"hef4ra\",\r\n    \"he2fre\",\r\n    \"3heft\",\r\n    \"he2fu\",\r\n    \"he3gu\",\r\n    \"he2hel\",\r\n    \"hei4a\",\r\n    \"h4eib\",\r\n    \"h1eie\",\r\n    \"h1eif\",\r\n    \"h1eig\",\r\n    \"he2im\",\r\n    \"hei4mal\",\r\n    \"hei4man\",\r\n    \"hei4mar\",\r\n    \"hei4mei\",\r\n    \"heim3p\",\r\n    \"hei4mu\",\r\n    \"2hein\",\r\n    \"hei4na\",\r\n    \"heine2\",\r\n    \"hei4n3eb\",\r\n    \"hei6nene\",\r\n    \"hei4n3er\",\r\n    \"h3eintr\",\r\n    \"2heio\",\r\n    \"2he1ism\",\r\n    \"he1ist\",\r\n    \"h2eit\",\r\n    \"heit4s3\",\r\n    \"h1eiw\",\r\n    \"hekt3a\",\r\n    \"he2la\",\r\n    \"he3lag\",\r\n    \"hel1an\",\r\n    \"hel3au\",\r\n    \"hel1ec\",\r\n    \"he2lek\",\r\n    \"h3elem\",\r\n    \"he2len\",\r\n    \"h2elf\",\r\n    \"he3li\",\r\n    \"hell2a\",\r\n    \"hel4l3au\",\r\n    \"hel4mei\",\r\n    \"he3lo\",\r\n    \"he4lof\",\r\n    \"hel2or\",\r\n    \"he2lö\",\r\n    \"4helt\",\r\n    \"h4em.\",\r\n    \"2hema\",\r\n    \"hem2b\",\r\n    \"1hemd\",\r\n    \"2heme2\",\r\n    \"h2e3m2i\",\r\n    \"he4mia\",\r\n    \"h3e4miss\",\r\n    \"1hemm\",\r\n    \"2h3emp\",\r\n    \"h2en.\",\r\n    \"he4n3a2\",\r\n    \"he2nä\",\r\n    \"hen3ebe\",\r\n    \"henen1\",\r\n    \"hen3end\",\r\n    \"he4nene\",\r\n    \"he4nens\",\r\n    \"hen3erg\",\r\n    \"he4nerm\",\r\n    \"he2n1e4t\",\r\n    \"2henga\",\r\n    \"hen4gag\",\r\n    \"hen4kan\",\r\n    \"hen4kau\",\r\n    \"2heno\",\r\n    \"heno3t\",\r\n    \"hen4sem\",\r\n    \"henst2\",\r\n    \"hen3str\",\r\n    \"hent2a\",\r\n    \"hen3te\",\r\n    \"hen4ter\",\r\n    \"hen5tr\",\r\n    \"hen4tri\",\r\n    \"h1ents\",\r\n    \"2h3entw\",\r\n    \"h3entz\",\r\n    \"he4n3u\",\r\n    \"hen3z2\",\r\n    \"2he2o\",\r\n    \"he3on\",\r\n    \"he3op\",\r\n    \"he3pa\",\r\n    \"he3ph\",\r\n    \"h1e2pi\",\r\n    \"hept2\",\r\n    \"h2er.\",\r\n    \"her3a2b\",\r\n    \"he2rad\",\r\n    \"2herap\",\r\n    \"he4r3a2r\",\r\n    \"herau2\",\r\n    \"herb2\",\r\n    \"he2r1e2b\",\r\n    \"he4reck\",\r\n    \"her4eif\",\r\n    \"4he3reig\",\r\n    \"he6reis.\",\r\n    \"her7eises\",\r\n    \"he2rel\",\r\n    \"he4rene\",\r\n    \"he6rersc\",\r\n    \"he4rerw\",\r\n    \"h1erfo\",\r\n    \"her4fol\",\r\n    \"6hergebn\",\r\n    \"2herif\",\r\n    \"herin4d\",\r\n    \"herin4f\",\r\n    \"he6rin6nu\",\r\n    \"herin4s\",\r\n    \"h1erke\",\r\n    \"her4klä\",\r\n    \"h5er6kran\",\r\n    \"h6erlad\",\r\n    \"2herm\",\r\n    \"he3ro\",\r\n    \"he4r3o2b\",\r\n    \"he4rof\",\r\n    \"he4rop\",\r\n    \"he4rot\",\r\n    \"h1erör\",\r\n    \"hert4\",\r\n    \"her3th\",\r\n    \"her3um\",\r\n    \"her4zap\",\r\n    \"her6zeng\",\r\n    \"h3erzeu\",\r\n    \"her2z1w\",\r\n    \"he3s4a\",\r\n    \"2hese\",\r\n    \"he3si\",\r\n    \"he3s2p\",\r\n    \"hes6tä\",\r\n    \"he2tap\",\r\n    \"he3tä\",\r\n    \"heter2\",\r\n    \"he3th\",\r\n    \"het2i\",\r\n    \"he3t4s\",\r\n    \"he2u\",\r\n    \"heu3g\",\r\n    \"he3unt\",\r\n    \"3heusc\",\r\n    \"he3x\",\r\n    \"he1x2a\",\r\n    \"2hexp\",\r\n    \"hey2\",\r\n    \"he1ye\",\r\n    \"1hè\",\r\n    \"2h3f4\",\r\n    \"hfaller6\",\r\n    \"hfan2\",\r\n    \"hfel2l3\",\r\n    \"hfi2s\",\r\n    \"hflei2\",\r\n    \"2h3g4\",\r\n    \"hga2s1\",\r\n    \"2h1h2\",\r\n    \"hhoh2\",\r\n    \"4hi.\",\r\n    \"2hia\",\r\n    \"hi2ar\",\r\n    \"h1iat\",\r\n    \"2hic\",\r\n    \"hi1ce\",\r\n    \"hich6t5er\",\r\n    \"hicht6sp\",\r\n    \"hi3d\",\r\n    \"hid4e\",\r\n    \"hi4dio\",\r\n    \"2hido\",\r\n    \"hi2e\",\r\n    \"hi3ens\",\r\n    \"hie4rei\",\r\n    \"hier3i\",\r\n    \"hie4rin\",\r\n    \"hiers2\",\r\n    \"hif3f4r\",\r\n    \"hi2k3r\",\r\n    \"hi2l3a4\",\r\n    \"hile3n2\",\r\n    \"hil2fr\",\r\n    \"h2im\",\r\n    \"2hima\",\r\n    \"h3i4mit\",\r\n    \"h4imm\",\r\n    \"h3impe\",\r\n    \"hi2n\",\r\n    \"hi3nak\",\r\n    \"hi3nam\",\r\n    \"hi3nap\",\r\n    \"hi5n2as\",\r\n    \"h2inde\",\r\n    \"hine2i\",\r\n    \"hi3nel\",\r\n    \"hin2en5\",\r\n    \"h1inf\",\r\n    \"h1inh\",\r\n    \"2hi3n2i\",\r\n    \"hin3n2\",\r\n    \"hi3n2o\",\r\n    \"hin3s2\",\r\n    \"hin2t1a\",\r\n    \"2hio\",\r\n    \"hi3ob\",\r\n    \"hi4on\",\r\n    \"hi2p3\",\r\n    \"hi4pl\",\r\n    \"hips2\",\r\n    \"hi4pu\",\r\n    \"hi2r\",\r\n    \"hi3ra\",\r\n    \"2hi3re\",\r\n    \"hi3ri\",\r\n    \"hir2m1a\",\r\n    \"hir2mi\",\r\n    \"hirn1\",\r\n    \"hir4ner\",\r\n    \"hir2s\",\r\n    \"1hirt\",\r\n    \"2his.\",\r\n    \"his2a\",\r\n    \"hi4se\",\r\n    \"h1i2so\",\r\n    \"hi3tac\",\r\n    \"hi2tan\",\r\n    \"hi2tel\",\r\n    \"hi1th\",\r\n    \"hi3t2i\",\r\n    \"hit1r\",\r\n    \"hi2tro\",\r\n    \"hit3z2e\",\r\n    \"hi2v1o\",\r\n    \"2h1j\",\r\n    \"2h1k4\",\r\n    \"hkamp2\",\r\n    \"h2keu\",\r\n    \"hki2n1\",\r\n    \"h3kö\",\r\n    \"2hl\",\r\n    \"h4laf\",\r\n    \"hl2ag\",\r\n    \"hla2gr\",\r\n    \"hlan4d3a\",\r\n    \"hl1ans\",\r\n    \"hl1anz\",\r\n    \"h1las\",\r\n    \"h1lat\",\r\n    \"h1laut\",\r\n    \"h1lay\",\r\n    \"h3läche\",\r\n    \"h1läs\",\r\n    \"h1läu\",\r\n    \"hlb4\",\r\n    \"hl3d4\",\r\n    \"h3le.\",\r\n    \"hle3a\",\r\n    \"h3leb\",\r\n    \"h3led\",\r\n    \"hle3e\",\r\n    \"h2leis\",\r\n    \"h3leist\",\r\n    \"hl1el\",\r\n    \"h5len.\",\r\n    \"hle4nas\",\r\n    \"hlenen3\",\r\n    \"hl2enn\",\r\n    \"h4l3entr\",\r\n    \"h4lents\",\r\n    \"hl2enz\",\r\n    \"h3ler\",\r\n    \"hle2r3a\",\r\n    \"hl4ere\",\r\n    \"h2lerg\",\r\n    \"hler4hö\",\r\n    \"hl2erk\",\r\n    \"h6l3er4nä\",\r\n    \"hle3run\",\r\n    \"hl1erw\",\r\n    \"h4lerz\",\r\n    \"h3les\",\r\n    \"h4lesi\",\r\n    \"h4leud\",\r\n    \"hlf4\",\r\n    \"hlg4\",\r\n    \"h2lie\",\r\n    \"h3lied\",\r\n    \"h2lif\",\r\n    \"h2lim\",\r\n    \"hl1ind\",\r\n    \"hling4s3\",\r\n    \"h2lip\",\r\n    \"h2lis\",\r\n    \"h2lit1\",\r\n    \"hl3l2\",\r\n    \"hl3m2\",\r\n    \"h2lo\",\r\n    \"hl1ob\",\r\n    \"h3loc\",\r\n    \"hl1o2f\",\r\n    \"h3log\",\r\n    \"h4lor\",\r\n    \"hlo2ra\",\r\n    \"h3los.\",\r\n    \"h3losi\",\r\n    \"h4loss\",\r\n    \"hlos4st\",\r\n    \"h2lös\",\r\n    \"hl4sar\",\r\n    \"hl2ser\",\r\n    \"hl3ska\",\r\n    \"hl3s2lo\",\r\n    \"hl5s6tern\",\r\n    \"hls3tie\",\r\n    \"hl5str\",\r\n    \"hl2su\",\r\n    \"hl3t2\",\r\n    \"h3luf\",\r\n    \"h3luk\",\r\n    \"h3lumpe\",\r\n    \"h1lüf\",\r\n    \"hlz2\",\r\n    \"2h1m\",\r\n    \"hm2a\",\r\n    \"hm3abl\",\r\n    \"h3mad\",\r\n    \"h3mag\",\r\n    \"h3mak\",\r\n    \"h3man\",\r\n    \"h2mant\",\r\n    \"h3mar\",\r\n    \"h4m3arc\",\r\n    \"h3mä\",\r\n    \"h4mäc\",\r\n    \"h4mäh\",\r\n    \"h4mäl\",\r\n    \"hm2e\",\r\n    \"h3me.\",\r\n    \"h3med\",\r\n    \"hme1e4\",\r\n    \"hmeer4s\",\r\n    \"h3mein\",\r\n    \"h3meld\",\r\n    \"hme3le\",\r\n    \"h3men\",\r\n    \"hmen2s\",\r\n    \"hme4ran\",\r\n    \"hme4rei\",\r\n    \"hme1s2t\",\r\n    \"h3mex\",\r\n    \"hmi2e\",\r\n    \"h3mind\",\r\n    \"h3mini\",\r\n    \"h3minz\",\r\n    \"h3mirr\",\r\n    \"h2mo\",\r\n    \"h3mop\",\r\n    \"h3mot\",\r\n    \"h3m2ö\",\r\n    \"h4möl\",\r\n    \"hm3p2\",\r\n    \"hm2s\",\r\n    \"hm3sa\",\r\n    \"hms1p\",\r\n    \"h2mu\",\r\n    \"h3mul\",\r\n    \"hmut4s\",\r\n    \"2hn\",\r\n    \"h2na\",\r\n    \"hna2c\",\r\n    \"h3nag\",\r\n    \"h3nam\",\r\n    \"h4nar\",\r\n    \"hn3a2te\",\r\n    \"h4natt\",\r\n    \"h3nau.\",\r\n    \"h2nä\",\r\n    \"hn1äh\",\r\n    \"h3näs\",\r\n    \"hn3d4\",\r\n    \"hn2e\",\r\n    \"hne3b\",\r\n    \"hne2e3\",\r\n    \"hn3eff\",\r\n    \"hn3eig\",\r\n    \"hn3ein\",\r\n    \"h2nel\",\r\n    \"hne4n\",\r\n    \"hn4eng\",\r\n    \"hne4pf\",\r\n    \"h3ner\",\r\n    \"hner4de\",\r\n    \"hner3ei\",\r\n    \"h4n3e2ro\",\r\n    \"h4n3ersa\",\r\n    \"hn3ex\",\r\n    \"hn3f4\",\r\n    \"hnflei4\",\r\n    \"hnhof8stras\",\r\n    \"h2nic\",\r\n    \"h2nid\",\r\n    \"h2nie\",\r\n    \"hn1im\",\r\n    \"hn1in\",\r\n    \"h2nip\",\r\n    \"hni4sa\",\r\n    \"hnk4\",\r\n    \"hnno2\",\r\n    \"h2no2r\",\r\n    \"hnra2\",\r\n    \"hn3sa\",\r\n    \"hn3s2p\",\r\n    \"hnst2\",\r\n    \"hns4to\",\r\n    \"hnsuch4\",\r\n    \"hnts2\",\r\n    \"h2nul\",\r\n    \"h2n1unf\",\r\n    \"hn3z2\",\r\n    \"ho4ar\",\r\n    \"ho3bern\",\r\n    \"ho2b3l\",\r\n    \"ho2ch3\",\r\n    \"ho4cha\",\r\n    \"hoche2\",\r\n    \"ho2cka\",\r\n    \"ho6ckerl\",\r\n    \"hock3t\",\r\n    \"2hod\",\r\n    \"2ho2e\",\r\n    \"hoe3n\",\r\n    \"ho3er\",\r\n    \"ho2f1a2\",\r\n    \"ho2fä\",\r\n    \"ho2fed\",\r\n    \"ho2feu\",\r\n    \"hof3f4a\",\r\n    \"ho2f3l\",\r\n    \"ho2f1o\",\r\n    \"ho2f3r\",\r\n    \"ho2fu\",\r\n    \"2hoi\",\r\n    \"ho2l1a2\",\r\n    \"hol3ar\",\r\n    \"1hole\",\r\n    \"ho2l1ei\",\r\n    \"ho2lem\",\r\n    \"hol3g4\",\r\n    \"hol3k\",\r\n    \"holl4\",\r\n    \"hol3s\",\r\n    \"2holy\",\r\n    \"h3olym\",\r\n    \"1holz\",\r\n    \"hol6zene\",\r\n    \"hom2e\",\r\n    \"ho2me.\",\r\n    \"ho2mec\",\r\n    \"ho2med\",\r\n    \"h2on\",\r\n    \"hon2er\",\r\n    \"ho1on\",\r\n    \"hoo2r\",\r\n    \"2hop\",\r\n    \"ho1ra\",\r\n    \"h1o2r2an\",\r\n    \"ho2rau\",\r\n    \"h1or3d\",\r\n    \"2hore\",\r\n    \"ho4rens\",\r\n    \"ho3ret\",\r\n    \"2h1org\",\r\n    \"hor3ta\",\r\n    \"hor4ter\",\r\n    \"h1ortu\",\r\n    \"h2os.\",\r\n    \"hose2\",\r\n    \"ho2sei\",\r\n    \"ho3sl\",\r\n    \"ho4sla\",\r\n    \"ho2sp\",\r\n    \"ho3spr\",\r\n    \"ho4ßene\",\r\n    \"2hot.\",\r\n    \"ho3th\",\r\n    \"2hotr\",\r\n    \"2hot3s2\",\r\n    \"1hou\",\r\n    \"hou4s\",\r\n    \"2ho2w1\",\r\n    \"h1ox\",\r\n    \"ho1y2\",\r\n    \"1h2ö\",\r\n    \"2hö.\",\r\n    \"hö2c\",\r\n    \"hö3ck\",\r\n    \"5höhe\",\r\n    \"2hö2s1\",\r\n    \"h3öst\",\r\n    \"2h3p4\",\r\n    \"h1q\",\r\n    \"2hr\",\r\n    \"hra2b\",\r\n    \"hr3a2c\",\r\n    \"hr3ad\",\r\n    \"hr1a2g\",\r\n    \"h1r4ah\",\r\n    \"h1rai\",\r\n    \"h1rane\",\r\n    \"hr3ap\",\r\n    \"h3räu\",\r\n    \"hrb4\",\r\n    \"hr1c\",\r\n    \"hr3d\",\r\n    \"h2rec\",\r\n    \"h3r2ech\",\r\n    \"h3red\",\r\n    \"h3ref\",\r\n    \"hr3eff\",\r\n    \"h2r1eh\",\r\n    \"h4rei.\",\r\n    \"hrei4ba\",\r\n    \"hrei4br\",\r\n    \"h3reic\",\r\n    \"h3reif\",\r\n    \"h4r3eig\",\r\n    \"hr4eini\",\r\n    \"h4reinl\",\r\n    \"hrei3th\",\r\n    \"hreli1\",\r\n    \"h3rep\",\r\n    \"hrer6geb\",\r\n    \"hr2erh\",\r\n    \"hr2erk\",\r\n    \"h4rerla\",\r\n    \"h6rer6leb\",\r\n    \"hr2erm\",\r\n    \"hrer3s\",\r\n    \"hrer4sa\",\r\n    \"hr2erw\",\r\n    \"hr2erz\",\r\n    \"h3re2s3\",\r\n    \"hress2\",\r\n    \"hrest2\",\r\n    \"hre2t\",\r\n    \"h2r1eta\",\r\n    \"h2r1eu\",\r\n    \"h2rev\",\r\n    \"hrg2\",\r\n    \"h2ri\",\r\n    \"h3ric\",\r\n    \"h4rick\",\r\n    \"hri4e\",\r\n    \"h3riesl\",\r\n    \"h3rin\",\r\n    \"h4r1ind\",\r\n    \"hr1int\",\r\n    \"h4rist\",\r\n    \"h5ritter\",\r\n    \"hr3l\",\r\n    \"hr3m2\",\r\n    \"h3rog\",\r\n    \"h3roh\",\r\n    \"h1ro2l\",\r\n    \"h4romat\",\r\n    \"h4rome\",\r\n    \"h4romi\",\r\n    \"h4romo\",\r\n    \"h4ron\",\r\n    \"h1ropa\",\r\n    \"hro4r\",\r\n    \"h3rou\",\r\n    \"h3rö2s\",\r\n    \"hrr4\",\r\n    \"hr4s1ac\",\r\n    \"hr4s3and\",\r\n    \"hr3schl\",\r\n    \"hr2s1em\",\r\n    \"hr2sen\",\r\n    \"hr2s1er\",\r\n    \"hr2set\",\r\n    \"hr4sh\",\r\n    \"hr2sin\",\r\n    \"hrs3k\",\r\n    \"hrs3l\",\r\n    \"hr4s1of\",\r\n    \"hrst2\",\r\n    \"hr2su\",\r\n    \"hr2tab\",\r\n    \"hr2tan\",\r\n    \"hr2te2l\",\r\n    \"hr2th\",\r\n    \"hr2top\",\r\n    \"hrt3ric\",\r\n    \"hrt2s\",\r\n    \"h3ruh\",\r\n    \"hr1ums\",\r\n    \"h3rut\",\r\n    \"h3rü\",\r\n    \"h4rüb\",\r\n    \"h4ry\",\r\n    \"hrz2\",\r\n    \"4hs\",\r\n    \"h4s3acht\",\r\n    \"h2s1a2d\",\r\n    \"h2s1alk\",\r\n    \"h2sall\",\r\n    \"h4samt\",\r\n    \"h2san\",\r\n    \"hs3and\",\r\n    \"h2s1as\",\r\n    \"h2sath\",\r\n    \"h2sato\",\r\n    \"h2saud\",\r\n    \"h4s3aur\",\r\n    \"h2saut\",\r\n    \"h2säh\",\r\n    \"h2säug\",\r\n    \"h4schan\",\r\n    \"hs2cr\",\r\n    \"h2s3ec\",\r\n    \"hse4e\",\r\n    \"h4s1ehr\",\r\n    \"h2s1eie\",\r\n    \"h4seind\",\r\n    \"h6seinst\",\r\n    \"h3sele\",\r\n    \"hse4lin\",\r\n    \"hs1emi\",\r\n    \"h4sendw\",\r\n    \"hsen5erg\",\r\n    \"h2s1ent\",\r\n    \"h2s1erf\",\r\n    \"hs1erg\",\r\n    \"h2serh\",\r\n    \"h4serkl\",\r\n    \"h2s1erl\",\r\n    \"hs1ern\",\r\n    \"h4sernä\",\r\n    \"hs4erne\",\r\n    \"h2serö\",\r\n    \"h2s1erw\",\r\n    \"h2serz\",\r\n    \"h2sex\",\r\n    \"h3s2ext\",\r\n    \"hsha2k\",\r\n    \"h2s1i2d\",\r\n    \"hs2im\",\r\n    \"h2s1ing\",\r\n    \"h3s4inni\",\r\n    \"h4s3ita\",\r\n    \"hs2kal\",\r\n    \"h3skand\",\r\n    \"hs1of\",\r\n    \"h2sop\",\r\n    \"hs1org\",\r\n    \"h2spac\",\r\n    \"h4s3pani\",\r\n    \"h2s1par\",\r\n    \"h2s1pat\",\r\n    \"h3spec\",\r\n    \"h3spei\",\r\n    \"h3sperb\",\r\n    \"h2sph\",\r\n    \"h3spoi\",\r\n    \"h2sprä\",\r\n    \"h2spro\",\r\n    \"hss4\",\r\n    \"h1st2a\",\r\n    \"hs3tabl\",\r\n    \"h3stad\",\r\n    \"h2staf\",\r\n    \"hst3alt\",\r\n    \"h3stan\",\r\n    \"hst3arb\",\r\n    \"h2s3tau\",\r\n    \"h2s3täu\",\r\n    \"h1stec\",\r\n    \"h1stei\",\r\n    \"h1stel\",\r\n    \"h4stele\",\r\n    \"h3s4terb\",\r\n    \"h3s4tern\",\r\n    \"h1s2ti\",\r\n    \"h2stit\",\r\n    \"h1sto\",\r\n    \"h2stol\",\r\n    \"h2stor\",\r\n    \"h1str\",\r\n    \"h4s3treu\",\r\n    \"hstro2\",\r\n    \"hs3tum\",\r\n    \"h1stun\",\r\n    \"h1stü\",\r\n    \"h2s1u\",\r\n    \"hs2ung\",\r\n    \"4h1t\",\r\n    \"ht1a\",\r\n    \"h2tab\",\r\n    \"hta2bl\",\r\n    \"h2ta2d\",\r\n    \"ht2ag\",\r\n    \"ht4akt.\",\r\n    \"ht4akte\",\r\n    \"h2tall\",\r\n    \"h4talo\",\r\n    \"h2talp\",\r\n    \"h2talt\",\r\n    \"h4ta2m\",\r\n    \"h2ta2n\",\r\n    \"ht3ane\",\r\n    \"ht2ank\",\r\n    \"h2tap\",\r\n    \"h2ta2r\",\r\n    \"ht2a2s\",\r\n    \"h2t3asi\",\r\n    \"h2tasy\",\r\n    \"h2t3at\",\r\n    \"h3tat.\",\r\n    \"h3tate\",\r\n    \"h2tau\",\r\n    \"h3taum\",\r\n    \"h4tax\",\r\n    \"ht1ä\",\r\n    \"h2tär\",\r\n    \"ht3e4ber\",\r\n    \"ht1e2c\",\r\n    \"hte3cha\",\r\n    \"h2t1e2d\",\r\n    \"ht1eff\",\r\n    \"ht1e2he\",\r\n    \"h2teif\",\r\n    \"h2t1eig\",\r\n    \"h4t3eilz\",\r\n    \"h2t1eim\",\r\n    \"ht1ein\",\r\n    \"h2t1eis\",\r\n    \"h2t1eke\",\r\n    \"h4t3elas\",\r\n    \"hte6l5ei.\",\r\n    \"h4telek\",\r\n    \"h4t3elfe\",\r\n    \"h4t3elit\",\r\n    \"hte4m\",\r\n    \"h2t1emi\",\r\n    \"h2temp\",\r\n    \"h4tenga\",\r\n    \"h4t3engl\",\r\n    \"h4t3enta\",\r\n    \"h4tentf\",\r\n    \"h4tents\",\r\n    \"hter6de.\",\r\n    \"hterer6s\",\r\n    \"ht3erfo\",\r\n    \"ht3erfü\",\r\n    \"h6terfül\",\r\n    \"h6tergeb\",\r\n    \"ht3ergr\",\r\n    \"hter6gri\",\r\n    \"ht1erh\",\r\n    \"hter6häl\",\r\n    \"hter8höhu\",\r\n    \"h6terleb\",\r\n    \"h6t5erleu\",\r\n    \"h6terneu\",\r\n    \"ht5erspa\",\r\n    \"hter8spar\",\r\n    \"ht3erst\",\r\n    \"h6tersta\",\r\n    \"hter6tra\",\r\n    \"ht3erwä\",\r\n    \"ht3erze\",\r\n    \"h4t1e2se\",\r\n    \"h4t1ess\",\r\n    \"h2teta\",\r\n    \"hte4th\",\r\n    \"h2t1eu\",\r\n    \"h4textr\",\r\n    \"h2t1h\",\r\n    \"h4thei\",\r\n    \"h3thera\",\r\n    \"h3thes\",\r\n    \"h4tho\",\r\n    \"h2t1i2d\",\r\n    \"h2t1im\",\r\n    \"h2t1i6n3\",\r\n    \"ht3ine\",\r\n    \"h2t1is\",\r\n    \"hti5t2\",\r\n    \"htni2\",\r\n    \"h2t1ob\",\r\n    \"hto4d1\",\r\n    \"h2t1o2f\",\r\n    \"h4t3oly\",\r\n    \"h2tope\",\r\n    \"h4tord\",\r\n    \"ht3rak\",\r\n    \"h3tran\",\r\n    \"ht3rand\",\r\n    \"h4t3ras\",\r\n    \"ht6rates\",\r\n    \"ht3rau\",\r\n    \"h4traub\",\r\n    \"ht6raume\",\r\n    \"ht3rec\",\r\n    \"h5treck\",\r\n    \"ht3rei\",\r\n    \"h2t3res\",\r\n    \"ht3ric\",\r\n    \"h4t3rieg\",\r\n    \"h4t3rin\",\r\n    \"h2t3rol\",\r\n    \"h2t3ros\",\r\n    \"ht3röm\",\r\n    \"ht3ru\",\r\n    \"h2t3rü\",\r\n    \"h4ts\",\r\n    \"ht2sah\",\r\n    \"ht2sal\",\r\n    \"ht4s3a4n\",\r\n    \"ht2scr\",\r\n    \"ht4sein\",\r\n    \"ht2sel\",\r\n    \"ht4s3end\",\r\n    \"ht4seng\",\r\n    \"htse2r1\",\r\n    \"ht4s3eri\",\r\n    \"htsha2\",\r\n    \"ht3s4hak\",\r\n    \"hts3kr\",\r\n    \"ht2s1o\",\r\n    \"ht2sp\",\r\n    \"hts3par\",\r\n    \"hts3tät\",\r\n    \"hts4tie\",\r\n    \"hts5trau\",\r\n    \"ht4s3tur\",\r\n    \"ht4s3tür\",\r\n    \"ht2su\",\r\n    \"htt4\",\r\n    \"htti2\",\r\n    \"h3tub\",\r\n    \"htu2e\",\r\n    \"h2t1urs\",\r\n    \"h3tü\",\r\n    \"ht3z2\",\r\n    \"hu2b1a\",\r\n    \"hu2b1ei\",\r\n    \"hu4bel\",\r\n    \"hu2b1en2\",\r\n    \"hu2bi\",\r\n    \"hu2b3l\",\r\n    \"hu4b5r\",\r\n    \"hu2bu\",\r\n    \"hu1c\",\r\n    \"hu2fa\",\r\n    \"hu2h3a\",\r\n    \"hu2h1i\",\r\n    \"h1uhr\",\r\n    \"h1uhu\",\r\n    \"hu2kä\",\r\n    \"hu2k1in\",\r\n    \"huko1\",\r\n    \"huk3t4\",\r\n    \"hu2l3a2\",\r\n    \"hu4lab\",\r\n    \"hu2lä\",\r\n    \"hule2\",\r\n    \"hu2l1eb\",\r\n    \"hu2l1ei\",\r\n    \"hu2lem\",\r\n    \"hu4l3eng\",\r\n    \"hu4lent\",\r\n    \"hu2l1er\",\r\n    \"hu2let\",\r\n    \"hu2lid\",\r\n    \"hu2l1in\",\r\n    \"hul3l2\",\r\n    \"hu2lo\",\r\n    \"hu2lö\",\r\n    \"hul3s2\",\r\n    \"hu3m2a\",\r\n    \"h1umh\",\r\n    \"h1ums\",\r\n    \"hu2n\",\r\n    \"h1una\",\r\n    \"hun3d2e\",\r\n    \"hunde3i\",\r\n    \"hunde3s\",\r\n    \"hun2e\",\r\n    \"2hunf\",\r\n    \"hung2\",\r\n    \"hun3ge\",\r\n    \"hung4s\",\r\n    \"hungsa4\",\r\n    \"h1uni\",\r\n    \"h1unm\",\r\n    \"2hunt\",\r\n    \"h1ups\",\r\n    \"2hur\",\r\n    \"hur3g2\",\r\n    \"hur2t3h\",\r\n    \"hu3sa\",\r\n    \"hu2so\",\r\n    \"hus2s3a\",\r\n    \"hus3se\",\r\n    \"hus4ser4\",\r\n    \"hus2s1o\",\r\n    \"hus2sp\",\r\n    \"hus2st\",\r\n    \"hu2tab\",\r\n    \"hu2ti\",\r\n    \"hu2t1o\",\r\n    \"hu2t3r\",\r\n    \"hut2t\",\r\n    \"hut3te\",\r\n    \"hut4zen\",\r\n    \"hut4z3er\",\r\n    \"hut2zu\",\r\n    \"h2ü\",\r\n    \"h3über\",\r\n    \"h4übs\",\r\n    \"h3übu\",\r\n    \"hüf2\",\r\n    \"hüft1\",\r\n    \"hühne4\",\r\n    \"hüs3\",\r\n    \"2h1v\",\r\n    \"hvil2\",\r\n    \"2hw2\",\r\n    \"h2wall\",\r\n    \"hwe1c\",\r\n    \"h1weib\",\r\n    \"h1weih\",\r\n    \"hweins3\",\r\n    \"hwein6sa\",\r\n    \"h2wirr\",\r\n    \"1hyd4\",\r\n    \"hy3dr\",\r\n    \"hy2lor\",\r\n    \"1hymn\",\r\n    \"h1yo\",\r\n    \"hy3os\",\r\n    \"1hyp\",\r\n    \"hy2pe.\",\r\n    \"2hy2t\",\r\n    \"2h1z\",\r\n    \"hz2a\",\r\n    \"h3z2o\",\r\n    \"hzug4\",\r\n    \"h3z2w\",\r\n    \"i3ad.\",\r\n    \"iad2a\",\r\n    \"i1adn\",\r\n    \"ia3do\",\r\n    \"iaf4l\",\r\n    \"i2ago\",\r\n    \"ia1h2\",\r\n    \"i1ai\",\r\n    \"i3ak.\",\r\n    \"i3ake\",\r\n    \"ia2kei\",\r\n    \"ia2kr\",\r\n    \"i1akt\",\r\n    \"i1al\",\r\n    \"ia2l1a2\",\r\n    \"ial3ar\",\r\n    \"ial3as\",\r\n    \"ia2lä\",\r\n    \"ial3b4\",\r\n    \"ial3d4\",\r\n    \"i3aleb\",\r\n    \"i3alef\",\r\n    \"i3alei\",\r\n    \"ia3lek\",\r\n    \"i3alel\",\r\n    \"i3aleng\",\r\n    \"i3alent\",\r\n    \"i3alerb\",\r\n    \"i3aler4f\",\r\n    \"i3alerh\",\r\n    \"i3a4lerm\",\r\n    \"i3a2l1et\",\r\n    \"i3alex\",\r\n    \"i3a2lia\",\r\n    \"i3alim\",\r\n    \"i3a2lin\",\r\n    \"i3al3l\",\r\n    \"ial4ler\",\r\n    \"iall2i\",\r\n    \"i2alo\",\r\n    \"ia2lon\",\r\n    \"ia2lop\",\r\n    \"ia2l1o2r\",\r\n    \"ial3p\",\r\n    \"ial3t2\",\r\n    \"ia2l3u4\",\r\n    \"ial3z2\",\r\n    \"i3am.\",\r\n    \"ia3ma\",\r\n    \"iampe4\",\r\n    \"i1ams\",\r\n    \"i1an.\",\r\n    \"i1an2a\",\r\n    \"ia2nal\",\r\n    \"ian3alt\",\r\n    \"ia2nau\",\r\n    \"i1anc\",\r\n    \"i3and2\",\r\n    \"i3a2n1e2b\",\r\n    \"ian2er\",\r\n    \"i1ann\",\r\n    \"i1ans\",\r\n    \"ian2s1p\",\r\n    \"i3ant\",\r\n    \"i3anz\",\r\n    \"ianza4\",\r\n    \"ia1o\",\r\n    \"ia2op\",\r\n    \"ia3p\",\r\n    \"ia1q\",\r\n    \"i1ar\",\r\n    \"i3ar.\",\r\n    \"ia2ra\",\r\n    \"i2are\",\r\n    \"iar3r\",\r\n    \"i1as\",\r\n    \"i3as.\",\r\n    \"ia3sh\",\r\n    \"i2asi\",\r\n    \"ia3s2p\",\r\n    \"ias3s\",\r\n    \"iast4\",\r\n    \"i3at.\",\r\n    \"i3at2h\",\r\n    \"i4athe\",\r\n    \"1iatr\",\r\n    \"i3ats\",\r\n    \"i3au\",\r\n    \"ia3un\",\r\n    \"i2az\",\r\n    \"2iä\",\r\n    \"i1ä2m\",\r\n    \"i1äp\",\r\n    \"iär2\",\r\n    \"i1är.\",\r\n    \"iär3m\",\r\n    \"i1ärs\",\r\n    \"iär3z\",\r\n    \"i1ät\",\r\n    \"i3ä4tem\",\r\n    \"iä2ti\",\r\n    \"iä4tr\",\r\n    \"iät5s4\",\r\n    \"i1äv\",\r\n    \"4i1b\",\r\n    \"ib1art\",\r\n    \"i2b1auf\",\r\n    \"i2b1aus\",\r\n    \"i2baut\",\r\n    \"ib2bli\",\r\n    \"i2b1eig\",\r\n    \"i2b1eis\",\r\n    \"ibe4n1\",\r\n    \"i6ber6geb\",\r\n    \"i4b3er4la\",\r\n    \"ibe1ro\",\r\n    \"i2bim\",\r\n    \"i2b1in\",\r\n    \"i2blad\",\r\n    \"i2bleu\",\r\n    \"i3blu\",\r\n    \"i3b2o\",\r\n    \"i2bö\",\r\n    \"i2b3rau\",\r\n    \"ib3ric\",\r\n    \"i2b3roc\",\r\n    \"ib2ser\",\r\n    \"ib4ste\",\r\n    \"ib2un\",\r\n    \"i2b3unk\",\r\n    \"i2b3unt\",\r\n    \"ibus1c\",\r\n    \"2ic\",\r\n    \"i3ca\",\r\n    \"ic1c\",\r\n    \"ice1\",\r\n    \"ich1a2\",\r\n    \"ich6art.\",\r\n    \"ich1ä\",\r\n    \"i1che\",\r\n    \"ich1ei\",\r\n    \"ich2er\",\r\n    \"icherin5\",\r\n    \"i1chi\",\r\n    \"ich1l\",\r\n    \"ich3le\",\r\n    \"ich3li\",\r\n    \"i3ch6lo\",\r\n    \"ich5m\",\r\n    \"ich3n\",\r\n    \"i1cho\",\r\n    \"ich3ort\",\r\n    \"i2ch3r\",\r\n    \"ich6sele\",\r\n    \"ich2s1i\",\r\n    \"ich4spe\",\r\n    \"ich6stie\",\r\n    \"ich2tr\",\r\n    \"i1chu\",\r\n    \"ich1w\",\r\n    \"i1ci\",\r\n    \"i3cke\",\r\n    \"ickt2\",\r\n    \"i1cl\",\r\n    \"ic3la\",\r\n    \"ic3ra\",\r\n    \"i3cu\",\r\n    \"i1d\",\r\n    \"2ida\",\r\n    \"id2ab\",\r\n    \"i3d2ac\",\r\n    \"id4al\",\r\n    \"id1a2n\",\r\n    \"i3d2ans\",\r\n    \"i3d4at\",\r\n    \"id1au\",\r\n    \"id2ax\",\r\n    \"idä1\",\r\n    \"id2e\",\r\n    \"2i3de.\",\r\n    \"i2dea\",\r\n    \"1idee\",\r\n    \"id3eis\",\r\n    \"2idel\",\r\n    \"idel4ä\",\r\n    \"i4demul\",\r\n    \"4i3den.\",\r\n    \"ide4n1o\",\r\n    \"iden4se\",\r\n    \"ide3ran\",\r\n    \"iderin8nu\",\r\n    \"ide1rö\",\r\n    \"ider6reg\",\r\n    \"2i3des\",\r\n    \"ide5sa\",\r\n    \"ide3so\",\r\n    \"ides2p\",\r\n    \"1i2di2o\",\r\n    \"idi4on\",\r\n    \"i4diot\",\r\n    \"2idk\",\r\n    \"idni3\",\r\n    \"id2o\",\r\n    \"i2dol\",\r\n    \"2idoo\",\r\n    \"i2dö\",\r\n    \"i2d3r\",\r\n    \"id4rä\",\r\n    \"id4rit\",\r\n    \"id4ro\",\r\n    \"id4ru\",\r\n    \"id2s1p\",\r\n    \"idt4\",\r\n    \"1i2dy\",\r\n    \"ie3a2\",\r\n    \"ie2bä\",\r\n    \"ie2bl\",\r\n    \"ieb3re\",\r\n    \"ie2bri\",\r\n    \"ie4b3rü\",\r\n    \"ieb4sto\",\r\n    \"ie1c\",\r\n    \"ie2cho\",\r\n    \"iech3t\",\r\n    \"ie2ck\",\r\n    \"ie2d3an\",\r\n    \"ie3de\",\r\n    \"ie2dr\",\r\n    \"ie1e2\",\r\n    \"ief3akt\",\r\n    \"ie2f1an\",\r\n    \"ie2far\",\r\n    \"ie2fau\",\r\n    \"ie2fäh\",\r\n    \"iefe2m\",\r\n    \"ief3f4\",\r\n    \"ief2i\",\r\n    \"ie2f3l\",\r\n    \"ie4fonk\",\r\n    \"ief1r\",\r\n    \"ie2fro\",\r\n    \"ie2gl\",\r\n    \"ieg5li\",\r\n    \"ie3g4n\",\r\n    \"ie2g3re\",\r\n    \"ieg4s5c\",\r\n    \"ieg4se\",\r\n    \"ieg4si\",\r\n    \"ieg4st\",\r\n    \"ie3her\",\r\n    \"ie2h1in\",\r\n    \"ieh3r2\",\r\n    \"i1ei\",\r\n    \"ie1ind\",\r\n    \"i2e2l1a\",\r\n    \"iela2r\",\r\n    \"ie2läs\",\r\n    \"iel3d4\",\r\n    \"i2ele\",\r\n    \"ie4l1e2b\",\r\n    \"iel1ec\",\r\n    \"iel3eid\",\r\n    \"ie2lek\",\r\n    \"i4elen\",\r\n    \"ie4lene\",\r\n    \"ie4leng\",\r\n    \"ieler4e\",\r\n    \"ieler6fi\",\r\n    \"ieler8geb\",\r\n    \"ieler6ke\",\r\n    \"ieler6la\",\r\n    \"ieler8lebn\",\r\n    \"iel4erw\",\r\n    \"ieles2\",\r\n    \"i2eli\",\r\n    \"ieli2d\",\r\n    \"i1ell2\",\r\n    \"ie2lo2b\",\r\n    \"ie2lop\",\r\n    \"ie6lor\",\r\n    \"i2els2\",\r\n    \"iel3sz\",\r\n    \"ielt2\",\r\n    \"iem2e\",\r\n    \"iemis2\",\r\n    \"i1en\",\r\n    \"i3en.\",\r\n    \"i3ena\",\r\n    \"ien1ag\",\r\n    \"ien4am\",\r\n    \"ie4nas\",\r\n    \"i3enä\",\r\n    \"i3end\",\r\n    \"i2ene\",\r\n    \"ien1eb\",\r\n    \"i3enec\",\r\n    \"i3e2n1e4k\",\r\n    \"iener6fo\",\r\n    \"ien3er4g\",\r\n    \"iener6la\",\r\n    \"i3enex\",\r\n    \"i3enf\",\r\n    \"i3eng4\",\r\n    \"ienge4f\",\r\n    \"ienge4z\",\r\n    \"i3enh\",\r\n    \"ie2nid\",\r\n    \"ie2nim\",\r\n    \"ie4n3in\",\r\n    \"i3enj\",\r\n    \"i3enk\",\r\n    \"i3enla\",\r\n    \"i3enle\",\r\n    \"i3enm\",\r\n    \"i3enn\",\r\n    \"i3e2no\",\r\n    \"i3enö\",\r\n    \"i3enp\",\r\n    \"i3enr\",\r\n    \"ien2s\",\r\n    \"i3ens.\",\r\n    \"i3ensa\",\r\n    \"i3en3sc\",\r\n    \"i3en3s2e\",\r\n    \"ien3si\",\r\n    \"ien3s2k\",\r\n    \"i3en3s2p\",\r\n    \"iens6t5er\",\r\n    \"ienst5rä\",\r\n    \"i3en3sz\",\r\n    \"ien4t3ar\",\r\n    \"i3enth\",\r\n    \"ien3tr\",\r\n    \"i3enty\",\r\n    \"ie3nu\",\r\n    \"ie4num\",\r\n    \"i3env\",\r\n    \"i3enw\",\r\n    \"i3enz\",\r\n    \"ie1o4\",\r\n    \"ier3a\",\r\n    \"ie2ra2d\",\r\n    \"ie2rap\",\r\n    \"ierb4\",\r\n    \"i3erbun\",\r\n    \"ier3d\",\r\n    \"i2ere\",\r\n    \"ie4reck\",\r\n    \"iere5ins\",\r\n    \"ie4r3eis\",\r\n    \"ie3r2er\",\r\n    \"ierer3k\",\r\n    \"ie4r3erz\",\r\n    \"ierf4\",\r\n    \"ierg4\",\r\n    \"i1ergi\",\r\n    \"i4eri\",\r\n    \"ierk2\",\r\n    \"i1ern\",\r\n    \"i3ern.\",\r\n    \"iern2a\",\r\n    \"i2erni\",\r\n    \"ie2rö\",\r\n    \"ier4re.\",\r\n    \"ier4s3eh\",\r\n    \"ier3sei\",\r\n    \"iers2t\",\r\n    \"ier3sta\",\r\n    \"ier3ste\",\r\n    \"ier3te\",\r\n    \"iert2i\",\r\n    \"ier3z2\",\r\n    \"2ies\",\r\n    \"ie2san\",\r\n    \"i2esc\",\r\n    \"i2ese\",\r\n    \"iesen3s4\",\r\n    \"ie3s4pa\",\r\n    \"ies2pe\",\r\n    \"ie2spu\",\r\n    \"ies6ser6g\",\r\n    \"ies6serl\",\r\n    \"ies2st\",\r\n    \"iest6e\",\r\n    \"ie4stin\",\r\n    \"ie1str\",\r\n    \"ie3su\",\r\n    \"ie4t1ag\",\r\n    \"ie2t1ak\",\r\n    \"ie2tan\",\r\n    \"ie2t1ap\",\r\n    \"ie2tat\",\r\n    \"ie2tau\",\r\n    \"ie4tent\",\r\n    \"ie4t3erh\",\r\n    \"ie4t3ert\",\r\n    \"i4ethe\",\r\n    \"iet3her\",\r\n    \"ie2t1ho\",\r\n    \"ie2thy\",\r\n    \"ie4tob\",\r\n    \"ie2t1ö4s\",\r\n    \"ie2t3ri\",\r\n    \"ie2t3ru\",\r\n    \"iet2se\",\r\n    \"i1ett\",\r\n    \"iet3zw\",\r\n    \"ieu2e\",\r\n    \"ie1un\",\r\n    \"ie2w3u\",\r\n    \"i1e2x\",\r\n    \"2if\",\r\n    \"if3ange\",\r\n    \"if1ar\",\r\n    \"i2f3arm\",\r\n    \"if4at\",\r\n    \"i2f1au\",\r\n    \"if1än\",\r\n    \"i2fec\",\r\n    \"i2f1ef\",\r\n    \"ife4i\",\r\n    \"if1ein\",\r\n    \"if2e4n\",\r\n    \"i2f1erg\",\r\n    \"if1erh\",\r\n    \"if2far\",\r\n    \"if2f3l\",\r\n    \"if2fro\",\r\n    \"iff2s\",\r\n    \"iff4ste\",\r\n    \"if3l\",\r\n    \"if1lac\",\r\n    \"if4lä\",\r\n    \"iflo4\",\r\n    \"if4los\",\r\n    \"i1flü\",\r\n    \"if3r\",\r\n    \"i1fre\",\r\n    \"i2freg\",\r\n    \"if4rev\",\r\n    \"if2s\",\r\n    \"if3sa\",\r\n    \"if3se\",\r\n    \"if3sp\",\r\n    \"if3sta\",\r\n    \"if2t3a\",\r\n    \"if2ted\",\r\n    \"if2t3ef\",\r\n    \"if4t1ei\",\r\n    \"if2te2l\",\r\n    \"if2tep\",\r\n    \"if4terk\",\r\n    \"ifte2s\",\r\n    \"if4t3esc\",\r\n    \"if4th\",\r\n    \"if2t1op\",\r\n    \"if2t1r\",\r\n    \"if4t3ri\",\r\n    \"ift3sp\",\r\n    \"ifts2t\",\r\n    \"ift3sz\",\r\n    \"if2tur\",\r\n    \"i1fy\",\r\n    \"2i1g\",\r\n    \"i2ganb\",\r\n    \"i2garb\",\r\n    \"ig1art\",\r\n    \"iga1s\",\r\n    \"i2g3att\",\r\n    \"igd2\",\r\n    \"i6gebrau\",\r\n    \"i4gefar\",\r\n    \"ige4füg\",\r\n    \"3i2gel.\",\r\n    \"ige5lau\",\r\n    \"i2geln\",\r\n    \"ige4me\",\r\n    \"ige4mis\",\r\n    \"ige4na\",\r\n    \"ige6nene\",\r\n    \"ige4nid\",\r\n    \"ige2o\",\r\n    \"ige2pa\",\r\n    \"ige2ra\",\r\n    \"ig5erwer\",\r\n    \"ig1erz\",\r\n    \"iger4ze\",\r\n    \"ige4sel\",\r\n    \"i2g1ess\",\r\n    \"ige4tra\",\r\n    \"ige4tre\",\r\n    \"ige4woh\",\r\n    \"i2gim\",\r\n    \"i2gl\",\r\n    \"ig1lau\",\r\n    \"i3glä\",\r\n    \"i3gle\",\r\n    \"ig3lim\",\r\n    \"ig4na\",\r\n    \"i4gnä\",\r\n    \"i3g4neu\",\r\n    \"ig4no\",\r\n    \"igo1p\",\r\n    \"ig3rad\",\r\n    \"i2g3re\",\r\n    \"ig4ren\",\r\n    \"i2grou\",\r\n    \"ig3s2ag\",\r\n    \"ig4sal\",\r\n    \"ig3sä\",\r\n    \"ig4schr\",\r\n    \"ig3s2o\",\r\n    \"ig3sp\",\r\n    \"ig4spa\",\r\n    \"ig3stei\",\r\n    \"ig4sti\",\r\n    \"ig4s3to\",\r\n    \"ig3str\",\r\n    \"ig6stras\",\r\n    \"ig3s4tü\",\r\n    \"igung4\",\r\n    \"2i1h\",\r\n    \"i2har\",\r\n    \"i3he\",\r\n    \"ihe1e\",\r\n    \"ih1elt\",\r\n    \"ihe4n\",\r\n    \"ihe3u\",\r\n    \"ih3m\",\r\n    \"ih3n\",\r\n    \"ih3r2\",\r\n    \"ihs2\",\r\n    \"ih1um.\",\r\n    \"ih1w\",\r\n    \"ii2\",\r\n    \"ii3a4\",\r\n    \"i1ie\",\r\n    \"i3ig\",\r\n    \"i1im\",\r\n    \"i3in\",\r\n    \"i1i4s\",\r\n    \"i2is.\",\r\n    \"ii3t\",\r\n    \"i1it.\",\r\n    \"i1j\",\r\n    \"1i2js\",\r\n    \"2i1k\",\r\n    \"ika2ge\",\r\n    \"ik1aka\",\r\n    \"ikaken3\",\r\n    \"i2k1akt\",\r\n    \"ik3amt\",\r\n    \"i2k1ang\",\r\n    \"i6kantei\",\r\n    \"ikanten8n\",\r\n    \"ik1art\",\r\n    \"ik3att\",\r\n    \"i2k1au\",\r\n    \"i3kaz\",\r\n    \"ik1äh\",\r\n    \"i2kär\",\r\n    \"4ike\",\r\n    \"i2keb\",\r\n    \"ik1ebe\",\r\n    \"ike2c\",\r\n    \"i2k1ed\",\r\n    \"i2k1ef\",\r\n    \"i2k1ei\",\r\n    \"ike4l1\",\r\n    \"ike2n1\",\r\n    \"ik1en2s\",\r\n    \"ik1ent\",\r\n    \"ike2ra\",\r\n    \"i2k1e4r2e\",\r\n    \"i2k1er2f\",\r\n    \"i5kerfam\",\r\n    \"i2k1er2h\",\r\n    \"i2ker2l\",\r\n    \"i2kero\",\r\n    \"i2ke3ru\",\r\n    \"i2k1eta\",\r\n    \"4iki\",\r\n    \"i3ki.\",\r\n    \"ik1i2d\",\r\n    \"i3kie\",\r\n    \"ik1in\",\r\n    \"i2kins\",\r\n    \"iki1s\",\r\n    \"i2k3l\",\r\n    \"ik4län\",\r\n    \"i3k4leri\",\r\n    \"i3k4let\",\r\n    \"ik4lim\",\r\n    \"i3klu\",\r\n    \"i2kne\",\r\n    \"ik3nu\",\r\n    \"iko3be\",\r\n    \"i2k1off\",\r\n    \"iko1p2\",\r\n    \"ik1or\",\r\n    \"iko2ri\",\r\n    \"iko1s\",\r\n    \"i2köl\",\r\n    \"ik3rä\",\r\n    \"ik3re\",\r\n    \"i2kres\",\r\n    \"ik4ris\",\r\n    \"i3kro\",\r\n    \"i2krö\",\r\n    \"iks2\",\r\n    \"ik3sa\",\r\n    \"ik3ste\",\r\n    \"ik3sz\",\r\n    \"ikt3erk\",\r\n    \"ik4t3esk\",\r\n    \"ik2t3re\",\r\n    \"ikt2u\",\r\n    \"i2k1uh\",\r\n    \"i2kup\",\r\n    \"i3kus\",\r\n    \"i2kü\",\r\n    \"i1la\",\r\n    \"i2lab\",\r\n    \"i2l1ac\",\r\n    \"i2l1ak\",\r\n    \"il1a2ma\",\r\n    \"il1ang\",\r\n    \"i2l1anm\",\r\n    \"i2lano\",\r\n    \"il1ans\",\r\n    \"ilan6zer\",\r\n    \"i2larb\",\r\n    \"il1asp\",\r\n    \"i2l1au\",\r\n    \"i3laub\",\r\n    \"i3l4aufb\",\r\n    \"i1lä1\",\r\n    \"i2lär\",\r\n    \"2ilb\",\r\n    \"ilb4l\",\r\n    \"il2c\",\r\n    \"il5chen\",\r\n    \"il2da\",\r\n    \"il2dä\",\r\n    \"ild3ebe\",\r\n    \"il4d3en4t\",\r\n    \"il3der\",\r\n    \"ild4erp\",\r\n    \"ilde2s\",\r\n    \"ildi2\",\r\n    \"ild1o\",\r\n    \"il2dor\",\r\n    \"il2dr\",\r\n    \"4ile\",\r\n    \"il1e2c\",\r\n    \"il1ein\",\r\n    \"il1el\",\r\n    \"i2lemb\",\r\n    \"i2l1e2mi\",\r\n    \"il1ent\",\r\n    \"i4lentl\",\r\n    \"i4lents\",\r\n    \"i2l1erd\",\r\n    \"iler4ei\",\r\n    \"i6lereig\",\r\n    \"il1erf\",\r\n    \"iler4fo\",\r\n    \"i2ler2g\",\r\n    \"i2l1er2h\",\r\n    \"i4ler4kl\",\r\n    \"il1err\",\r\n    \"i4lerri\",\r\n    \"i3l2erz\",\r\n    \"ile4th\",\r\n    \"il1ex\",\r\n    \"ilf2\",\r\n    \"ilfe3s\",\r\n    \"il2f3l\",\r\n    \"il2f3re\",\r\n    \"ilf4s3\",\r\n    \"il2gl\",\r\n    \"2ilh\",\r\n    \"2ili\",\r\n    \"ili3e4n3\",\r\n    \"iliga2\",\r\n    \"ili4g3ab\",\r\n    \"ilik4\",\r\n    \"i2l1ind\",\r\n    \"i4l3init\",\r\n    \"il1ins\",\r\n    \"i2l1ip\",\r\n    \"ili1pf\",\r\n    \"il3la\",\r\n    \"ill2an\",\r\n    \"il4lenn\",\r\n    \"il3l2er\",\r\n    \"1illu\",\r\n    \"il2mak\",\r\n    \"il2m1ap\",\r\n    \"il2m1au\",\r\n    \"ilm1ei\",\r\n    \"il2min\",\r\n    \"il2mor\",\r\n    \"2ilo\",\r\n    \"il1ob\",\r\n    \"il2oh\",\r\n    \"il2op\",\r\n    \"i2l1o2r\",\r\n    \"i3lou\",\r\n    \"i3lov\",\r\n    \"il1ox\",\r\n    \"ils3ent\",\r\n    \"ils4to\",\r\n    \"ilt2\",\r\n    \"il3th\",\r\n    \"i1lu\",\r\n    \"i2lum\",\r\n    \"ilung4\",\r\n    \"i2l1ur\",\r\n    \"i3lus\",\r\n    \"ilü4\",\r\n    \"2ilv4\",\r\n    \"il2zar\",\r\n    \"il2zau\",\r\n    \"ilz3erk\",\r\n    \"il2zwa\",\r\n    \"imad2\",\r\n    \"ima1i\",\r\n    \"im2al\",\r\n    \"i2m3anh\",\r\n    \"im1ans\",\r\n    \"i2marc\",\r\n    \"im3aren\",\r\n    \"i2m1arm\",\r\n    \"i2m1art\",\r\n    \"im2as\",\r\n    \"im4at\",\r\n    \"ima2tr\",\r\n    \"imat5sc\",\r\n    \"ima4tur\",\r\n    \"im1aus\",\r\n    \"i2maut\",\r\n    \"im3b\",\r\n    \"1imbi\",\r\n    \"i2meg\",\r\n    \"im1ein\",\r\n    \"i2mej\",\r\n    \"i2mek\",\r\n    \"i2mele\",\r\n    \"i2melf\",\r\n    \"im2en\",\r\n    \"i2m1er2f\",\r\n    \"i2m1er2l\",\r\n    \"i2m1er2z\",\r\n    \"i4me3sh\",\r\n    \"imes3s\",\r\n    \"i2meti\",\r\n    \"i2mew\",\r\n    \"imhau2\",\r\n    \"i2mid\",\r\n    \"im1i2de\",\r\n    \"i2mim\",\r\n    \"i2m1ind\",\r\n    \"i2minf\",\r\n    \"i2m1ins\",\r\n    \"im2mä\",\r\n    \"im2mei\",\r\n    \"immen1\",\r\n    \"imm3ent\",\r\n    \"im6menth\",\r\n    \"1immo\",\r\n    \"im2mor\",\r\n    \"2imo\",\r\n    \"i2m1ob\",\r\n    \"i2mo2p\",\r\n    \"imo3re\",\r\n    \"i2mö\",\r\n    \"1imp\",\r\n    \"imp2fa\",\r\n    \"im3pf2o\",\r\n    \"imp2s\",\r\n    \"im3pse\",\r\n    \"im4set\",\r\n    \"im3sph\",\r\n    \"2imt\",\r\n    \"imt2e\",\r\n    \"im3t2i\",\r\n    \"imt3s2\",\r\n    \"imtu2\",\r\n    \"4imu\",\r\n    \"im2um\",\r\n    \"im1urk\",\r\n    \"2in.\",\r\n    \"ina2be\",\r\n    \"in3abu\",\r\n    \"in1a2c\",\r\n    \"i4nack\",\r\n    \"in1ad\",\r\n    \"i3nald\",\r\n    \"inaler4\",\r\n    \"ina6lere\",\r\n    \"in2alp\",\r\n    \"i2n1am\",\r\n    \"in2an\",\r\n    \"in3an.\",\r\n    \"in3ana\",\r\n    \"in3ann\",\r\n    \"i2narb\",\r\n    \"in3att\",\r\n    \"i2n3au2\",\r\n    \"2inä\",\r\n    \"i2n1äh\",\r\n    \"in2är\",\r\n    \"in1äs\",\r\n    \"2ind.\",\r\n    \"inda2\",\r\n    \"ind2ac\",\r\n    \"in2dal\",\r\n    \"in2dan\",\r\n    \"2indä\",\r\n    \"2inde.\",\r\n    \"2inden\",\r\n    \"ind5erke\",\r\n    \"inder3t\",\r\n    \"inde3sp\",\r\n    \"1index\",\r\n    \"ind2i\",\r\n    \"1indik\",\r\n    \"in3dö\",\r\n    \"2indr\",\r\n    \"ind3se\",\r\n    \"1indus\",\r\n    \"in3d2ü\",\r\n    \"2ine\",\r\n    \"in1e2c\",\r\n    \"i3nee\",\r\n    \"i2neff\",\r\n    \"in4elen\",\r\n    \"ine2n1\",\r\n    \"ine3nä\",\r\n    \"i4nen4zy\",\r\n    \"i5ner.\",\r\n    \"i4n3erbi\",\r\n    \"in4erha\",\r\n    \"i4ner4he\",\r\n    \"i3nerk\",\r\n    \"i3n3erle\",\r\n    \"i6ner6leb\",\r\n    \"iner4lö\",\r\n    \"i4n3er4tr\",\r\n    \"i3nes\",\r\n    \"i4nesk\",\r\n    \"in2et\",\r\n    \"in1eu\",\r\n    \"ine3un\",\r\n    \"in3f4\",\r\n    \"1infek\",\r\n    \"1infiz\",\r\n    \"1info\",\r\n    \"2inga\",\r\n    \"in2g1af\",\r\n    \"in2g1ag\",\r\n    \"in2g1al\",\r\n    \"in2gam\",\r\n    \"ing1ar\",\r\n    \"2ingä\",\r\n    \"3ingeni\",\r\n    \"in3g2er\",\r\n    \"in4g3er4w\",\r\n    \"inges4\",\r\n    \"2in2gl\",\r\n    \"in3gla\",\r\n    \"in3glä\",\r\n    \"ing4s3am\",\r\n    \"ings6por\",\r\n    \"1inhab\",\r\n    \"2inhar\",\r\n    \"2inhau\",\r\n    \"2inhe\",\r\n    \"2ini.\",\r\n    \"in2id\",\r\n    \"ini3de\",\r\n    \"2inie\",\r\n    \"2inig\",\r\n    \"inig2a\",\r\n    \"ini3k4r\",\r\n    \"2inis\",\r\n    \"ini3se\",\r\n    \"init2\",\r\n    \"i3nitz\",\r\n    \"3inkarn\",\r\n    \"1inkas\",\r\n    \"inkels6t\",\r\n    \"in4k3ent\",\r\n    \"ink4er\",\r\n    \"in2kro\",\r\n    \"in3k2ü\",\r\n    \"inma4le\",\r\n    \"2inn.\",\r\n    \"inne4n\",\r\n    \"in4ner4m\",\r\n    \"2innl\",\r\n    \"in2nor\",\r\n    \"1innta\",\r\n    \"2ino\",\r\n    \"in1od\",\r\n    \"ino3e4\",\r\n    \"in3ols\",\r\n    \"in1or\",\r\n    \"ino1s\",\r\n    \"i3no3t\",\r\n    \"i2n1ou\",\r\n    \"i1nö\",\r\n    \"in1ö2d\",\r\n    \"2inr\",\r\n    \"2ins.\",\r\n    \"ins2am\",\r\n    \"in6samt.\",\r\n    \"insch2\",\r\n    \"2inse.\",\r\n    \"in2seb\",\r\n    \"2insed\",\r\n    \"2insen\",\r\n    \"2insk\",\r\n    \"in3sof\",\r\n    \"3instal\",\r\n    \"in4s3tät\",\r\n    \"4inst2e\",\r\n    \"in3s4tip\",\r\n    \"3instit\",\r\n    \"ins4to\",\r\n    \"4instra\",\r\n    \"in4strü\",\r\n    \"1insuf\",\r\n    \"ins3umz\",\r\n    \"in2sur\",\r\n    \"in3sz\",\r\n    \"2inta\",\r\n    \"2inte.\",\r\n    \"1integ\",\r\n    \"in3tei\",\r\n    \"2intep\",\r\n    \"2int2h\",\r\n    \"inthi1\",\r\n    \"int2o\",\r\n    \"2intö\",\r\n    \"2in3t4r\",\r\n    \"4inträ\",\r\n    \"in5tri\",\r\n    \"3intrig\",\r\n    \"int3s\",\r\n    \"i2n1u\",\r\n    \"i4nuh\",\r\n    \"in3unz\",\r\n    \"4inverm\",\r\n    \"invil2\",\r\n    \"i1ny2\",\r\n    \"in3z2e\",\r\n    \"inzel8ler\",\r\n    \"in3z2i\",\r\n    \"in3z2sc\",\r\n    \"inz2u\",\r\n    \"in3zw\",\r\n    \"i1ñ\",\r\n    \"2i1o\",\r\n    \"iob2l\",\r\n    \"io1c\",\r\n    \"io2d\",\r\n    \"io3da\",\r\n    \"io3e4\",\r\n    \"i2of\",\r\n    \"iof4l\",\r\n    \"i2oh\",\r\n    \"io1i\",\r\n    \"io3k6r\",\r\n    \"i3ol.\",\r\n    \"i3ols\",\r\n    \"i3om.\",\r\n    \"io3me\",\r\n    \"i3oms\",\r\n    \"ion2\",\r\n    \"i3on.\",\r\n    \"ion3an\",\r\n    \"io2n3au\",\r\n    \"ion3d2\",\r\n    \"io4nee\",\r\n    \"i3ono\",\r\n    \"io2nor\",\r\n    \"i3ons3\",\r\n    \"ion4sa\",\r\n    \"ion4sen\",\r\n    \"i2ony\",\r\n    \"i2oo\",\r\n    \"i2o1p\",\r\n    \"i3o4pf\",\r\n    \"i3opt\",\r\n    \"i2or\",\r\n    \"i3or.\",\r\n    \"i3orc\",\r\n    \"ior2e\",\r\n    \"iore4n\",\r\n    \"io1r2h\",\r\n    \"i3orp\",\r\n    \"i3ors\",\r\n    \"i3ort\",\r\n    \"4ios\",\r\n    \"i3os.\",\r\n    \"io3sh\",\r\n    \"ios2p\",\r\n    \"i2o1st\",\r\n    \"ios2u\",\r\n    \"i2o3sz\",\r\n    \"io3t\",\r\n    \"i3ot.\",\r\n    \"iote3l\",\r\n    \"iot4r\",\r\n    \"i3ots\",\r\n    \"i2ou\",\r\n    \"i2ov\",\r\n    \"i3ox\",\r\n    \"i2oz\",\r\n    \"i3oz.\",\r\n    \"i1ö2k\",\r\n    \"i1ön\",\r\n    \"i1ös.\",\r\n    \"i1öst\",\r\n    \"i1pa\",\r\n    \"ip2an\",\r\n    \"i1pe\",\r\n    \"i3ped\",\r\n    \"i3per\",\r\n    \"2ipf2\",\r\n    \"i3pfan\",\r\n    \"ipfe2\",\r\n    \"iph2\",\r\n    \"2i1pi\",\r\n    \"ipi3a\",\r\n    \"ipi3el\",\r\n    \"ipi3en\",\r\n    \"ip4lu\",\r\n    \"ip2pan\",\r\n    \"ip3pe\",\r\n    \"ipp1f\",\r\n    \"ip4pl\",\r\n    \"ip3pu\",\r\n    \"i1pr\",\r\n    \"ip2sa\",\r\n    \"ip2sei\",\r\n    \"ip2sp\",\r\n    \"ips3t\",\r\n    \"ip4sta\",\r\n    \"ip4stü\",\r\n    \"ipt2a\",\r\n    \"ipt2i\",\r\n    \"ipt2u\",\r\n    \"2ipu\",\r\n    \"2i1q\",\r\n    \"i1r4a\",\r\n    \"i3ra.\",\r\n    \"2i3rad\",\r\n    \"i3ras\",\r\n    \"irat4\",\r\n    \"i1rä\",\r\n    \"ir1äh\",\r\n    \"ir2b3l\",\r\n    \"ir1c\",\r\n    \"ir2ch1o\",\r\n    \"ir4e\",\r\n    \"i3ree\",\r\n    \"2irek\",\r\n    \"ire4na\",\r\n    \"i3ré\",\r\n    \"irg4\",\r\n    \"ir2he\",\r\n    \"ir2i\",\r\n    \"2i5rig\",\r\n    \"2irk\",\r\n    \"irke4n\",\r\n    \"ir4kene\",\r\n    \"ir2k3l\",\r\n    \"irk4s3c\",\r\n    \"ir3k2u\",\r\n    \"irli4n\",\r\n    \"ir2m1ag\",\r\n    \"ir2mak\",\r\n    \"irm1au\",\r\n    \"ir2mä\",\r\n    \"ir2m1ei\",\r\n    \"irme4n1\",\r\n    \"ir2m1o2\",\r\n    \"irm4th\",\r\n    \"ir2mum\",\r\n    \"ir4munt\",\r\n    \"2irn\",\r\n    \"ir2n3a\",\r\n    \"ir4nat\",\r\n    \"ir2no\",\r\n    \"i3ro\",\r\n    \"i1rö\",\r\n    \"irpla2\",\r\n    \"irre4l\",\r\n    \"ir2rh\",\r\n    \"ir3sche\",\r\n    \"ir4schl\",\r\n    \"ir4schm\",\r\n    \"ir4sch3r\",\r\n    \"ir4sch3w\",\r\n    \"ir3se3\",\r\n    \"ir3s2h\",\r\n    \"ir2st\",\r\n    \"irt2s3t\",\r\n    \"2iru\",\r\n    \"ir1u2m\",\r\n    \"iru2s1\",\r\n    \"i3r2ü\",\r\n    \"i2sac\",\r\n    \"isa2m3\",\r\n    \"i4samp\",\r\n    \"i4s1amt\",\r\n    \"is2ap\",\r\n    \"isa2r\",\r\n    \"is3are\",\r\n    \"i3sat\",\r\n    \"is3att\",\r\n    \"i2sau\",\r\n    \"is3auf\",\r\n    \"isau2g\",\r\n    \"i2säh\",\r\n    \"i2s1än\",\r\n    \"2isb\",\r\n    \"i2sca\",\r\n    \"i4schar\",\r\n    \"i3s2che\",\r\n    \"i4schef\",\r\n    \"i4sch3e4h\",\r\n    \"isch3ei\",\r\n    \"ische4m\",\r\n    \"i6schemi\",\r\n    \"i6scher6z\",\r\n    \"i4schin\",\r\n    \"i5sching\",\r\n    \"i2sch3l\",\r\n    \"i2schm\",\r\n    \"isch3ma\",\r\n    \"i4schna\",\r\n    \"i4sch3re\",\r\n    \"isch3ru\",\r\n    \"i3schu\",\r\n    \"i4schüb\",\r\n    \"i4schwa\",\r\n    \"i6schwir\",\r\n    \"i4schwo\",\r\n    \"isch3wu\",\r\n    \"i4schwü\",\r\n    \"i2scr\",\r\n    \"2ise\",\r\n    \"ise3a\",\r\n    \"ise1e\",\r\n    \"iseh2a\",\r\n    \"ise3hi\",\r\n    \"is4eind\",\r\n    \"is4eli\",\r\n    \"i6sel6ter\",\r\n    \"ise2n1\",\r\n    \"ise4na\",\r\n    \"is2end\",\r\n    \"i4senho\",\r\n    \"isen3s\",\r\n    \"ise4r3ei\",\r\n    \"is1erg\",\r\n    \"i2serh\",\r\n    \"iser4he\",\r\n    \"i2s1erm\",\r\n    \"i2s1es4s\",\r\n    \"i3s2et\",\r\n    \"i4s3etat\",\r\n    \"i3s2eu\",\r\n    \"2isf\",\r\n    \"4ish\",\r\n    \"2isi\",\r\n    \"isi2a\",\r\n    \"i2s1i2d\",\r\n    \"isi4de\",\r\n    \"isik2\",\r\n    \"i2sim\",\r\n    \"isin3g4\",\r\n    \"isi1s\",\r\n    \"i4ski\",\r\n    \"i4sku\",\r\n    \"is3la\",\r\n    \"3islam\",\r\n    \"2isma\",\r\n    \"2ismi\",\r\n    \"ismu2\",\r\n    \"is1of\",\r\n    \"i3soh\",\r\n    \"1i2sol\",\r\n    \"2is4o2n1\",\r\n    \"isonen4\",\r\n    \"iso6nend\",\r\n    \"isono2\",\r\n    \"i2sop\",\r\n    \"is1ort\",\r\n    \"3isot\",\r\n    \"i2s1ou\",\r\n    \"2isp\",\r\n    \"is1pa\",\r\n    \"i2spar\",\r\n    \"is2pat\",\r\n    \"is1pe\",\r\n    \"is1pic\",\r\n    \"is2por\",\r\n    \"i2spro\",\r\n    \"is3sa\",\r\n    \"is4s1ac\",\r\n    \"is4sau\",\r\n    \"is6s5chen\",\r\n    \"isser4f\",\r\n    \"iss2po\",\r\n    \"is2st\",\r\n    \"is3sta\",\r\n    \"is3sto\",\r\n    \"iss3tr\",\r\n    \"is3strä\",\r\n    \"is3stu\",\r\n    \"is2sum\",\r\n    \"is4tab\",\r\n    \"ist3a2c\",\r\n    \"ist2an\",\r\n    \"is3tang\",\r\n    \"i1stat\",\r\n    \"is3täu\",\r\n    \"ist4e\",\r\n    \"i1stel\",\r\n    \"iste4n\",\r\n    \"istes3\",\r\n    \"i1steu\",\r\n    \"i1stil\",\r\n    \"istin4f\",\r\n    \"is3t6o\",\r\n    \"is4toc\",\r\n    \"is3tör\",\r\n    \"is3tr\",\r\n    \"ist4ra\",\r\n    \"is4tro\",\r\n    \"is4tru\",\r\n    \"i1stü\",\r\n    \"i3suf\",\r\n    \"isu2m\",\r\n    \"isum3p\",\r\n    \"i2sü\",\r\n    \"2isy\",\r\n    \"i1ß\",\r\n    \"ißer2s\",\r\n    \"iß3ersc\",\r\n    \"it1ab.\",\r\n    \"it1abs\",\r\n    \"ital1a\",\r\n    \"it1alt\",\r\n    \"it1am\",\r\n    \"ita3ne\",\r\n    \"it3anr\",\r\n    \"it1app\",\r\n    \"it1a2re\",\r\n    \"it1art\",\r\n    \"i3tat\",\r\n    \"it1au\",\r\n    \"i3tauc\",\r\n    \"i2taut\",\r\n    \"4itä\",\r\n    \"it1änd\",\r\n    \"i2t1äs\",\r\n    \"ität2\",\r\n    \"it1eff\",\r\n    \"i2t1ei\",\r\n    \"it2eic\",\r\n    \"2itel\",\r\n    \"ite4l1a\",\r\n    \"i4telek\",\r\n    \"i2t1emi\",\r\n    \"i2temp\",\r\n    \"ite2n\",\r\n    \"iten3s2\",\r\n    \"i4tents\",\r\n    \"i2tepo\",\r\n    \"i6tereig\",\r\n    \"i4t3er4fo\",\r\n    \"iterin6d\",\r\n    \"iter6klä\",\r\n    \"it2erö\",\r\n    \"i8t7ersche\",\r\n    \"i4t1esk\",\r\n    \"i2t1ex\",\r\n    \"i3text\",\r\n    \"i5thr\",\r\n    \"i2thy\",\r\n    \"i5tic\",\r\n    \"i2t1id\",\r\n    \"i5tig\",\r\n    \"1itii\",\r\n    \"it1in1\",\r\n    \"i3tis\",\r\n    \"i4tiso\",\r\n    \"iti3sp\",\r\n    \"iti2v5a\",\r\n    \"it5le\",\r\n    \"itmen2\",\r\n    \"4ito\",\r\n    \"it1ob\",\r\n    \"i5toc\",\r\n    \"ito3d\",\r\n    \"i2t1of\",\r\n    \"ito2p\",\r\n    \"it2os\",\r\n    \"4itr\",\r\n    \"i2t3rad\",\r\n    \"i3tradi\",\r\n    \"it3raf\",\r\n    \"it3ras\",\r\n    \"it3rau\",\r\n    \"it3räu\",\r\n    \"it3re\",\r\n    \"i4tren\",\r\n    \"it4ret\",\r\n    \"it3rob\",\r\n    \"it3rom\",\r\n    \"i2t3run\",\r\n    \"it3rut\",\r\n    \"2its\",\r\n    \"it2sa\",\r\n    \"its1ag\",\r\n    \"it2s1e\",\r\n    \"it4se2h\",\r\n    \"it4s3e2r1\",\r\n    \"it4sh\",\r\n    \"its1or\",\r\n    \"it6stras\",\r\n    \"it2sur\",\r\n    \"2itt\",\r\n    \"it2tan\",\r\n    \"it2teb\",\r\n    \"itt3hä\",\r\n    \"it2tob\",\r\n    \"it2top\",\r\n    \"it4tri\",\r\n    \"itt3ric\",\r\n    \"itt6schi\",\r\n    \"itt4se4h\",\r\n    \"itt4sei\",\r\n    \"itt4sor\",\r\n    \"itt2sp\",\r\n    \"itt4sti\",\r\n    \"it1uh\",\r\n    \"it1ums\",\r\n    \"it2ung\",\r\n    \"i2tuns\",\r\n    \"ituran4\",\r\n    \"it1urg\",\r\n    \"itut4\",\r\n    \"i3tü\",\r\n    \"4ity1\",\r\n    \"ityl2\",\r\n    \"it2ze2c\",\r\n    \"itz2er\",\r\n    \"itz3erg\",\r\n    \"it6zergr\",\r\n    \"it4z3erl\",\r\n    \"it2zö\",\r\n    \"it2z1w\",\r\n    \"2i3u2\",\r\n    \"i4u3l\",\r\n    \"iu4m3\",\r\n    \"iuma2\",\r\n    \"ium4se\",\r\n    \"ium4ste\",\r\n    \"iun2\",\r\n    \"i4up\",\r\n    \"iu4r\",\r\n    \"ius3t\",\r\n    \"i1ü4\",\r\n    \"2i1v\",\r\n    \"i2v1ad\",\r\n    \"i2v1ak\",\r\n    \"i2v1am\",\r\n    \"iv1an\",\r\n    \"i2v1ä\",\r\n    \"i2veb\",\r\n    \"i2v1ef\",\r\n    \"iv1ei\",\r\n    \"iv1elt\",\r\n    \"ive4n\",\r\n    \"iv1ene\",\r\n    \"i2v1ent\",\r\n    \"i2v1ep\",\r\n    \"ive3re\",\r\n    \"iv1erh\",\r\n    \"iver4kl\",\r\n    \"iv1erl\",\r\n    \"iver3s\",\r\n    \"ive3s\",\r\n    \"i2v1ex\",\r\n    \"i2v1im\",\r\n    \"i2v1ind\",\r\n    \"iv1int\",\r\n    \"i3vol\",\r\n    \"ivo3re\",\r\n    \"i2v1r\",\r\n    \"i2vun\",\r\n    \"i2v1ur\",\r\n    \"i2vü\",\r\n    \"2i1w\",\r\n    \"2i1x\",\r\n    \"i2xa\",\r\n    \"ix2em\",\r\n    \"i3xi\",\r\n    \"ixt2\",\r\n    \"i1y\",\r\n    \"4i1z\",\r\n    \"iz1a\",\r\n    \"iz2ac\",\r\n    \"i2zag\",\r\n    \"i2zan\",\r\n    \"i2zap\",\r\n    \"i3z2as\",\r\n    \"i2zau\",\r\n    \"i2zä\",\r\n    \"i3ze\",\r\n    \"iz2ei\",\r\n    \"izei3c\",\r\n    \"izeits4\",\r\n    \"i2zele\",\r\n    \"ize2n\",\r\n    \"i4zener\",\r\n    \"i4zentz\",\r\n    \"i4z1erl\",\r\n    \"izid3\",\r\n    \"iz1ir\",\r\n    \"izo2f\",\r\n    \"i2zö\",\r\n    \"i2zuna\",\r\n    \"i2z1w\",\r\n    \"i3z2wi\",\r\n    \"í1l\",\r\n    \"j2a\",\r\n    \"jab4\",\r\n    \"ja1c\",\r\n    \"jah4r3ei\",\r\n    \"jahr2s\",\r\n    \"ja3l\",\r\n    \"jal2a\",\r\n    \"ja3ne\",\r\n    \"jani1\",\r\n    \"jani3t4\",\r\n    \"ja5ru\",\r\n    \"jas2o\",\r\n    \"ja1st\",\r\n    \"jat2\",\r\n    \"2j1d4\",\r\n    \"jda3\",\r\n    \"je2a\",\r\n    \"jean2s\",\r\n    \"je2g\",\r\n    \"jek4ta\",\r\n    \"jek4ter\",\r\n    \"jek4tin\",\r\n    \"jekt3o2\",\r\n    \"jektor4\",\r\n    \"jek6t3r\",\r\n    \"je3na\",\r\n    \"je2p\",\r\n    \"je3r\",\r\n    \"jer2e\",\r\n    \"jes3t\",\r\n    \"je2t1a\",\r\n    \"je4t3h\",\r\n    \"je2tin\",\r\n    \"je4tor\",\r\n    \"je2t3r\",\r\n    \"jet3s2\",\r\n    \"jet3t\",\r\n    \"je2t1u2\",\r\n    \"je3v\",\r\n    \"je3wo\",\r\n    \"ji2v\",\r\n    \"2j1m\",\r\n    \"joa3\",\r\n    \"jo2b1\",\r\n    \"job3r\",\r\n    \"jo2da\",\r\n    \"jo2i\",\r\n    \"jol2a\",\r\n    \"jong2\",\r\n    \"jo2p3\",\r\n    \"jo1r2a\",\r\n    \"jor3d2\",\r\n    \"jo1s4\",\r\n    \"jo2sc\",\r\n    \"jost2\",\r\n    \"3jou\",\r\n    \"jou2l\",\r\n    \"2j1t\",\r\n    \"jty1\",\r\n    \"j2u\",\r\n    \"ju2b3l\",\r\n    \"jugen6\",\r\n    \"jugend3\",\r\n    \"ju1i\",\r\n    \"ju2k\",\r\n    \"jul2i\",\r\n    \"jung3s4\",\r\n    \"ju3ni\",\r\n    \"ju3r\",\r\n    \"jur4a\",\r\n    \"jur2o\",\r\n    \"jus3t\",\r\n    \"ju3t2e1\",\r\n    \"2j1v\",\r\n    \"1ka\",\r\n    \"3ka.\",\r\n    \"ka3ar\",\r\n    \"2k1abb\",\r\n    \"kab2bl\",\r\n    \"2kabd\",\r\n    \"2k1a2ben\",\r\n    \"2kabf\",\r\n    \"2kabg\",\r\n    \"2kabh\",\r\n    \"2kabn\",\r\n    \"2k3a2bo\",\r\n    \"2k1abs\",\r\n    \"2k1abt\",\r\n    \"2kabw\",\r\n    \"2kabz\",\r\n    \"ka1c\",\r\n    \"kade2r\",\r\n    \"2k1adm\",\r\n    \"2k3a2dr\",\r\n    \"3kadu\",\r\n    \"2kadv\",\r\n    \"ka1f4l\",\r\n    \"ka1fr\",\r\n    \"kaf3t2\",\r\n    \"kag2\",\r\n    \"kaga3\",\r\n    \"2k1age\",\r\n    \"3kah\",\r\n    \"ka1ho\",\r\n    \"ka1in\",\r\n    \"kaken2\",\r\n    \"ka1kl\",\r\n    \"2k1akt.\",\r\n    \"2kala.\",\r\n    \"kala3b\",\r\n    \"ka2l1a2d\",\r\n    \"ka2lan\",\r\n    \"kal3d\",\r\n    \"ka4l1eh\",\r\n    \"ka4lens\",\r\n    \"kal3eri\",\r\n    \"3k2alk\",\r\n    \"kal2k1a\",\r\n    \"kal4kan\",\r\n    \"kal2k3l\",\r\n    \"kall2i\",\r\n    \"2k1allt\",\r\n    \"ka2lop\",\r\n    \"ka2l1os\",\r\n    \"kal4tex\",\r\n    \"kal4th\",\r\n    \"ka2lu\",\r\n    \"k2amt\",\r\n    \"kan4al\",\r\n    \"ka4n1a2s\",\r\n    \"ka2nau\",\r\n    \"2kanb\",\r\n    \"kan3d2\",\r\n    \"2kanda\",\r\n    \"2kandä\",\r\n    \"kan2e\",\r\n    \"2kanf\",\r\n    \"2kanim\",\r\n    \"kank4\",\r\n    \"2kanl\",\r\n    \"2kanom\",\r\n    \"2k1anor\",\r\n    \"2k1ans\",\r\n    \"k2ans.\",\r\n    \"kan4tar\",\r\n    \"6k5antenn\",\r\n    \"2k1anth\",\r\n    \"ka3nu\",\r\n    \"kan2um\",\r\n    \"2kanw\",\r\n    \"2k1anzu\",\r\n    \"2kanzü\",\r\n    \"ka2o1\",\r\n    \"3kape\",\r\n    \"ka3po\",\r\n    \"3kara\",\r\n    \"2karbe\",\r\n    \"2karc\",\r\n    \"k2ard\",\r\n    \"kar3d2a\",\r\n    \"k1area\",\r\n    \"k2arg\",\r\n    \"ka3r2i\",\r\n    \"kari3es\",\r\n    \"k2ark\",\r\n    \"2k1arm\",\r\n    \"kar2pf\",\r\n    \"k2ars\",\r\n    \"k2ar3ta\",\r\n    \"k1arti\",\r\n    \"4kartik\",\r\n    \"karu2\",\r\n    \"k2arw\",\r\n    \"3k2asc\",\r\n    \"kas2e\",\r\n    \"kase1i\",\r\n    \"kasi1\",\r\n    \"kas2o\",\r\n    \"ka4sp\",\r\n    \"ka2s3t\",\r\n    \"2k1ast.\",\r\n    \"ka4ste\",\r\n    \"kas6tras\",\r\n    \"3kasu\",\r\n    \"ka3sz\",\r\n    \"ka2tan\",\r\n    \"3kateg\",\r\n    \"k3atel\",\r\n    \"ka3t2h\",\r\n    \"ka4t3r\",\r\n    \"2katt4\",\r\n    \"kau4fer\",\r\n    \"kau2f1o\",\r\n    \"kauf6s5ag\",\r\n    \"kauf4sp\",\r\n    \"kaufs7tem\",\r\n    \"kauf6sti\",\r\n    \"k2aus.\",\r\n    \"2k1auss\",\r\n    \"kau2st\",\r\n    \"2kausw\",\r\n    \"kau3t2\",\r\n    \"2kauto\",\r\n    \"ka3ve\",\r\n    \"2kaz\",\r\n    \"1kä\",\r\n    \"käl3\",\r\n    \"k1ämi\",\r\n    \"2k1änd\",\r\n    \"kär2\",\r\n    \"2k1ärg\",\r\n    \"kä2s1c\",\r\n    \"käse3\",\r\n    \"4k3b4\",\r\n    \"kbo4n\",\r\n    \"kbu2s\",\r\n    \"kby4\",\r\n    \"2k3c\",\r\n    \"2k3d4\",\r\n    \"ke2ben\",\r\n    \"2k1e1c\",\r\n    \"ke2di\",\r\n    \"2k1eff\",\r\n    \"kefi2\",\r\n    \"kege2\",\r\n    \"ke2gl\",\r\n    \"ke2he.\",\r\n    \"ke2hen\",\r\n    \"kehrer4\",\r\n    \"kehr2s\",\r\n    \"kehr4s3o\",\r\n    \"2k1eic\",\r\n    \"2k1eig\",\r\n    \"kei2li\",\r\n    \"ke2im\",\r\n    \"2k1ein\",\r\n    \"kein4du\",\r\n    \"kein4e\",\r\n    \"k1ei1s\",\r\n    \"2keise\",\r\n    \"keit2\",\r\n    \"keits1\",\r\n    \"ke2l1a\",\r\n    \"ke3l2ag\",\r\n    \"ke4l3am\",\r\n    \"ke2lä\",\r\n    \"kelb4\",\r\n    \"keld4\",\r\n    \"kel3eis\",\r\n    \"2ke2lek\",\r\n    \"ke2l1en\",\r\n    \"ke2l1er\",\r\n    \"kel7l4e\",\r\n    \"kell2i\",\r\n    \"ke2l1o2\",\r\n    \"ke2lö\",\r\n    \"kel3sk\",\r\n    \"kel7s8tern\",\r\n    \"k4elt\",\r\n    \"kelt4e\",\r\n    \"2k1e2mi\",\r\n    \"2k1emp\",\r\n    \"k2en.\",\r\n    \"ken1a\",\r\n    \"ken3au\",\r\n    \"ke2nä\",\r\n    \"kend4\",\r\n    \"ken3dr\",\r\n    \"ke2n1e2b\",\r\n    \"kenen1\",\r\n    \"ke4nene\",\r\n    \"ke4nens\",\r\n    \"kener4n\",\r\n    \"kene4t\",\r\n    \"4ken4gag\",\r\n    \"k5en6gel.\",\r\n    \"ke2nim\",\r\n    \"ken3in\",\r\n    \"4kenlad\",\r\n    \"4kenläd\",\r\n    \"kenn2a\",\r\n    \"kenn2e\",\r\n    \"ke2no\",\r\n    \"k2ensa\",\r\n    \"4ken4sem\",\r\n    \"ken3si\",\r\n    \"ken3s2k\",\r\n    \"ken5s6tei\",\r\n    \"ken3sz\",\r\n    \"k3en4te.\",\r\n    \"ken6ten.\",\r\n    \"2kentf\",\r\n    \"2kentg\",\r\n    \"ken3th\",\r\n    \"2kentl\",\r\n    \"2k1ents\",\r\n    \"2kentw\",\r\n    \"2kentz\",\r\n    \"ke3ny\",\r\n    \"k2en3z2\",\r\n    \"2ke1o2\",\r\n    \"2kep\",\r\n    \"ke2pl\",\r\n    \"k2er.\",\r\n    \"ke1ra\",\r\n    \"ke2ran\",\r\n    \"ke2rau\",\r\n    \"ke2r1ä\",\r\n    \"ker4ble\",\r\n    \"k2erc\",\r\n    \"2kerd\",\r\n    \"ke2r1e2b\",\r\n    \"ke2rec\",\r\n    \"ke3reig\",\r\n    \"ker3ein\",\r\n    \"4kerfah\",\r\n    \"k4erfam\",\r\n    \"ker2fo\",\r\n    \"k3ergeb\",\r\n    \"2kergu\",\r\n    \"ke6rin6nu\",\r\n    \"kerin6st\",\r\n    \"kerin4t\",\r\n    \"k3erken\",\r\n    \"k2erko\",\r\n    \"k3erlau\",\r\n    \"k3er4leb\",\r\n    \"k6erlebe\",\r\n    \"ker2na\",\r\n    \"ker4nei\",\r\n    \"4k3er4neu\",\r\n    \"kern5eur\",\r\n    \"k1ero\",\r\n    \"k2e1rod\",\r\n    \"2keros\",\r\n    \"ker4reg\",\r\n    \"k2ers.\",\r\n    \"2kersa\",\r\n    \"kert2\",\r\n    \"ker6werb\",\r\n    \"kerz2\",\r\n    \"k1erz.\",\r\n    \"ker4zeu\",\r\n    \"2k1er2zi\",\r\n    \"k2es.\",\r\n    \"ke2sa\",\r\n    \"k2esc\",\r\n    \"k1ese\",\r\n    \"ke2sel\",\r\n    \"kes2sa\",\r\n    \"ke4t1a\",\r\n    \"ket2ag\",\r\n    \"kete4\",\r\n    \"ke4t1eb\",\r\n    \"ke4tel\",\r\n    \"2k1e2th\",\r\n    \"ket3ha\",\r\n    \"ke2tu\",\r\n    \"keu6schl\",\r\n    \"2k1e2va\",\r\n    \"2k1e2x\",\r\n    \"4k3f4\",\r\n    \"2k3g2\",\r\n    \"kga2s1\",\r\n    \"kge3s\",\r\n    \"2k1h4\",\r\n    \"k3he\",\r\n    \"kho3m\",\r\n    \"k3hu\",\r\n    \"ki1a\",\r\n    \"ki2ad\",\r\n    \"ki2ag\",\r\n    \"ki3ak\",\r\n    \"ki3a2r\",\r\n    \"ki1c\",\r\n    \"ki3d4r\",\r\n    \"k2ids\",\r\n    \"2kidy\",\r\n    \"ki2el\",\r\n    \"kie4lei\",\r\n    \"kiel3o\",\r\n    \"2kiern\",\r\n    \"kier2s\",\r\n    \"kier4st\",\r\n    \"kie4z\",\r\n    \"ki1f4l\",\r\n    \"ki1f4r\",\r\n    \"ki3k4\",\r\n    \"2ki3l2a\",\r\n    \"2kilä\",\r\n    \"2kim\",\r\n    \"3kin.\",\r\n    \"ki2nä\",\r\n    \"4kindex\",\r\n    \"2k1indi\",\r\n    \"2k1indu\",\r\n    \"2k1inf\",\r\n    \"k2ing\",\r\n    \"kin2ga\",\r\n    \"king3s\",\r\n    \"2kinh\",\r\n    \"k2ini3\",\r\n    \"kinik2\",\r\n    \"k2inn\",\r\n    \"ki3n4o3\",\r\n    \"kinos2\",\r\n    \"kin3s\",\r\n    \"2k1inse\",\r\n    \"k1inst\",\r\n    \"2k1int\",\r\n    \"ki3or\",\r\n    \"kio4s\",\r\n    \"3kir\",\r\n    \"2k1i2so\",\r\n    \"kis2p\",\r\n    \"kis3s\",\r\n    \"kist2\",\r\n    \"kis4to\",\r\n    \"kiv2\",\r\n    \"kive4\",\r\n    \"2kiz\",\r\n    \"2k3j\",\r\n    \"2k1k4\",\r\n    \"kkab4\",\r\n    \"kl4\",\r\n    \"4kl.\",\r\n    \"4kla.\",\r\n    \"2k1lac\",\r\n    \"klan2\",\r\n    \"2kland\",\r\n    \"klan3du\",\r\n    \"k4lar\",\r\n    \"k1last\",\r\n    \"k1lauf\",\r\n    \"k3laug\",\r\n    \"2kläd\",\r\n    \"k2lär\",\r\n    \"k2le\",\r\n    \"4k3le.\",\r\n    \"kle2br\",\r\n    \"k3leg\",\r\n    \"2kleh\",\r\n    \"klei2e\",\r\n    \"k3leit\",\r\n    \"k3lem.\",\r\n    \"kle2o\",\r\n    \"2k3ler\",\r\n    \"kle2ra\",\r\n    \"2k3leu\",\r\n    \"kle3us\",\r\n    \"2klic\",\r\n    \"k2lien\",\r\n    \"k2lif\",\r\n    \"2klig\",\r\n    \"3k2lim\",\r\n    \"k2lin\",\r\n    \"k3lin.\",\r\n    \"3k4lina\",\r\n    \"k4link\",\r\n    \"k2lip\",\r\n    \"k2lir\",\r\n    \"k2lisc\",\r\n    \"2klist\",\r\n    \"klit2s\",\r\n    \"2k3liz\",\r\n    \"2k3loc\",\r\n    \"2klok\",\r\n    \"3k4lop\",\r\n    \"k3lor\",\r\n    \"klost6\",\r\n    \"2klöc\",\r\n    \"2klöf\",\r\n    \"k2löst\",\r\n    \"k4löt\",\r\n    \"k1lu\",\r\n    \"klu4b\",\r\n    \"k2lud\",\r\n    \"k2lug\",\r\n    \"k2lum\",\r\n    \"klung4\",\r\n    \"2klux\",\r\n    \"2k1lüc\",\r\n    \"2kly\",\r\n    \"2k1m\",\r\n    \"4kma\",\r\n    \"kma2la\",\r\n    \"k2n2\",\r\n    \"k4nac\",\r\n    \"2k5nach\",\r\n    \"2k3nad\",\r\n    \"2knah\",\r\n    \"2k3nam\",\r\n    \"2k3näp\",\r\n    \"k3ne\",\r\n    \"k4nec\",\r\n    \"kne1e\",\r\n    \"2knes\",\r\n    \"2knetz\",\r\n    \"2k5neu\",\r\n    \"4kney\",\r\n    \"2k3niv\",\r\n    \"kno2b3l\",\r\n    \"k4nol\",\r\n    \"2knorm\",\r\n    \"2knov\",\r\n    \"2k3num\",\r\n    \"1ko\",\r\n    \"ko5ad\",\r\n    \"ko2al\",\r\n    \"kobal2\",\r\n    \"2kobj\",\r\n    \"kob4s\",\r\n    \"kof3f2\",\r\n    \"koffe3i\",\r\n    \"kohl2e\",\r\n    \"kohle3i\",\r\n    \"koh3lu\",\r\n    \"koka3\",\r\n    \"ko3l2a\",\r\n    \"ko3le\",\r\n    \"kol2k3\",\r\n    \"3kom\",\r\n    \"komer3\",\r\n    \"4komn\",\r\n    \"ko4mu\",\r\n    \"k2on\",\r\n    \"kone2\",\r\n    \"ko2nem\",\r\n    \"kon3s4\",\r\n    \"kont6e\",\r\n    \"ko2nu\",\r\n    \"ko3on\",\r\n    \"2kop.\",\r\n    \"ko1pe\",\r\n    \"2koper\",\r\n    \"kopfa2\",\r\n    \"kop4fen\",\r\n    \"kop6f5err\",\r\n    \"kop3s\",\r\n    \"ko3pte\",\r\n    \"ko3r2a\",\r\n    \"kor2ba\",\r\n    \"kor2bl\",\r\n    \"kor2br\",\r\n    \"2k1orc\",\r\n    \"korder4\",\r\n    \"kor6derg\",\r\n    \"ko2rel\",\r\n    \"2k1org\",\r\n    \"kor2k1a\",\r\n    \"kor3m\",\r\n    \"kor4nac\",\r\n    \"kor2n3ä\",\r\n    \"kor4no2\",\r\n    \"2korpi\",\r\n    \"k2os\",\r\n    \"k4os.\",\r\n    \"ko4sk\",\r\n    \"ko2sp\",\r\n    \"3k4ost\",\r\n    \"ko2stü\",\r\n    \"ko4ter\",\r\n    \"ko3ti\",\r\n    \"kot4r\",\r\n    \"kot3s2\",\r\n    \"kot4tak\",\r\n    \"k1ou\",\r\n    \"ko3un\",\r\n    \"3kow\",\r\n    \"ko2we\",\r\n    \"2k1ox\",\r\n    \"1kö\",\r\n    \"köde2\",\r\n    \"k2öf\",\r\n    \"k1öl\",\r\n    \"2k1p2\",\r\n    \"2k3q\",\r\n    \"k2r2\",\r\n    \"2k3rad\",\r\n    \"2k3rah\",\r\n    \"k4ral\",\r\n    \"k3rats\",\r\n    \"2kraum\",\r\n    \"k4raw\",\r\n    \"k4raz\",\r\n    \"k4räc\",\r\n    \"2kräd\",\r\n    \"k4rän\",\r\n    \"2k3räum\",\r\n    \"2k5re.\",\r\n    \"2k3reak\",\r\n    \"2k3real\",\r\n    \"k4reb\",\r\n    \"2k3rec\",\r\n    \"2kred.\",\r\n    \"2k3rede\",\r\n    \"2kredn\",\r\n    \"2kredu\",\r\n    \"2k3ref\",\r\n    \"2kreg\",\r\n    \"2k3reic\",\r\n    \"kre1i2e4\",\r\n    \"kreier4\",\r\n    \"k3reif\",\r\n    \"2k3reih\",\r\n    \"2kreim\",\r\n    \"krei6sei\",\r\n    \"krei4st\",\r\n    \"kreli1\",\r\n    \"k3ren\",\r\n    \"2kresu\",\r\n    \"2k3rh\",\r\n    \"2krib\",\r\n    \"2k3ric\",\r\n    \"2k3ries\",\r\n    \"2krip\",\r\n    \"k3risi\",\r\n    \"krob4\",\r\n    \"k4roch\",\r\n    \"4k3roh\",\r\n    \"k4rok\",\r\n    \"k4ron\",\r\n    \"k4rop\",\r\n    \"2krot\",\r\n    \"3kroth\",\r\n    \"k3rou\",\r\n    \"2kröh\",\r\n    \"2kruf\",\r\n    \"2k3run\",\r\n    \"4k1s\",\r\n    \"ks3a2b\",\r\n    \"ksa2k\",\r\n    \"k4s1amt\",\r\n    \"k2san\",\r\n    \"ks3a2r\",\r\n    \"ksa2s\",\r\n    \"k2sau\",\r\n    \"ksau2f\",\r\n    \"k2sav\",\r\n    \"k2säh\",\r\n    \"k3s2c\",\r\n    \"ksch4\",\r\n    \"k2s1e2b\",\r\n    \"k2s1ec\",\r\n    \"k3s2ed\",\r\n    \"ks1ei\",\r\n    \"ks2eid\",\r\n    \"ks2eif\",\r\n    \"k4seind\",\r\n    \"kse2le\",\r\n    \"k2s1eng\",\r\n    \"k2s1ent\",\r\n    \"ks1er\",\r\n    \"ks2ere\",\r\n    \"k2serf\",\r\n    \"k2serg\",\r\n    \"k2serk\",\r\n    \"k2serl\",\r\n    \"k2sers\",\r\n    \"k2serw\",\r\n    \"k2s1e2v\",\r\n    \"k2sex\",\r\n    \"ks3ha\",\r\n    \"k4s1i2d\",\r\n    \"ks2im\",\r\n    \"k2s1in\",\r\n    \"k2s1is\",\r\n    \"k3s2ke\",\r\n    \"ks3kl\",\r\n    \"ks1o\",\r\n    \"ks4on\",\r\n    \"k2sop\",\r\n    \"k2so2r\",\r\n    \"k2sö\",\r\n    \"ks1pa\",\r\n    \"k2spal\",\r\n    \"k3s2pat\",\r\n    \"k2spä\",\r\n    \"k3spe\",\r\n    \"ks2pel\",\r\n    \"ks2pen\",\r\n    \"k2sph\",\r\n    \"ks2por\",\r\n    \"ks2pul\",\r\n    \"ks3s4\",\r\n    \"kst2\",\r\n    \"k2stal\",\r\n    \"k4s3tanz\",\r\n    \"k3stat4\",\r\n    \"k3stäl\",\r\n    \"ks4tel\",\r\n    \"ks2tep\",\r\n    \"k4stier\",\r\n    \"k2stit\",\r\n    \"ks4tol\",\r\n    \"k2stor\",\r\n    \"k4strop\",\r\n    \"k2stuc\",\r\n    \"k2stum\",\r\n    \"k2stur\",\r\n    \"k2stüt\",\r\n    \"k2s1u\",\r\n    \"k3sul\",\r\n    \"ks2zen\",\r\n    \"4k1t\",\r\n    \"kt1abr\",\r\n    \"kt1abs\",\r\n    \"k2t1ad\",\r\n    \"kt1akt\",\r\n    \"k3tal\",\r\n    \"kt1am\",\r\n    \"kt1an\",\r\n    \"kt2and\",\r\n    \"k2t1a2r\",\r\n    \"kta4re\",\r\n    \"kta3ri\",\r\n    \"k2t1au\",\r\n    \"kt3aug\",\r\n    \"ktä3s\",\r\n    \"kt1ein\",\r\n    \"k2tek\",\r\n    \"k4t1ela\",\r\n    \"kte4n1\",\r\n    \"kten3s2\",\r\n    \"k2tent\",\r\n    \"k4tentf\",\r\n    \"k4tents\",\r\n    \"kten3z\",\r\n    \"kte2ra\",\r\n    \"kte3ran\",\r\n    \"kt4ere\",\r\n    \"k4t3erfo\",\r\n    \"kt1erg\",\r\n    \"k2t1erh\",\r\n    \"k2terö\",\r\n    \"kte3ru\",\r\n    \"k2tex\",\r\n    \"k2t1h\",\r\n    \"k2t1i2d\",\r\n    \"kti2me\",\r\n    \"kt3ind\",\r\n    \"kt1ing\",\r\n    \"kt1ini\",\r\n    \"kt3inn\",\r\n    \"k2tint\",\r\n    \"kti2s1e\",\r\n    \"k2tiso\",\r\n    \"kti4ter\",\r\n    \"kto3b\",\r\n    \"k2t1of\",\r\n    \"kto5ren.\",\r\n    \"k3t4ran\",\r\n    \"kt3ras\",\r\n    \"k2t3rau\",\r\n    \"k4tref\",\r\n    \"ktro1s\",\r\n    \"kt3run\",\r\n    \"kt3rü\",\r\n    \"kt3s4a\",\r\n    \"kt3sä\",\r\n    \"kt3se\",\r\n    \"kts2el\",\r\n    \"ktsen1\",\r\n    \"kt3si\",\r\n    \"kts1o\",\r\n    \"kt2sor\",\r\n    \"kt3s2z\",\r\n    \"ktt2\",\r\n    \"k3tub\",\r\n    \"kt1ums\",\r\n    \"k2tuns\",\r\n    \"k3tü\",\r\n    \"kt3z2\",\r\n    \"ku2al\",\r\n    \"ku1c\",\r\n    \"kud4r\",\r\n    \"3kug\",\r\n    \"ku2h\",\r\n    \"2k1uhr\",\r\n    \"ku3la\",\r\n    \"ku3l2e\",\r\n    \"ku3l2i\",\r\n    \"4kulp\",\r\n    \"kul4to\",\r\n    \"kul2tr\",\r\n    \"k2um.\",\r\n    \"k2um4e\",\r\n    \"2kumg\",\r\n    \"2kuml\",\r\n    \"kum2sa\",\r\n    \"kum2sp\",\r\n    \"k2u3n2a\",\r\n    \"kun3da\",\r\n    \"kund2e\",\r\n    \"kunden3\",\r\n    \"kung4\",\r\n    \"kun4s4\",\r\n    \"kunst3\",\r\n    \"2kunt\",\r\n    \"2kunw\",\r\n    \"4k1up.\",\r\n    \"kur2bl\",\r\n    \"ku2rei\",\r\n    \"kuri2e\",\r\n    \"kuri4er\",\r\n    \"2k1urk\",\r\n    \"ku2ro\",\r\n    \"kurs1c\",\r\n    \"kur2sp\",\r\n    \"kur2st\",\r\n    \"2k1urt4\",\r\n    \"kur3tsc\",\r\n    \"kus3a2r\",\r\n    \"ku4schl\",\r\n    \"ku2sp\",\r\n    \"2ku2s3t2\",\r\n    \"ku2su\",\r\n    \"2kut.\",\r\n    \"kut2a\",\r\n    \"kuto3\",\r\n    \"1kü\",\r\n    \"kü1c\",\r\n    \"3küne\",\r\n    \"3kür\",\r\n    \"kür4s\",\r\n    \"2k3v\",\r\n    \"2k1w\",\r\n    \"k3wa\",\r\n    \"2k3z2\",\r\n    \"kze3l\",\r\n    \"3la.\",\r\n    \"la3ar\",\r\n    \"l1ab\",\r\n    \"3l2ab.\",\r\n    \"lab2a\",\r\n    \"la2bad\",\r\n    \"l2abä\",\r\n    \"2labb\",\r\n    \"lab2br\",\r\n    \"2labd\",\r\n    \"lab2e\",\r\n    \"4la2ben\",\r\n    \"4labf\",\r\n    \"2labg\",\r\n    \"2labh\",\r\n    \"3labi\",\r\n    \"l3a2bit\",\r\n    \"2la2b3l\",\r\n    \"2labn\",\r\n    \"3lab2o\",\r\n    \"4labo.\",\r\n    \"la3b4ra\",\r\n    \"lab4res\",\r\n    \"la2bri\",\r\n    \"2labs\",\r\n    \"la2bus\",\r\n    \"2labw\",\r\n    \"2labz\",\r\n    \"la1ce\",\r\n    \"la2ce.\",\r\n    \"l4a3che\",\r\n    \"lachter8f\",\r\n    \"lacks2\",\r\n    \"1lad\",\r\n    \"2l1ad2a\",\r\n    \"2ladd\",\r\n    \"3laden\",\r\n    \"la3d2i\",\r\n    \"2ladj\",\r\n    \"2l1adl\",\r\n    \"2ladm\",\r\n    \"2l1a2dr\",\r\n    \"3l2adu\",\r\n    \"2laf\",\r\n    \"la2fa\",\r\n    \"la2f1ei\",\r\n    \"la2f1er\",\r\n    \"laf1r\",\r\n    \"laf3s\",\r\n    \"laf3t4\",\r\n    \"la2fu\",\r\n    \"la2g1a\",\r\n    \"lag3d\",\r\n    \"l2ager\",\r\n    \"lagerin5\",\r\n    \"4lagg\",\r\n    \"la2gio\",\r\n    \"lag3l\",\r\n    \"la4g3n\",\r\n    \"lago4\",\r\n    \"la2gob\",\r\n    \"lag3str\",\r\n    \"2la3ho\",\r\n    \"3lai\",\r\n    \"lake2\",\r\n    \"la2kin\",\r\n    \"l2akk\",\r\n    \"la1k4l\",\r\n    \"la2kro\",\r\n    \"lak3t2\",\r\n    \"2l1al\",\r\n    \"la2la\",\r\n    \"3lala.\",\r\n    \"3lali\",\r\n    \"4lalt\",\r\n    \"lami3t\",\r\n    \"lam2m1a\",\r\n    \"1lammf\",\r\n    \"la2mor\",\r\n    \"l2amp\",\r\n    \"2l1amt\",\r\n    \"lamt4s\",\r\n    \"la4mun\",\r\n    \"la2na\",\r\n    \"la3nan\",\r\n    \"la4n4at\",\r\n    \"la4nau\",\r\n    \"2la2nä\",\r\n    \"3l2and\",\r\n    \"l4and.\",\r\n    \"lan2da\",\r\n    \"lan4dam\",\r\n    \"land3au\",\r\n    \"l4ande\",\r\n    \"lan6derh\",\r\n    \"lan6d5erw\",\r\n    \"lan6d5erz\",\r\n    \"lan6d5inn\",\r\n    \"l4an2dr\",\r\n    \"lan3dri\",\r\n    \"land3rü\",\r\n    \"lan3erd\",\r\n    \"laner4f\",\r\n    \"2lanf\",\r\n    \"lan4gan\",\r\n    \"lan6g5esc\",\r\n    \"lang3s4\",\r\n    \"2lanha\",\r\n    \"l2anhe\",\r\n    \"3lan2i\",\r\n    \"4lanl\",\r\n    \"2l1ann\",\r\n    \"l1ano\",\r\n    \"la2nof\",\r\n    \"2l1anp\",\r\n    \"2lans2\",\r\n    \"l1ansi\",\r\n    \"2lantr\",\r\n    \"2lantw\",\r\n    \"2lanw\",\r\n    \"lan2z1w\",\r\n    \"3lao\",\r\n    \"2l1apf\",\r\n    \"la2ph\",\r\n    \"2l1a2po\",\r\n    \"lap2pl\",\r\n    \"la2r1an\",\r\n    \"2larc\",\r\n    \"lar1e2b\",\r\n    \"la2r1ei\",\r\n    \"la2rel\",\r\n    \"la4rene\",\r\n    \"larf4\",\r\n    \"lar3g\",\r\n    \"lar3ini\",\r\n    \"4l1a2rom\",\r\n    \"l1art\",\r\n    \"2lart.\",\r\n    \"lart2h\",\r\n    \"l3arti\",\r\n    \"lart4r\",\r\n    \"3laru\",\r\n    \"l2as.\",\r\n    \"la2sa\",\r\n    \"la4sam\",\r\n    \"la4sä\",\r\n    \"lasche4\",\r\n    \"4lasd\",\r\n    \"la3seb\",\r\n    \"la2sei\",\r\n    \"la2s1e2l\",\r\n    \"2lash\",\r\n    \"la2sin\",\r\n    \"la2sis\",\r\n    \"la2so\",\r\n    \"2la4sp\",\r\n    \"3lasser\",\r\n    \"l2a2st\",\r\n    \"las4t3an\",\r\n    \"la4ste\",\r\n    \"last3ri\",\r\n    \"la4stu\",\r\n    \"la3t2e\",\r\n    \"2l3a4tel\",\r\n    \"la5t2i\",\r\n    \"2l3atl\",\r\n    \"2latm\",\r\n    \"lat2o\",\r\n    \"la2tö\",\r\n    \"la2t3ra\",\r\n    \"lat4ri\",\r\n    \"lat2s\",\r\n    \"lat3st\",\r\n    \"2lat2ta\",\r\n    \"lat4tan\",\r\n    \"lat4tex\",\r\n    \"lat4t3in\",\r\n    \"lat2t3r\",\r\n    \"latzer4\",\r\n    \"1laub.\",\r\n    \"lauben6s5\",\r\n    \"lau2b3r\",\r\n    \"laub4se\",\r\n    \"lau4fin\",\r\n    \"2laufn\",\r\n    \"lau2fo\",\r\n    \"lau4fri\",\r\n    \"1laug\",\r\n    \"lau3gl\",\r\n    \"2laun.\",\r\n    \"la4us\",\r\n    \"3l2aus.\",\r\n    \"2l1ausb\",\r\n    \"lau6scha\",\r\n    \"2lausd\",\r\n    \"2l1ausf\",\r\n    \"2lausg\",\r\n    \"2lausl\",\r\n    \"2lausr\",\r\n    \"2l1auss\",\r\n    \"lau2st\",\r\n    \"2lausw\",\r\n    \"2lausz\",\r\n    \"2lauto\",\r\n    \"lau2tr\",\r\n    \"la3va\",\r\n    \"lave4n\",\r\n    \"1law\",\r\n    \"lawa4\",\r\n    \"1l2ax\",\r\n    \"la4xel\",\r\n    \"l2ay\",\r\n    \"lay1s\",\r\n    \"lä1c\",\r\n    \"3läd\",\r\n    \"4läf\",\r\n    \"2l1ähn\",\r\n    \"2lämt\",\r\n    \"1länd\",\r\n    \"2l1äpf\",\r\n    \"2läq\",\r\n    \"lär2ma\",\r\n    \"l1ärme\",\r\n    \"2lärz\",\r\n    \"lä2s1c\",\r\n    \"2lät\",\r\n    \"2läub\",\r\n    \"2läuc\",\r\n    \"2läue\",\r\n    \"1läuf\",\r\n    \"2läug\",\r\n    \"2läx\",\r\n    \"1là\",\r\n    \"2l1b\",\r\n    \"l3bac\",\r\n    \"l2bant\",\r\n    \"lb3a2ri\",\r\n    \"lbau1c\",\r\n    \"lb1ärm\",\r\n    \"lbb4\",\r\n    \"lbby4\",\r\n    \"lb2ei\",\r\n    \"l4b3eink\",\r\n    \"l4b3eise\",\r\n    \"lbe4ral\",\r\n    \"lberin5\",\r\n    \"lbe7s\",\r\n    \"l4b1e4ta\",\r\n    \"l2b1id\",\r\n    \"l2b1ins\",\r\n    \"lb4lad\",\r\n    \"l3b2lat\",\r\n    \"l3blä\",\r\n    \"lb3le\",\r\n    \"l2bled\",\r\n    \"l2blic\",\r\n    \"l3blo\",\r\n    \"l3b2lö\",\r\n    \"l3b2lu\",\r\n    \"l2b1o2ra\",\r\n    \"lb3rea\",\r\n    \"lb2s\",\r\n    \"lb3sa\",\r\n    \"lb3se\",\r\n    \"lb3si\",\r\n    \"lb3sp\",\r\n    \"lbs4t\",\r\n    \"lbst3ac\",\r\n    \"lbst3ei\",\r\n    \"lbst1u\",\r\n    \"l2b1uf\",\r\n    \"l3bum\",\r\n    \"lbu4n\",\r\n    \"lbzei2\",\r\n    \"2l1c\",\r\n    \"l3ca\",\r\n    \"l3che\",\r\n    \"l4chei\",\r\n    \"l4chent\",\r\n    \"l3chi\",\r\n    \"lch3le\",\r\n    \"lch3li\",\r\n    \"l3chlo\",\r\n    \"lch3n\",\r\n    \"lch3r\",\r\n    \"lch3s2\",\r\n    \"lch3ü\",\r\n    \"lch1w\",\r\n    \"l2ck\",\r\n    \"l3cl\",\r\n    \"l3co\",\r\n    \"4l1d\",\r\n    \"ld3a2b1\",\r\n    \"ld2ac\",\r\n    \"ld3a2ck\",\r\n    \"l2daf\",\r\n    \"lda2g\",\r\n    \"l2d1ah\",\r\n    \"lda2i\",\r\n    \"l2d1ak\",\r\n    \"l2d1al\",\r\n    \"l2d3a4n\",\r\n    \"ld1arm\",\r\n    \"ld1ass\",\r\n    \"l2d1au\",\r\n    \"ld3aus\",\r\n    \"l3däm\",\r\n    \"ld1är\",\r\n    \"ld1äs\",\r\n    \"ld1ät\",\r\n    \"l3de.\",\r\n    \"lde4ben\",\r\n    \"l2dei\",\r\n    \"ldein7\",\r\n    \"l2d1elf\",\r\n    \"l2d1e2mi\",\r\n    \"l2d1ems\",\r\n    \"lde4na\",\r\n    \"lden5erg\",\r\n    \"l4dentl\",\r\n    \"l3der.\",\r\n    \"l4d3er4fa\",\r\n    \"l6der6geb\",\r\n    \"ld1erh\",\r\n    \"l4der4he\",\r\n    \"l3d2erl\",\r\n    \"l6d5erlas\",\r\n    \"l3d2ern\",\r\n    \"l2d1er2p\",\r\n    \"lder4tr\",\r\n    \"lde3sa\",\r\n    \"l2d1es2s\",\r\n    \"l2dex\",\r\n    \"l2d1id\",\r\n    \"ld1i4mi\",\r\n    \"l2d3ion\",\r\n    \"ldo2b\",\r\n    \"ld2on\",\r\n    \"l2dop\",\r\n    \"ldo2r\",\r\n    \"l2d1ori\",\r\n    \"ld2os\",\r\n    \"ldos5t\",\r\n    \"ld2ö2\",\r\n    \"ld3r\",\r\n    \"ld4ram\",\r\n    \"l2dran\",\r\n    \"l2dre\",\r\n    \"l3d4ris\",\r\n    \"ld4ru\",\r\n    \"l2drüc\",\r\n    \"ld3sa\",\r\n    \"lds4an\",\r\n    \"ld3ska\",\r\n    \"ld3st\",\r\n    \"ldt4\",\r\n    \"ld3th\",\r\n    \"ldt5s\",\r\n    \"ld3tu\",\r\n    \"l2d1ul\",\r\n    \"l2d1um\",\r\n    \"ldwes4\",\r\n    \"ldy2\",\r\n    \"1le\",\r\n    \"le2ad\",\r\n    \"le3ar\",\r\n    \"le2as\",\r\n    \"3leba\",\r\n    \"leben4s3\",\r\n    \"le2bl\",\r\n    \"3lebr\",\r\n    \"le2b3re\",\r\n    \"lebs2\",\r\n    \"2lec\",\r\n    \"lech1a\",\r\n    \"le2chi\",\r\n    \"lech7t6e\",\r\n    \"le2dr\",\r\n    \"le2er\",\r\n    \"lee4ret\",\r\n    \"le3f2a\",\r\n    \"2l1eff\",\r\n    \"lef4o\",\r\n    \"le2g1ab\",\r\n    \"leg1as\",\r\n    \"le2gä\",\r\n    \"le2gl\",\r\n    \"leg4r\",\r\n    \"legs4\",\r\n    \"3leh\",\r\n    \"4lehe.\",\r\n    \"leh3r2e\",\r\n    \"4lehs\",\r\n    \"4leht\",\r\n    \"lei4ble\",\r\n    \"l2eid\",\r\n    \"lei3ere\",\r\n    \"lei4fan\",\r\n    \"lei4fei\",\r\n    \"leifer6g\",\r\n    \"leif3s\",\r\n    \"2l1eig\",\r\n    \"lei3gl\",\r\n    \"3leih\",\r\n    \"lei4hau\",\r\n    \"lei3l2\",\r\n    \"leim3p\",\r\n    \"3l2ein.\",\r\n    \"l2eind\",\r\n    \"lein4du\",\r\n    \"l4eine\",\r\n    \"lei6nerb\",\r\n    \"le2inf\",\r\n    \"le2ini\",\r\n    \"2leink\",\r\n    \"4l3einsa\",\r\n    \"2leint\",\r\n    \"l2einu\",\r\n    \"le2is\",\r\n    \"leisch5a\",\r\n    \"lei8schei\",\r\n    \"lei6scho\",\r\n    \"lei6sern\",\r\n    \"l1eisf\",\r\n    \"leis6s5er\",\r\n    \"l4eist\",\r\n    \"lei4str\",\r\n    \"lei4ßer\",\r\n    \"l2eit\",\r\n    \"lei2ta\",\r\n    \"lei4to\",\r\n    \"lei5tri\",\r\n    \"leit3s2\",\r\n    \"leits4t\",\r\n    \"3leko\",\r\n    \"2lektr\",\r\n    \"2lekz\",\r\n    \"3l2ela\",\r\n    \"le2le\",\r\n    \"le3lei\",\r\n    \"2lelek\",\r\n    \"4leleme\",\r\n    \"le3len\",\r\n    \"leler2\",\r\n    \"leler4s\",\r\n    \"le3les\",\r\n    \"2lelf.\",\r\n    \"2l1elfe\",\r\n    \"l2eli\",\r\n    \"l2em.\",\r\n    \"le3mal\",\r\n    \"le2mau\",\r\n    \"le2m1ei\",\r\n    \"3lemes\",\r\n    \"3lemet\",\r\n    \"lem1o2\",\r\n    \"le2mor\",\r\n    \"2lemp\",\r\n    \"lem3s\",\r\n    \"le2mu\",\r\n    \"le4mun\",\r\n    \"l4en.\",\r\n    \"len1a\",\r\n    \"len3ab\",\r\n    \"le4na2d\",\r\n    \"le4n3an\",\r\n    \"le4n3a4t\",\r\n    \"le2nä\",\r\n    \"4lendet\",\r\n    \"l1endp\",\r\n    \"4lendun\",\r\n    \"le2n1ed\",\r\n    \"4lenerg\",\r\n    \"le4neur\",\r\n    \"4leneuv\",\r\n    \"len4gag\",\r\n    \"len4kau\",\r\n    \"len4k3lo\",\r\n    \"len4klu\",\r\n    \"l1enni\",\r\n    \"len6sein\",\r\n    \"4len4sem\",\r\n    \"len3ska\",\r\n    \"len3sz\",\r\n    \"2lentg\",\r\n    \"2l1entk\",\r\n    \"4lentla\",\r\n    \"2lentn\",\r\n    \"4l3en4tro\",\r\n    \"4l3entw\",\r\n    \"lent4wä\",\r\n    \"5lentwet\",\r\n    \"2lentz\",\r\n    \"2lenzy\",\r\n    \"leo2f\",\r\n    \"le1o2s\",\r\n    \"2lep\",\r\n    \"3lepf\",\r\n    \"4l1e2pi\",\r\n    \"4lepoc\",\r\n    \"3lepr\",\r\n    \"l2er.\",\r\n    \"l2e1ra\",\r\n    \"le2rag\",\r\n    \"le2r3ap\",\r\n    \"le2ra2s\",\r\n    \"le2rau\",\r\n    \"le2r1ä\",\r\n    \"le2r1e2b\",\r\n    \"ler2e3c\",\r\n    \"l3ereig\",\r\n    \"le4r3ei4m\",\r\n    \"le4r3eis\",\r\n    \"le2rel\",\r\n    \"le4reng\",\r\n    \"le4rerg\",\r\n    \"le4rers\",\r\n    \"le2re4t\",\r\n    \"4l3erfas\",\r\n    \"2l1erfo\",\r\n    \"l2erfr\",\r\n    \"l2erfü\",\r\n    \"l1erg\",\r\n    \"l2erga\",\r\n    \"l4ergef\",\r\n    \"3lergeh\",\r\n    \"6lergen.\",\r\n    \"l4erger\",\r\n    \"l4erges\",\r\n    \"3l4ergew\",\r\n    \"2lergi\",\r\n    \"l2ergl\",\r\n    \"l2ergr\",\r\n    \"4ler4heb\",\r\n    \"4lerhol\",\r\n    \"lerin4s\",\r\n    \"lerk2\",\r\n    \"l2erka\",\r\n    \"2lerke\",\r\n    \"l1erkl\",\r\n    \"4lerklä\",\r\n    \"l4erkle\",\r\n    \"l2erko\",\r\n    \"ler3kr\",\r\n    \"ler3l\",\r\n    \"5l6erlebe\",\r\n    \"3l4erlei\",\r\n    \"2lermä\",\r\n    \"ler4nal\",\r\n    \"ler4nar\",\r\n    \"3l4erne\",\r\n    \"ler4nei\",\r\n    \"2l1erö\",\r\n    \"3l2erra\",\r\n    \"ler4ric\",\r\n    \"l4ers.\",\r\n    \"l1ersa\",\r\n    \"lers2t\",\r\n    \"ler4sto\",\r\n    \"lert2\",\r\n    \"ler4trä\",\r\n    \"le2rup\",\r\n    \"l4erwa\",\r\n    \"ler4wer\",\r\n    \"2ler2wo\",\r\n    \"2l1erz\",\r\n    \"ler2zä\",\r\n    \"l3erzeu\",\r\n    \"ler2zo\",\r\n    \"l4es.\",\r\n    \"les2am\",\r\n    \"les2e\",\r\n    \"lese1i\",\r\n    \"2l1esel\",\r\n    \"le3s4h\",\r\n    \"lesi1\",\r\n    \"le3s2k\",\r\n    \"les4ki\",\r\n    \"le3so\",\r\n    \"le2spo\",\r\n    \"lest6\",\r\n    \"le1sta\",\r\n    \"les2te3\",\r\n    \"lester6i\",\r\n    \"le1sto\",\r\n    \"le1str\",\r\n    \"3lesu\",\r\n    \"4lesw\",\r\n    \"2lesy\",\r\n    \"le2tab\",\r\n    \"2le2tap\",\r\n    \"2le2tat\",\r\n    \"l1e2th\",\r\n    \"le3tha\",\r\n    \"2lethi\",\r\n    \"let2i\",\r\n    \"letsche6\",\r\n    \"let4top\",\r\n    \"lett1r\",\r\n    \"letts2\",\r\n    \"le2u\",\r\n    \"4leue\",\r\n    \"3le3u2f\",\r\n    \"2l1eul\",\r\n    \"le3unt\",\r\n    \"2leuro\",\r\n    \"3leut\",\r\n    \"l1e2vol\",\r\n    \"2lex\",\r\n    \"3lexd\",\r\n    \"3lexik\",\r\n    \"le2xis\",\r\n    \"1lé\",\r\n    \"2l1f\",\r\n    \"l3fah\",\r\n    \"lf4at\",\r\n    \"l2f1ec\",\r\n    \"lfe1e\",\r\n    \"lf3einh\",\r\n    \"l2feis\",\r\n    \"lf2en\",\r\n    \"l4ferei\",\r\n    \"lfe4rel\",\r\n    \"lf1erl\",\r\n    \"l3fi\",\r\n    \"l3f4lä\",\r\n    \"lf3led\",\r\n    \"lf4lö\",\r\n    \"l3f4lu\",\r\n    \"lf3ram\",\r\n    \"lf3res\",\r\n    \"lf4ru\",\r\n    \"lf4rü\",\r\n    \"lf2spe\",\r\n    \"lf2sti\",\r\n    \"lf2su\",\r\n    \"lfun2\",\r\n    \"lfur1\",\r\n    \"2l1g\",\r\n    \"l3gas\",\r\n    \"lga3t\",\r\n    \"lgen2a\",\r\n    \"lgene2\",\r\n    \"lgeräu3\",\r\n    \"l2geti\",\r\n    \"l3g2i\",\r\n    \"lg2lö\",\r\n    \"l3go\",\r\n    \"lg4p\",\r\n    \"l3gra\",\r\n    \"lg3re\",\r\n    \"l3gro\",\r\n    \"lgung4\",\r\n    \"2l3h2\",\r\n    \"4lhe\",\r\n    \"3lhi.\",\r\n    \"4lhu\",\r\n    \"1li\",\r\n    \"li1a\",\r\n    \"lia2b\",\r\n    \"li2ad\",\r\n    \"li4am.\",\r\n    \"lian2g\",\r\n    \"li2ast\",\r\n    \"3lib4\",\r\n    \"libi1\",\r\n    \"li1c\",\r\n    \"lich4ta\",\r\n    \"lich4to\",\r\n    \"4lick\",\r\n    \"li2cka\",\r\n    \"li2cl\",\r\n    \"li3d2a\",\r\n    \"l1ido\",\r\n    \"l2idy\",\r\n    \"3lie.\",\r\n    \"liebe4s3\",\r\n    \"lie2br\",\r\n    \"li1efa\",\r\n    \"3liefer\",\r\n    \"li1efk\",\r\n    \"li3efl\",\r\n    \"lie4n1a2\",\r\n    \"li3ene\",\r\n    \"lien3s\",\r\n    \"lien3t\",\r\n    \"lie4rei\",\r\n    \"lier4sp\",\r\n    \"lie2s1c\",\r\n    \"3lig\",\r\n    \"liga3s\",\r\n    \"li4g3ers\",\r\n    \"li4gl\",\r\n    \"lig4n\",\r\n    \"li3ker\",\r\n    \"lik2o\",\r\n    \"likop4\",\r\n    \"lik2sp\",\r\n    \"lik4ter\",\r\n    \"lik2ti\",\r\n    \"lik4t1o2\",\r\n    \"lik2u\",\r\n    \"li3l\",\r\n    \"lil2a\",\r\n    \"li3m2a1\",\r\n    \"limas4\",\r\n    \"lima3t4\",\r\n    \"2limm\",\r\n    \"3limo\",\r\n    \"2limp\",\r\n    \"lin2a\",\r\n    \"li3nar\",\r\n    \"2lindi\",\r\n    \"2l1indu\",\r\n    \"li2nef\",\r\n    \"li2neh\",\r\n    \"li2nep\",\r\n    \"li2nes\",\r\n    \"2l1inf\",\r\n    \"2l1inh\",\r\n    \"li5nie\",\r\n    \"lin1it\",\r\n    \"2l1inj\",\r\n    \"lin4kan\",\r\n    \"lin4kar\",\r\n    \"link2s\",\r\n    \"li2nol\",\r\n    \"l2insa\",\r\n    \"4linsel\",\r\n    \"2linsp\",\r\n    \"2linst\",\r\n    \"2linsu\",\r\n    \"2linsz\",\r\n    \"2l1int\",\r\n    \"li3n2u\",\r\n    \"2l1inv\",\r\n    \"2linz\",\r\n    \"li2o\",\r\n    \"li4om\",\r\n    \"li3o2st\",\r\n    \"3lipf\",\r\n    \"3lipt\",\r\n    \"3lis.\",\r\n    \"li3s2a\",\r\n    \"li3schm\",\r\n    \"li4schu\",\r\n    \"lis2h\",\r\n    \"li3shi\",\r\n    \"3lisk\",\r\n    \"2l1isl\",\r\n    \"2l1i2so\",\r\n    \"li2sp\",\r\n    \"liss4\",\r\n    \"3list\",\r\n    \"lit4a\",\r\n    \"l1i2tal\",\r\n    \"li3t2ä\",\r\n    \"l2i3t2e\",\r\n    \"3liter\",\r\n    \"li4t3r\",\r\n    \"lit1s2\",\r\n    \"lit3se\",\r\n    \"lit3sz\",\r\n    \"li3tu\",\r\n    \"li6tun\",\r\n    \"li4tur\",\r\n    \"litz4er\",\r\n    \"3liu\",\r\n    \"liv2e\",\r\n    \"li2vea\",\r\n    \"li2ves\",\r\n    \"livi3e\",\r\n    \"li3vr\",\r\n    \"2lixi\",\r\n    \"li4z3ä\",\r\n    \"lizei3\",\r\n    \"2l3j\",\r\n    \"2l1k\",\r\n    \"l3kale\",\r\n    \"lk1alp\",\r\n    \"l3k2an\",\r\n    \"l3kap\",\r\n    \"l3kar.\",\r\n    \"lk1erd\",\r\n    \"lke3r2e\",\r\n    \"lk2l\",\r\n    \"lk3lad\",\r\n    \"l3k4las\",\r\n    \"lk3lic\",\r\n    \"l3k4lu\",\r\n    \"lk2men\",\r\n    \"lk4ne\",\r\n    \"lk5ner\",\r\n    \"lko2f\",\r\n    \"lk1ofe\",\r\n    \"lkor2b1\",\r\n    \"lk3roc\",\r\n    \"lk2s1\",\r\n    \"lk3sän\",\r\n    \"lk3si\",\r\n    \"lk4spe\",\r\n    \"lks3t\",\r\n    \"lkt2\",\r\n    \"lk2ü\",\r\n    \"4l1l\",\r\n    \"l2labk\",\r\n    \"l2labt\",\r\n    \"l3labu\",\r\n    \"l3lage\",\r\n    \"lla3gl\",\r\n    \"l2l1am\",\r\n    \"lla2ma\",\r\n    \"l3lame\",\r\n    \"ll2ami\",\r\n    \"ll2anb\",\r\n    \"lla4ner\",\r\n    \"l4lani\",\r\n    \"l3lans.\",\r\n    \"ll4anwa\",\r\n    \"ll1anz\",\r\n    \"l4l3appl\",\r\n    \"ll1arm\",\r\n    \"l4latm\",\r\n    \"ll3att\",\r\n    \"ll3aufg\",\r\n    \"ll1aus\",\r\n    \"ll1äm\",\r\n    \"l2lär\",\r\n    \"llb4\",\r\n    \"llch4\",\r\n    \"ll3d4\",\r\n    \"ll5ebene\",\r\n    \"l3lec\",\r\n    \"ll1ech\",\r\n    \"lle3er\",\r\n    \"l2l1ef\",\r\n    \"ll1eic\",\r\n    \"ll1eim\",\r\n    \"ll2eis\",\r\n    \"l4leise\",\r\n    \"lle2la\",\r\n    \"lle2m\",\r\n    \"l2l1emi\",\r\n    \"l3len.\",\r\n    \"lle4na\",\r\n    \"llen3dr\",\r\n    \"ll5en6dun\",\r\n    \"l4lentf\",\r\n    \"l4lents\",\r\n    \"l3lep\",\r\n    \"l3ler.\",\r\n    \"lle2ra\",\r\n    \"ll2ere\",\r\n    \"l6ler6eig\",\r\n    \"ller4fo\",\r\n    \"ller6geb\",\r\n    \"l8lergene\",\r\n    \"l4lergo\",\r\n    \"ll3erho\",\r\n    \"l4l3ermi\",\r\n    \"l4l3ernt\",\r\n    \"ll3ertr\",\r\n    \"ll2es\",\r\n    \"lle4th\",\r\n    \"ll1exe\",\r\n    \"llg4\",\r\n    \"lli4gan\",\r\n    \"l2limb\",\r\n    \"l2l1ind\",\r\n    \"l4linf\",\r\n    \"ll1ins\",\r\n    \"ll3k4\",\r\n    \"ll3l2\",\r\n    \"ll5m2\",\r\n    \"ll3n2\",\r\n    \"ll1ob\",\r\n    \"l2lobe\",\r\n    \"l2l1o2f\",\r\n    \"ll3ol\",\r\n    \"l2lope\",\r\n    \"ll1opf\",\r\n    \"ll1or\",\r\n    \"l6lorb\",\r\n    \"llor2g\",\r\n    \"l2lo2ri\",\r\n    \"l2l1ou\",\r\n    \"l3low\",\r\n    \"ll1ox\",\r\n    \"ll2säu\",\r\n    \"ll2s1es\",\r\n    \"ll3ska\",\r\n    \"ll2spr\",\r\n    \"ll3t\",\r\n    \"llt2e\",\r\n    \"llt2i\",\r\n    \"llti2m\",\r\n    \"ll5t4r\",\r\n    \"llts2\",\r\n    \"ll1ur\",\r\n    \"llus5t6\",\r\n    \"l3ly\",\r\n    \"ll3z2\",\r\n    \"2l1m\",\r\n    \"l2m3a2b\",\r\n    \"l2m1ad\",\r\n    \"lm1a2ge\",\r\n    \"lm1aka\",\r\n    \"l2m1a2m\",\r\n    \"l3mana\",\r\n    \"lm1apf\",\r\n    \"lm1art\",\r\n    \"lm3att\",\r\n    \"lm1äst\",\r\n    \"lmbu2\",\r\n    \"lm1c\",\r\n    \"lmd2\",\r\n    \"lm3e4dit\",\r\n    \"l2m1ef\",\r\n    \"l2ment\",\r\n    \"l2m1e2p\",\r\n    \"lmer2\",\r\n    \"l2m1erf\",\r\n    \"l2m1erl\",\r\n    \"l2m1erz\",\r\n    \"l4messa\",\r\n    \"l2m1i2d\",\r\n    \"lm1ind\",\r\n    \"lm1ins\",\r\n    \"l2mof\",\r\n    \"lm1orc\",\r\n    \"lm3p2\",\r\n    \"lmpf4\",\r\n    \"lm3s2k\",\r\n    \"lms2t\",\r\n    \"lm3ste\",\r\n    \"lm3s2z\",\r\n    \"lm3t4\",\r\n    \"l2mum\",\r\n    \"l4munt\",\r\n    \"2ln\",\r\n    \"ln2ab\",\r\n    \"lna2r\",\r\n    \"ln3are\",\r\n    \"lnd2\",\r\n    \"l3n2e\",\r\n    \"lnes2s\",\r\n    \"l2n1in\",\r\n    \"lnus2\",\r\n    \"l1nü\",\r\n    \"l1ny\",\r\n    \"1lo\",\r\n    \"lo4ak\",\r\n    \"3lob.\",\r\n    \"l2oba\",\r\n    \"3lobb\",\r\n    \"lobe2s\",\r\n    \"2lobj\",\r\n    \"l1o2bl\",\r\n    \"l2obr\",\r\n    \"lob4ri\",\r\n    \"lo4chel\",\r\n    \"l1ofe\",\r\n    \"lo2fen\",\r\n    \"lo4gh\",\r\n    \"lo2gl\",\r\n    \"lo2gor\",\r\n    \"lo2gre\",\r\n    \"lo3ha\",\r\n    \"loh2e\",\r\n    \"4l1ohr\",\r\n    \"loi4r\",\r\n    \"3lok\",\r\n    \"4l3okk\",\r\n    \"lo2k3r\",\r\n    \"5loks\",\r\n    \"l4ole\",\r\n    \"2l3o2ly\",\r\n    \"lomä3\",\r\n    \"lo2min\",\r\n    \"lo2ner\",\r\n    \"lo4nin\",\r\n    \"lo2n1o\",\r\n    \"lo2o\",\r\n    \"2lopf\",\r\n    \"lop2p1a\",\r\n    \"2lopt\",\r\n    \"lor3am\",\r\n    \"lor2an\",\r\n    \"lo4rä\",\r\n    \"5lorb\",\r\n    \"2l1orc\",\r\n    \"2l1ord\",\r\n    \"lo3r2en\",\r\n    \"2l1org2\",\r\n    \"lori4di\",\r\n    \"2lort2\",\r\n    \"l2os.\",\r\n    \"lo4sa\",\r\n    \"3lose\",\r\n    \"lo4ske\",\r\n    \"lo2spe\",\r\n    \"lo2spr\",\r\n    \"los3t\",\r\n    \"lo4ste\",\r\n    \"lo2st4r\",\r\n    \"4loß\",\r\n    \"lo2ta\",\r\n    \"lo3tha\",\r\n    \"loti4o\",\r\n    \"2l1ov\",\r\n    \"lo2ve\",\r\n    \"2lox\",\r\n    \"1lö\",\r\n    \"lö2b3\",\r\n    \"2löck\",\r\n    \"2löd\",\r\n    \"lö2f\",\r\n    \"2l3öfe\",\r\n    \"2l1öhr\",\r\n    \"2lök\",\r\n    \"2l1öl3\",\r\n    \"2löp\",\r\n    \"3lösc\",\r\n    \"3lösu\",\r\n    \"4löß\",\r\n    \"4löz\",\r\n    \"2l1p\",\r\n    \"lp2ar\",\r\n    \"lpar2k1\",\r\n    \"l4p1är\",\r\n    \"lp2f\",\r\n    \"lph4\",\r\n    \"l3phä\",\r\n    \"l2phir\",\r\n    \"lp1ho\",\r\n    \"l3phr\",\r\n    \"lpt4\",\r\n    \"l3pu\",\r\n    \"2l1q\",\r\n    \"2l3r2\",\r\n    \"lrau2s\",\r\n    \"lrebs2\",\r\n    \"lro2h\",\r\n    \"lrö2\",\r\n    \"4l1s\",\r\n    \"ls3a2b\",\r\n    \"l2s1a2d\",\r\n    \"ls2al\",\r\n    \"l4s1amb\",\r\n    \"l4samp\",\r\n    \"ls2amt\",\r\n    \"l2san\",\r\n    \"ls3ane\",\r\n    \"l3sare\",\r\n    \"ls3a2ri\",\r\n    \"l3sark\",\r\n    \"lsau2\",\r\n    \"lsau4m\",\r\n    \"lsau4r\",\r\n    \"l3s2äm\",\r\n    \"ls2äug\",\r\n    \"ls1äus\",\r\n    \"ls2c\",\r\n    \"l4schin\",\r\n    \"l4schmü\",\r\n    \"lschs2\",\r\n    \"l2s1e2b\",\r\n    \"ls2ele\",\r\n    \"ls1eli\",\r\n    \"l2sent\",\r\n    \"ls1er\",\r\n    \"l2serf\",\r\n    \"l2serg\",\r\n    \"l2serh\",\r\n    \"l2serk\",\r\n    \"l2serl\",\r\n    \"l2sers\",\r\n    \"l2serw\",\r\n    \"lse2t\",\r\n    \"ls1eta\",\r\n    \"ls2ext\",\r\n    \"ls3ha\",\r\n    \"l2s1id\",\r\n    \"l2simp\",\r\n    \"ls2kal\",\r\n    \"l3s4kele\",\r\n    \"ls2ky\",\r\n    \"lso4b\",\r\n    \"l2sop\",\r\n    \"l4s3ort.\",\r\n    \"l3s2öl\",\r\n    \"l2spac\",\r\n    \"ls2pe\",\r\n    \"l2s3ph\",\r\n    \"l2s1pir\",\r\n    \"l3s2pit\",\r\n    \"ls2po\",\r\n    \"l3spri\",\r\n    \"ls2pu\",\r\n    \"l3spul\",\r\n    \"ls3s4\",\r\n    \"lst2a\",\r\n    \"lstab6\",\r\n    \"ls3tabl\",\r\n    \"ls4taf\",\r\n    \"lstahl3\",\r\n    \"l2stas\",\r\n    \"l4stat.\",\r\n    \"l4state\",\r\n    \"l4s3täti\",\r\n    \"l2ste\",\r\n    \"l3stea\",\r\n    \"l3stec\",\r\n    \"l3steh\",\r\n    \"l3stei\",\r\n    \"l4steil\",\r\n    \"l3stel\",\r\n    \"l3stemp\",\r\n    \"l4sten\",\r\n    \"ls4t3erk\",\r\n    \"l5s6terne\",\r\n    \"l5s6terns\",\r\n    \"ls2tie\",\r\n    \"l2stit\",\r\n    \"l4stoch\",\r\n    \"ls4toi\",\r\n    \"ls4tol\",\r\n    \"ls4tru\",\r\n    \"l2s3trü\",\r\n    \"ls2tu\",\r\n    \"ls4tüm\",\r\n    \"l3suf\",\r\n    \"ls1um\",\r\n    \"l2s1un\",\r\n    \"ls2und\",\r\n    \"ls3unk\",\r\n    \"4l1t\",\r\n    \"l2tab\",\r\n    \"lt1abs\",\r\n    \"ltag4\",\r\n    \"lt1am\",\r\n    \"l4tame\",\r\n    \"ltampe4\",\r\n    \"l3tan.\",\r\n    \"ltan3d\",\r\n    \"l2t1ap\",\r\n    \"lt1ara\",\r\n    \"ltar8beitn\",\r\n    \"l3tark\",\r\n    \"lt1art\",\r\n    \"ltar6tik\",\r\n    \"l3tartu\",\r\n    \"lt1au\",\r\n    \"l4tauf\",\r\n    \"lt3aut\",\r\n    \"lt1äh\",\r\n    \"ltbau1\",\r\n    \"lte2c\",\r\n    \"lt1eh\",\r\n    \"l3tehu\",\r\n    \"lt1eig\",\r\n    \"lt1ein\",\r\n    \"lte3mi\",\r\n    \"lt2en\",\r\n    \"lten6gel\",\r\n    \"lten4sp\",\r\n    \"lt3ents\",\r\n    \"lte4ral\",\r\n    \"lter4fa\",\r\n    \"l3t2erg\",\r\n    \"l4terhe\",\r\n    \"lter6ken\",\r\n    \"lter4ku\",\r\n    \"lter4nä\",\r\n    \"lte2ro\",\r\n    \"lt2erö\",\r\n    \"lter4se\",\r\n    \"l4t1es3k\",\r\n    \"lt2est\",\r\n    \"lte3str\",\r\n    \"lt2et\",\r\n    \"l2t1h\",\r\n    \"lt3hag\",\r\n    \"l3thas\",\r\n    \"l4t3hei\",\r\n    \"lthol2\",\r\n    \"l3t2hu\",\r\n    \"lt1ide\",\r\n    \"ltimo4\",\r\n    \"l3tine\",\r\n    \"l2tiso\",\r\n    \"l3t2i3t\",\r\n    \"l2t1ob\",\r\n    \"l2t1o2f\",\r\n    \"l4tord\",\r\n    \"l4torg\",\r\n    \"l4t1o2ri\",\r\n    \"lto2w\",\r\n    \"lt1öl\",\r\n    \"lt1ös\",\r\n    \"l4t1öt\",\r\n    \"ltra3l\",\r\n    \"lt3räu\",\r\n    \"lt3rec\",\r\n    \"lt3rei\",\r\n    \"lt3ris\",\r\n    \"lt3rol\",\r\n    \"l2t3rö\",\r\n    \"l2t3rus\",\r\n    \"l4ts\",\r\n    \"lt2se2l\",\r\n    \"lt4s3ort\",\r\n    \"lt2s1pe\",\r\n    \"lt3s2ph\",\r\n    \"lt2sti\",\r\n    \"lt3t\",\r\n    \"l3tub\",\r\n    \"lt1uh\",\r\n    \"l2t1um\",\r\n    \"lturan4\",\r\n    \"lturen4\",\r\n    \"ltu2ri\",\r\n    \"l3tü\",\r\n    \"lu1an\",\r\n    \"4lu2b3\",\r\n    \"luba2\",\r\n    \"lubs2\",\r\n    \"lu2dr\",\r\n    \"lu2ec\",\r\n    \"lu2es\",\r\n    \"lu2et\",\r\n    \"1lu2f2\",\r\n    \"2l1ufe\",\r\n    \"2luff\",\r\n    \"lu3fo\",\r\n    \"luft1a\",\r\n    \"luft3e\",\r\n    \"luf4tei\",\r\n    \"luft3r\",\r\n    \"lu2g1a\",\r\n    \"lu2g1e2b\",\r\n    \"lu2gei\",\r\n    \"lugen1\",\r\n    \"lu2gi\",\r\n    \"lug3l\",\r\n    \"lu2go\",\r\n    \"lu2g3r\",\r\n    \"lug3sp\",\r\n    \"lu2gu\",\r\n    \"2l1uh\",\r\n    \"lu1id.\",\r\n    \"lu4ig\",\r\n    \"lu1is.\",\r\n    \"lul2ö\",\r\n    \"2lumd\",\r\n    \"lume4\",\r\n    \"2lumf\",\r\n    \"2lumg\",\r\n    \"2l1umh\",\r\n    \"2lumk\",\r\n    \"2luml\",\r\n    \"l2ump\",\r\n    \"1lumpe\",\r\n    \"lum2ph\",\r\n    \"2lumr\",\r\n    \"2l1ums\",\r\n    \"lu3mu\",\r\n    \"2l1umw\",\r\n    \"2lumz\",\r\n    \"1lu2n\",\r\n    \"2l1una\",\r\n    \"lund4\",\r\n    \"2l1unf\",\r\n    \"lung4sc\",\r\n    \"2l1uni\",\r\n    \"2lunr\",\r\n    \"2l1uns\",\r\n    \"2lunt\",\r\n    \"2lunw\",\r\n    \"4luo\",\r\n    \"l2ura\",\r\n    \"lu2r1an\",\r\n    \"lu2rat\",\r\n    \"lu2rei\",\r\n    \"2lurg\",\r\n    \"l2uri\",\r\n    \"lu2ris\",\r\n    \"l1urn\",\r\n    \"lu2ro\",\r\n    \"2lurs\",\r\n    \"l1urt\",\r\n    \"lu4ru\",\r\n    \"lu3sak\",\r\n    \"2luse\",\r\n    \"lu3si\",\r\n    \"lu2sp\",\r\n    \"lus4s3a\",\r\n    \"lus2s1c\",\r\n    \"lus4sel\",\r\n    \"lus4s3er4\",\r\n    \"lus2s1o\",\r\n    \"lus4s1p\",\r\n    \"lus2s3t\",\r\n    \"lus4stä\",\r\n    \"luss5tr\",\r\n    \"1lu2st\",\r\n    \"lus6terl\",\r\n    \"lus4t1o2\",\r\n    \"lust3re\",\r\n    \"lu2s1u\",\r\n    \"lu2t1a4\",\r\n    \"lu4tas\",\r\n    \"lu4t3au\",\r\n    \"lu2tä\",\r\n    \"lu2t1e4g\",\r\n    \"lu2tel\",\r\n    \"luter2\",\r\n    \"lu4t3erg\",\r\n    \"luter4s\",\r\n    \"lu6t5ersa\",\r\n    \"lu2thy\",\r\n    \"2luto\",\r\n    \"lu2tob\",\r\n    \"lu2t1o2f\",\r\n    \"lu2top\",\r\n    \"lu4t1or\",\r\n    \"lu4t3r\",\r\n    \"lut5schl\",\r\n    \"2lüb\",\r\n    \"3lübd\",\r\n    \"lück4e2\",\r\n    \"lücker3\",\r\n    \"5lüd\",\r\n    \"lüf3te\",\r\n    \"lü2hel\",\r\n    \"lüh1l\",\r\n    \"2l1v2\",\r\n    \"lva3\",\r\n    \"l3vl\",\r\n    \"lv3r\",\r\n    \"4l3w4\",\r\n    \"2lx\",\r\n    \"1ly\",\r\n    \"ly1a2\",\r\n    \"ly3c\",\r\n    \"ly3es\",\r\n    \"ly1l\",\r\n    \"2lymp\",\r\n    \"3lyn\",\r\n    \"ly3no\",\r\n    \"ly1o\",\r\n    \"ly3t\",\r\n    \"ly1u\",\r\n    \"2l1z\",\r\n    \"l2z1ac\",\r\n    \"l2z1ag\",\r\n    \"l2zan\",\r\n    \"l2z1ap\",\r\n    \"l2zat\",\r\n    \"lz1aus\",\r\n    \"l2zäp\",\r\n    \"l2zär\",\r\n    \"lze2l\",\r\n    \"l2zele\",\r\n    \"l4z3enth\",\r\n    \"l2z1ep\",\r\n    \"l2z1er2h\",\r\n    \"l2zerz\",\r\n    \"l2z1id\",\r\n    \"lzi4m\",\r\n    \"lz1imi\",\r\n    \"lz3l\",\r\n    \"lzo2f\",\r\n    \"l2zö\",\r\n    \"lz3t2\",\r\n    \"l2z1u4fe\",\r\n    \"lzvol2\",\r\n    \"lz1w\",\r\n    \"lz2wec\",\r\n    \"l2zwu\",\r\n    \"1ma\",\r\n    \"3ma.\",\r\n    \"maa2\",\r\n    \"m1ab\",\r\n    \"m3a2bar\",\r\n    \"m2abä\",\r\n    \"2m3abb\",\r\n    \"m2abe\",\r\n    \"2m3abf\",\r\n    \"2mabg\",\r\n    \"2mabh\",\r\n    \"2mabk\",\r\n    \"m2abli\",\r\n    \"2mabm\",\r\n    \"ma2br\",\r\n    \"m2a3b4ra\",\r\n    \"2mabs\",\r\n    \"2mabt\",\r\n    \"2mabz\",\r\n    \"ma3chan\",\r\n    \"mach2e\",\r\n    \"mach8terh\",\r\n    \"mach8t7ers\",\r\n    \"mach4tr\",\r\n    \"ma2ci\",\r\n    \"mack2s\",\r\n    \"2m1act\",\r\n    \"mada2m\",\r\n    \"m2adä\",\r\n    \"ma2del\",\r\n    \"ma3dj\",\r\n    \"2m1adm\",\r\n    \"2m1a2d4r\",\r\n    \"ma4d2s\",\r\n    \"mae4\",\r\n    \"ma1f4\",\r\n    \"mag2a\",\r\n    \"ma2ge.\",\r\n    \"ma2geb\",\r\n    \"ma2gef\",\r\n    \"ma2geg\",\r\n    \"ma2gek\",\r\n    \"ma2gep\",\r\n    \"ma4ges.\",\r\n    \"ma2get\",\r\n    \"ma2gev\",\r\n    \"ma2gew\",\r\n    \"2m1agg\",\r\n    \"magi5er.\",\r\n    \"magi5ers\",\r\n    \"ma3gl\",\r\n    \"ma3g4n\",\r\n    \"2m1ago\",\r\n    \"ma3ha\",\r\n    \"mahl4st\",\r\n    \"ma1ho\",\r\n    \"mai4s3e\",\r\n    \"ma2ke.\",\r\n    \"2m1akt\",\r\n    \"mal2ag\",\r\n    \"mal1ak\",\r\n    \"ma4lakt\",\r\n    \"ma2lan\",\r\n    \"ma2lau\",\r\n    \"ma2lär\",\r\n    \"2mal2de\",\r\n    \"m2aldi\",\r\n    \"ma3le\",\r\n    \"ma4leb\",\r\n    \"mal2er\",\r\n    \"ma4lex\",\r\n    \"mali1e\",\r\n    \"mal3lo\",\r\n    \"2mallt\",\r\n    \"ma2lon\",\r\n    \"ma2lop\",\r\n    \"m2alp\",\r\n    \"mal3t\",\r\n    \"malu4\",\r\n    \"ma2l3ut\",\r\n    \"3malv\",\r\n    \"ma2mid\",\r\n    \"mam3m\",\r\n    \"2m1a2nal\",\r\n    \"ma2nar\",\r\n    \"2m1a4n4at\",\r\n    \"ma2nau\",\r\n    \"2m1anä\",\r\n    \"2manb\",\r\n    \"man2ce\",\r\n    \"3man3d4\",\r\n    \"ma2net\",\r\n    \"m2anf\",\r\n    \"mang2\",\r\n    \"2man3ga\",\r\n    \"m4angel\",\r\n    \"2m1angr\",\r\n    \"m2anh\",\r\n    \"3manip\",\r\n    \"2manl\",\r\n    \"m2anle\",\r\n    \"3m2ann\",\r\n    \"2manod\",\r\n    \"2m1ansa\",\r\n    \"2mansä\",\r\n    \"man2t1h\",\r\n    \"2mantr\",\r\n    \"manu3\",\r\n    \"ma4n1ut\",\r\n    \"2manw\",\r\n    \"2manz\",\r\n    \"m1anza\",\r\n    \"ma2or\",\r\n    \"ma2phr\",\r\n    \"ma2po\",\r\n    \"ma1q\",\r\n    \"m2ara\",\r\n    \"4marag\",\r\n    \"mar2an\",\r\n    \"2marb\",\r\n    \"mar3g2\",\r\n    \"3ma1rh\",\r\n    \"ma3r2i\",\r\n    \"m2ark\",\r\n    \"mar2kr\",\r\n    \"4mar2o\",\r\n    \"maro3d\",\r\n    \"4marr\",\r\n    \"mar6schl\",\r\n    \"mar6schm\",\r\n    \"mar6schr\",\r\n    \"mar2sp\",\r\n    \"mar2su\",\r\n    \"2m1arti\",\r\n    \"ma3r2u\",\r\n    \"m1arz\",\r\n    \"3mas\",\r\n    \"ma3s4a\",\r\n    \"mas2e\",\r\n    \"ma3s2p\",\r\n    \"masse4n3\",\r\n    \"mas4ta\",\r\n    \"mas4tel\",\r\n    \"mas2ti\",\r\n    \"mas4to\",\r\n    \"mas4tr\",\r\n    \"ma4s3z\",\r\n    \"3maß\",\r\n    \"ma2ta2b\",\r\n    \"ma2tan\",\r\n    \"ma2tä\",\r\n    \"m3a2tel\",\r\n    \"ma4t3erd\",\r\n    \"ma4t3erz\",\r\n    \"m4atme\",\r\n    \"2matmo\",\r\n    \"ma2to\",\r\n    \"ma4tort\",\r\n    \"mat3se\",\r\n    \"mat3sp\",\r\n    \"matt4r\",\r\n    \"mat3url\",\r\n    \"2m1au2f\",\r\n    \"3maul\",\r\n    \"ma3un\",\r\n    \"mau3r\",\r\n    \"2maus\",\r\n    \"mau2ta\",\r\n    \"m4ay\",\r\n    \"ma1yo\",\r\n    \"1mä\",\r\n    \"2m1ähn\",\r\n    \"mäh1r\",\r\n    \"4m1änd\",\r\n    \"2mäo\",\r\n    \"2m1äp\",\r\n    \"2mäq\",\r\n    \"mär1\",\r\n    \"mär2kl\",\r\n    \"mär2z1\",\r\n    \"mä3t4r\",\r\n    \"mäu2s1c\",\r\n    \"2m1b2\",\r\n    \"mbe2e\",\r\n    \"mber2e\",\r\n    \"mbe3ri\",\r\n    \"mbert4\",\r\n    \"mbi3er.\",\r\n    \"mb4l\",\r\n    \"mble1i\",\r\n    \"mb4r\",\r\n    \"mbu3sc\",\r\n    \"mby4t\",\r\n    \"2mc\",\r\n    \"m3ch\",\r\n    \"4m1d\",\r\n    \"m2dan\",\r\n    \"m2d1a2s\",\r\n    \"md1är\",\r\n    \"mde2a\",\r\n    \"m2dei\",\r\n    \"mde2m\",\r\n    \"m2d1emi\",\r\n    \"m2d1ent\",\r\n    \"mder2\",\r\n    \"m2d1erl\",\r\n    \"md2ö\",\r\n    \"md3ras\",\r\n    \"md3s2e\",\r\n    \"mdt4\",\r\n    \"m2d1um\",\r\n    \"1me\",\r\n    \"me3an\",\r\n    \"me3at\",\r\n    \"meb4\",\r\n    \"me2ben\",\r\n    \"3mebr\",\r\n    \"me1c\",\r\n    \"medi3e4\",\r\n    \"me1e2m\",\r\n    \"mee2n\",\r\n    \"mee4r3ei\",\r\n    \"2m1eff\",\r\n    \"mega3\",\r\n    \"me4gel\",\r\n    \"3meh\",\r\n    \"meh6l3er\",\r\n    \"mehrer4\",\r\n    \"2m1eif\",\r\n    \"2m1eig\",\r\n    \"m2ei3l2\",\r\n    \"mein4da\",\r\n    \"meinde3\",\r\n    \"meiner6k\",\r\n    \"mei6nerl\",\r\n    \"3m2einu\",\r\n    \"3m2eist\",\r\n    \"me3lam\",\r\n    \"me3l4ant\",\r\n    \"me2l1au\",\r\n    \"melb2\",\r\n    \"mel3d2\",\r\n    \"melde3i\",\r\n    \"me2lek\",\r\n    \"2melem\",\r\n    \"me2ler\",\r\n    \"melet4\",\r\n    \"2melf.\",\r\n    \"3melk\",\r\n    \"mel4k3ei\",\r\n    \"mell2\",\r\n    \"3melo\",\r\n    \"me2lob\",\r\n    \"mel2se\",\r\n    \"mel5t4\",\r\n    \"6mel6tern\",\r\n    \"2m1e2mis\",\r\n    \"2m1emp\",\r\n    \"2m1e2mu\",\r\n    \"m2en.\",\r\n    \"men3ab\",\r\n    \"me3nage\",\r\n    \"me4n3an\",\r\n    \"men3ar\",\r\n    \"me4nas\",\r\n    \"men3au\",\r\n    \"2m1endl\",\r\n    \"menen1\",\r\n    \"4men4gag\",\r\n    \"men3ge\",\r\n    \"me2nim\",\r\n    \"men3k4\",\r\n    \"men2on\",\r\n    \"men4se.\",\r\n    \"men4sem\",\r\n    \"6mensemb\",\r\n    \"men4sen\",\r\n    \"men4ser\",\r\n    \"men4ses\",\r\n    \"mensi4d\",\r\n    \"men2so\",\r\n    \"menst4\",\r\n    \"m4enta\",\r\n    \"men4t3ak\",\r\n    \"m4entei\",\r\n    \"ment5eig\",\r\n    \"men6t5ers\",\r\n    \"2mentn\",\r\n    \"ment4sp\",\r\n    \"me1o\",\r\n    \"2meou\",\r\n    \"2meö\",\r\n    \"2mepa\",\r\n    \"2m1e2pi\",\r\n    \"3m4er.\",\r\n    \"me1ra\",\r\n    \"mera3l\",\r\n    \"mer2a3s4\",\r\n    \"me2r1e2b\",\r\n    \"me4rens\",\r\n    \"mer4err\",\r\n    \"mer4erw\",\r\n    \"4m3er4gän\",\r\n    \"merin4d\",\r\n    \"merin4t\",\r\n    \"4mer4klä\",\r\n    \"mern3s2\",\r\n    \"m4ersh\",\r\n    \"mer5sm\",\r\n    \"mer6stel\",\r\n    \"mer4sto\",\r\n    \"mert4r\",\r\n    \"merz6eng\",\r\n    \"3mes\",\r\n    \"me2sal\",\r\n    \"me4sä\",\r\n    \"4meser\",\r\n    \"mes2po\",\r\n    \"mes1pr\",\r\n    \"2mes4sa\",\r\n    \"mess3an\",\r\n    \"mes6ser6g\",\r\n    \"mes4s1o\",\r\n    \"mes2sp\",\r\n    \"mes2st\",\r\n    \"mes3ta\",\r\n    \"me1sto\",\r\n    \"me3su\",\r\n    \"me3sze\",\r\n    \"me3ta\",\r\n    \"meta1s\",\r\n    \"me3th\",\r\n    \"meto1\",\r\n    \"me2tö\",\r\n    \"me4trig\",\r\n    \"met6t5en6d\",\r\n    \"me3tu\",\r\n    \"meu1\",\r\n    \"2m1ex\",\r\n    \"me2xe\",\r\n    \"1mé\",\r\n    \"2m1f4\",\r\n    \"mfi2le\",\r\n    \"4m1g2\",\r\n    \"mgang4\",\r\n    \"mglim2\",\r\n    \"4m1h2\",\r\n    \"1mi\",\r\n    \"mi1a\",\r\n    \"mia2b\",\r\n    \"mi2am\",\r\n    \"2m1iat\",\r\n    \"mi1ä\",\r\n    \"mibi1\",\r\n    \"mic1e\",\r\n    \"mi1ch\",\r\n    \"mi2ci\",\r\n    \"mi3da\",\r\n    \"mi2di.\",\r\n    \"mi3dr\",\r\n    \"2midy\",\r\n    \"mie3dr\",\r\n    \"mi3ele\",\r\n    \"mi4e3no\",\r\n    \"mien3s\",\r\n    \"mierer4\",\r\n    \"mie1s\",\r\n    \"mie2ti\",\r\n    \"mie4to\",\r\n    \"mie2tr\",\r\n    \"mi1f4\",\r\n    \"3mige\",\r\n    \"mi3h\",\r\n    \"mik1an\",\r\n    \"mi3ke\",\r\n    \"mi4kel\",\r\n    \"mi4kens\",\r\n    \"mi3k4l\",\r\n    \"mi2ku\",\r\n    \"3mil\",\r\n    \"mi3l2a\",\r\n    \"milch1\",\r\n    \"mil4che\",\r\n    \"mild4s\",\r\n    \"mi3l2i\",\r\n    \"mi3l2u\",\r\n    \"4milz\",\r\n    \"m2im2a\",\r\n    \"2m1imm\",\r\n    \"2mimp\",\r\n    \"min2ac\",\r\n    \"mi3nak\",\r\n    \"min5anze\",\r\n    \"m2inde\",\r\n    \"minde4s\",\r\n    \"2m1indu\",\r\n    \"mi2nef\",\r\n    \"miner1\",\r\n    \"mi4n3e4ri\",\r\n    \"min2eu\",\r\n    \"2minfo\",\r\n    \"min2ga\",\r\n    \"ming3s\",\r\n    \"2minh\",\r\n    \"mi3ni\",\r\n    \"mini3k4\",\r\n    \"mi3nod\",\r\n    \"mi2nof\",\r\n    \"2m1inse\",\r\n    \"m1inst\",\r\n    \"mi3nu\",\r\n    \"mioni1\",\r\n    \"mi1p\",\r\n    \"3mir.\",\r\n    \"3miri\",\r\n    \"3mirs\",\r\n    \"3mirw\",\r\n    \"3mirz\",\r\n    \"3mis.\",\r\n    \"mi2sa\",\r\n    \"mi4scha\",\r\n    \"misch3w\",\r\n    \"mi3se1\",\r\n    \"2m1i2so\",\r\n    \"mis2pa\",\r\n    \"mi2spe\",\r\n    \"mis5sar\",\r\n    \"mis4ser\",\r\n    \"mis4st\",\r\n    \"mis3te\",\r\n    \"mi1sto\",\r\n    \"mi1s4tr\",\r\n    \"3misu\",\r\n    \"3mit\",\r\n    \"mi2ta\",\r\n    \"mi2t1h\",\r\n    \"mi2to\",\r\n    \"mi2tr\",\r\n    \"mit3s2\",\r\n    \"mit5sa\",\r\n    \"mit3ta\",\r\n    \"mit3t2e\",\r\n    \"mitte3s\",\r\n    \"mi2t1u\",\r\n    \"4mitz\",\r\n    \"mi3v2\",\r\n    \"2m1j\",\r\n    \"4m1k4\",\r\n    \"m3kn\",\r\n    \"4m1l2\",\r\n    \"ml3c\",\r\n    \"m3le\",\r\n    \"ml3f\",\r\n    \"ml3k\",\r\n    \"m3lo\",\r\n    \"ml3p\",\r\n    \"ml3s\",\r\n    \"4m1m\",\r\n    \"mma3a\",\r\n    \"m2m1ak\",\r\n    \"m2m1al\",\r\n    \"m2m1ans\",\r\n    \"mm1anz\",\r\n    \"m2m1ap\",\r\n    \"mm1art\",\r\n    \"mma1st\",\r\n    \"mm1aus\",\r\n    \"mm1äu\",\r\n    \"mmd2\",\r\n    \"m2m1e2b\",\r\n    \"m2m1ef\",\r\n    \"mm1ein\",\r\n    \"mme2l1a2\",\r\n    \"mme4lin\",\r\n    \"mm2ene\",\r\n    \"mmen6te.\",\r\n    \"mmen6ten\",\r\n    \"m4mentl\",\r\n    \"m4ments\",\r\n    \"m4mentw\",\r\n    \"mme2r3a\",\r\n    \"mme4rec\",\r\n    \"mmer6geb\",\r\n    \"mme2s\",\r\n    \"mme3sc\",\r\n    \"mme4sz\",\r\n    \"m2m1eu\",\r\n    \"mmi3el\",\r\n    \"mm1inb\",\r\n    \"mm1inh\",\r\n    \"m2m1ins\",\r\n    \"mm1int\",\r\n    \"mm2is\",\r\n    \"mmi3sc\",\r\n    \"mmisch4\",\r\n    \"mmi1s4t\",\r\n    \"mmi5tw\",\r\n    \"mm3m2\",\r\n    \"mm3p2\",\r\n    \"mmpf4\",\r\n    \"mm2s\",\r\n    \"mm3sa\",\r\n    \"mm3s2i\",\r\n    \"mm3so\",\r\n    \"mm3s2p\",\r\n    \"mm3sta\",\r\n    \"mm3sti\",\r\n    \"mm3te\",\r\n    \"m2mum\",\r\n    \"mm2un\",\r\n    \"mmu3r\",\r\n    \"mmül2\",\r\n    \"mmüll1\",\r\n    \"2m3n2\",\r\n    \"m4nesi\",\r\n    \"1mo\",\r\n    \"2m1o2be\",\r\n    \"3mobi\",\r\n    \"2mobj\",\r\n    \"3m2od\",\r\n    \"mo3de\",\r\n    \"mode1s\",\r\n    \"mo2dr\",\r\n    \"m1of\",\r\n    \"mo2fe\",\r\n    \"3mog\",\r\n    \"2mog.\",\r\n    \"mo2g1al\",\r\n    \"3m2oh\",\r\n    \"moh2a\",\r\n    \"moi3r\",\r\n    \"mo2k1l\",\r\n    \"mol3d\",\r\n    \"3mom\",\r\n    \"mom2e\",\r\n    \"3m2on\",\r\n    \"mo2nan\",\r\n    \"mo2nä\",\r\n    \"mon4dac\",\r\n    \"mon4del\",\r\n    \"mon2do\",\r\n    \"mond3r\",\r\n    \"mo2ner\",\r\n    \"mon2s3\",\r\n    \"mon3sa\",\r\n    \"mons4e\",\r\n    \"mon3s4u\",\r\n    \"mont2a\",\r\n    \"mon3th\",\r\n    \"mo1ny\",\r\n    \"3m2o2o\",\r\n    \"2mo1pe\",\r\n    \"mo2per\",\r\n    \"2m1opf\",\r\n    \"2mopt\",\r\n    \"mo1ra\",\r\n    \"mor2an\",\r\n    \"mor2d3a\",\r\n    \"mor2dr\",\r\n    \"mo2rei\",\r\n    \"mor3g\",\r\n    \"morgen5s6\",\r\n    \"mor3t2\",\r\n    \"3mos\",\r\n    \"mo4ska\",\r\n    \"mos3s\",\r\n    \"moster4\",\r\n    \"mos2ti\",\r\n    \"mo3t2h\",\r\n    \"mo5to\",\r\n    \"mot4r\",\r\n    \"mous4\",\r\n    \"2m1ox\",\r\n    \"mo1y\",\r\n    \"1mö\",\r\n    \"möbe2\",\r\n    \"mö2c\",\r\n    \"2mö2f\",\r\n    \"4mök\",\r\n    \"2m1öl\",\r\n    \"4m1p\",\r\n    \"mpa3ne\",\r\n    \"mpe2la\",\r\n    \"mpe4lin\",\r\n    \"mpe2n\",\r\n    \"m2p1ene\",\r\n    \"m2pf\",\r\n    \"mpf1ef\",\r\n    \"mp4f3erf\",\r\n    \"mpf3erg\",\r\n    \"mp6fer6ge\",\r\n    \"mpf3erp\",\r\n    \"mp6ferpr\",\r\n    \"mp4f3err\",\r\n    \"mp4f3er4z\",\r\n    \"mp2f3l\",\r\n    \"mpf1or\",\r\n    \"mp2fr\",\r\n    \"mp1haf\",\r\n    \"mp1hos\",\r\n    \"mpin2\",\r\n    \"m3plä\",\r\n    \"mp3lei\",\r\n    \"m4p3lem.\",\r\n    \"m2p3len\",\r\n    \"m2p3les\",\r\n    \"mp4lis\",\r\n    \"m3pon\",\r\n    \"mpor6tag\",\r\n    \"mpor6ter6\",\r\n    \"mp3sh\",\r\n    \"mp3str\",\r\n    \"m3pu\",\r\n    \"2m1q\",\r\n    \"2m3r4\",\r\n    \"4m1s\",\r\n    \"m2sam\",\r\n    \"m2san\",\r\n    \"m4sap\",\r\n    \"ms1as\",\r\n    \"m3sat\",\r\n    \"m2sau\",\r\n    \"msau3e\",\r\n    \"m3sä\",\r\n    \"m4s1än\",\r\n    \"m3sc\",\r\n    \"msch2\",\r\n    \"m4sco\",\r\n    \"m3se\",\r\n    \"m4s1e2d\",\r\n    \"m4s1ef\",\r\n    \"m4seig\",\r\n    \"m4sein\",\r\n    \"m4se2le\",\r\n    \"mse2n\",\r\n    \"m4s1ene\",\r\n    \"m4sent\",\r\n    \"ms1erf\",\r\n    \"ms2erh\",\r\n    \"mse2t\",\r\n    \"m4s1eu\",\r\n    \"m4sex\",\r\n    \"m2s1o2d\",\r\n    \"mso2r\",\r\n    \"ms1ori\",\r\n    \"m2spä\",\r\n    \"m2sped\",\r\n    \"m4spl\",\r\n    \"ms2po\",\r\n    \"m2spot\",\r\n    \"m2spro\",\r\n    \"ms2pu\",\r\n    \"ms3s4\",\r\n    \"mst2\",\r\n    \"m6stag\",\r\n    \"m3stä\",\r\n    \"m3steh\",\r\n    \"m3stei\",\r\n    \"m3stel\",\r\n    \"ms2ti\",\r\n    \"m2stit\",\r\n    \"m3s4to\",\r\n    \"m3s4tr\",\r\n    \"ms5trä\",\r\n    \"m3s2tu\",\r\n    \"ms4tü\",\r\n    \"m2sü\",\r\n    \"m4sw\",\r\n    \"m3sy\",\r\n    \"m4szi\",\r\n    \"4m1t\",\r\n    \"mt1ab\",\r\n    \"mt1ak\",\r\n    \"mta2m\",\r\n    \"mt1ar\",\r\n    \"mt3aug\",\r\n    \"m2t1e2d\",\r\n    \"mt1ein\",\r\n    \"mt1eis\",\r\n    \"mt1elt\",\r\n    \"mt1emi\",\r\n    \"m4tenga\",\r\n    \"m4t3engl\",\r\n    \"m4tentf\",\r\n    \"m4tentg\",\r\n    \"m4t3en4tr\",\r\n    \"m4tents\",\r\n    \"mter2\",\r\n    \"m2t1erb\",\r\n    \"m4t3erei\",\r\n    \"m2t1erf\",\r\n    \"m2t1erg\",\r\n    \"mt1erh\",\r\n    \"m2t3e2r4i\",\r\n    \"m2t1erk\",\r\n    \"m2t1erl\",\r\n    \"mter4n\",\r\n    \"m2t1ers\",\r\n    \"m2t1ert\",\r\n    \"m2teta\",\r\n    \"m2t1eu\",\r\n    \"m2t1ev\",\r\n    \"m2t1h\",\r\n    \"mt3ho\",\r\n    \"m2t1i2d\",\r\n    \"m2tim\",\r\n    \"m2t1in\",\r\n    \"m2t1i2r\",\r\n    \"mti2s\",\r\n    \"mtmen2\",\r\n    \"mt1ob\",\r\n    \"mt1op\",\r\n    \"m2t1öl\",\r\n    \"mt1ös\",\r\n    \"m2t3ro\",\r\n    \"m2trö\",\r\n    \"m4ts\",\r\n    \"mt2sa\",\r\n    \"mt3sco\",\r\n    \"mt2s1e\",\r\n    \"mt3send\",\r\n    \"mt3s2ka\",\r\n    \"mt3s4kel\",\r\n    \"mts3tät\",\r\n    \"mt3stu\",\r\n    \"mtt4\",\r\n    \"mt1um\",\r\n    \"mtu3re\",\r\n    \"m3tü\",\r\n    \"mt3z\",\r\n    \"1mu\",\r\n    \"mu1a\",\r\n    \"mu3cke\",\r\n    \"mu4ckel\",\r\n    \"2m1uh\",\r\n    \"mu3la\",\r\n    \"3muld\",\r\n    \"mul4lau\",\r\n    \"3mult\",\r\n    \"3mumi\",\r\n    \"m1ums\",\r\n    \"mum2s1p\",\r\n    \"3mun\",\r\n    \"mundan4\",\r\n    \"mun6derf\",\r\n    \"mu2ner2\",\r\n    \"4m1unf\",\r\n    \"4m3ungeb\",\r\n    \"mu3ni\",\r\n    \"mu4nin\",\r\n    \"4mu4niv\",\r\n    \"4munw\",\r\n    \"4munz\",\r\n    \"mu4r1u2f\",\r\n    \"3m4us\",\r\n    \"mu4s1a\",\r\n    \"mu2s1o\",\r\n    \"mu2sp\",\r\n    \"mu2s3t2\",\r\n    \"4must.\",\r\n    \"must4e\",\r\n    \"mu2su\",\r\n    \"mut1au\",\r\n    \"mut2st\",\r\n    \"1mü\",\r\n    \"2müb\",\r\n    \"3müh\",\r\n    \"mü2her\",\r\n    \"mühl1a\",\r\n    \"mül4len\",\r\n    \"3mün\",\r\n    \"3müt\",\r\n    \"mütter3\",\r\n    \"2m1v\",\r\n    \"mvoll1\",\r\n    \"2m1w2\",\r\n    \"mwa2\",\r\n    \"mwa4r\",\r\n    \"mweg4s\",\r\n    \"mwel4\",\r\n    \"mwelt3\",\r\n    \"mwu1\",\r\n    \"3my\",\r\n    \"my1al\",\r\n    \"my2s3\",\r\n    \"2m1z2\",\r\n    \"mzug4\",\r\n    \"1na\",\r\n    \"3na.\",\r\n    \"2n1ab\",\r\n    \"3naba\",\r\n    \"na2bä\",\r\n    \"naben3s4\",\r\n    \"n3abh\",\r\n    \"3nabi\",\r\n    \"n3abk\",\r\n    \"na2b3l\",\r\n    \"na2bor\",\r\n    \"na2br\",\r\n    \"nab4rü\",\r\n    \"4n3abs2\",\r\n    \"na2bus\",\r\n    \"3nac\",\r\n    \"n4ac.\",\r\n    \"na2ch1\",\r\n    \"nachen6\",\r\n    \"na5chen.\",\r\n    \"n3achse\",\r\n    \"nach3sp\",\r\n    \"nach8t7ersc\",\r\n    \"nacht8raum\",\r\n    \"n1ada\",\r\n    \"na3dab\",\r\n    \"3nade\",\r\n    \"na3de.\",\r\n    \"nadel1\",\r\n    \"na2der\",\r\n    \"4n1adl\",\r\n    \"4n3adm\",\r\n    \"n1a2dr\",\r\n    \"3nae\",\r\n    \"na3el\",\r\n    \"2n1af\",\r\n    \"na1fra\",\r\n    \"nag2a\",\r\n    \"na3ge.\",\r\n    \"na2gem\",\r\n    \"4n1agg\",\r\n    \"n1a2gi\",\r\n    \"na3gin\",\r\n    \"na3g4r\",\r\n    \"3n2ah\",\r\n    \"na2h1a\",\r\n    \"n4ahm\",\r\n    \"4n3ahn\",\r\n    \"4n3aho\",\r\n    \"3nai\",\r\n    \"nai2e\",\r\n    \"n1aig\",\r\n    \"4n3air\",\r\n    \"nai4re\",\r\n    \"n2ais\",\r\n    \"2n1ak\",\r\n    \"3nakä\",\r\n    \"3nako\",\r\n    \"na2kro\",\r\n    \"4nakt\",\r\n    \"n2al.\",\r\n    \"na2l1a2\",\r\n    \"nal3am\",\r\n    \"na4lar\",\r\n    \"na2lä\",\r\n    \"2n1albk\",\r\n    \"n2ald\",\r\n    \"nal3da\",\r\n    \"nal3ei\",\r\n    \"na4l3ent\",\r\n    \"na6lerei\",\r\n    \"na4ler4g\",\r\n    \"na4lerm\",\r\n    \"na4l3erw\",\r\n    \"nales2\",\r\n    \"nal1et\",\r\n    \"nal1ex\",\r\n    \"nalg2\",\r\n    \"na2lid\",\r\n    \"na2lop\",\r\n    \"nal2ph\",\r\n    \"n2als.\",\r\n    \"nal3t\",\r\n    \"nalt2a\",\r\n    \"nal5tr\",\r\n    \"n2alty\",\r\n    \"na2lu\",\r\n    \"2naly\",\r\n    \"na2mat\",\r\n    \"3name\",\r\n    \"na3me.\",\r\n    \"4na2mei\",\r\n    \"n4a3men\",\r\n    \"namens3\",\r\n    \"4n1a2mer\",\r\n    \"na2mid\",\r\n    \"na2min\",\r\n    \"na3m4n\",\r\n    \"3n2amo\",\r\n    \"n1amp\",\r\n    \"nam4sp\",\r\n    \"2n1amt\",\r\n    \"namt4s\",\r\n    \"na4my\",\r\n    \"n1an\",\r\n    \"4na2n4a\",\r\n    \"na4nat\",\r\n    \"n3a2nä\",\r\n    \"4n3anb\",\r\n    \"n3and2\",\r\n    \"nan1eu\",\r\n    \"4n3anf\",\r\n    \"4n3ang\",\r\n    \"4nanh\",\r\n    \"2nani\",\r\n    \"4n3ank\",\r\n    \"4n3anl\",\r\n    \"3n2ann\",\r\n    \"4n3anna\",\r\n    \"4nano\",\r\n    \"nan2o3b\",\r\n    \"4n3anp\",\r\n    \"2nanr\",\r\n    \"4n3ans\",\r\n    \"2nantr\",\r\n    \"2nanw\",\r\n    \"n2anz.\",\r\n    \"nanzen4\",\r\n    \"nan6zene\",\r\n    \"nan6zeng\",\r\n    \"nanzer4\",\r\n    \"na3ot\",\r\n    \"na2per\",\r\n    \"n1apfe\",\r\n    \"4napfel\",\r\n    \"n3a2pr\",\r\n    \"n1aq\",\r\n    \"n1ar\",\r\n    \"5nar.\",\r\n    \"na2r1a\",\r\n    \"2narc\",\r\n    \"n2ard\",\r\n    \"n2are\",\r\n    \"n4are.\",\r\n    \"3nari\",\r\n    \"n2ark\",\r\n    \"n2arle\",\r\n    \"2narm\",\r\n    \"n2aro\",\r\n    \"na2rom\",\r\n    \"n2arr\",\r\n    \"n2ars\",\r\n    \"2nart\",\r\n    \"n2arta\",\r\n    \"n2arth\",\r\n    \"na3r2u\",\r\n    \"3nas\",\r\n    \"n4as.\",\r\n    \"na3sä\",\r\n    \"na4schw\",\r\n    \"4n1a4sp\",\r\n    \"nas2s1c\",\r\n    \"4n1assi\",\r\n    \"nas4ta\",\r\n    \"na2str\",\r\n    \"4na2sy\",\r\n    \"nasyl2\",\r\n    \"3nat\",\r\n    \"n4at.\",\r\n    \"na4t3au\",\r\n    \"nat1ei\",\r\n    \"na2tem\",\r\n    \"na2t2h\",\r\n    \"4natm\",\r\n    \"nat2o\",\r\n    \"4natom\",\r\n    \"5nator\",\r\n    \"nat1r\",\r\n    \"nat4sa\",\r\n    \"nats1e\",\r\n    \"na3tu\",\r\n    \"n1au\",\r\n    \"nauf4fr\",\r\n    \"nau2fr\",\r\n    \"5naui\",\r\n    \"3n2aul\",\r\n    \"4nausb\",\r\n    \"4nausd\",\r\n    \"4nausf\",\r\n    \"4nausg\",\r\n    \"4nausl\",\r\n    \"n2auso\",\r\n    \"4nausr\",\r\n    \"4n3auss\",\r\n    \"4nausw\",\r\n    \"4nausz\",\r\n    \"3nav\",\r\n    \"nave4\",\r\n    \"navi5er.\",\r\n    \"navi5ers\",\r\n    \"1nä\",\r\n    \"2näb\",\r\n    \"3n4äc\",\r\n    \"3näe\",\r\n    \"2n1äf\",\r\n    \"3näg\",\r\n    \"nä2hi\",\r\n    \"3nähm\",\r\n    \"2n1ähn\",\r\n    \"nä2hu\",\r\n    \"2n1ä2m\",\r\n    \"2n1än\",\r\n    \"4näpfel\",\r\n    \"2näq\",\r\n    \"när4s5t\",\r\n    \"nä2sc\",\r\n    \"n2äss\",\r\n    \"2näu\",\r\n    \"3nä1um\",\r\n    \"2n3b4\",\r\n    \"nbais4\",\r\n    \"nbe2in\",\r\n    \"nber2e\",\r\n    \"nbes4\",\r\n    \"nby4\",\r\n    \"2n1c\",\r\n    \"n2c3ab\",\r\n    \"n3can\",\r\n    \"n3ce4n\",\r\n    \"n3ces.\",\r\n    \"n3chl\",\r\n    \"nch3m\",\r\n    \"n2ck\",\r\n    \"ncor2\",\r\n    \"n3cr\",\r\n    \"n3cu\",\r\n    \"4n1d\",\r\n    \"nda1f\",\r\n    \"nd2ag\",\r\n    \"n3dai\",\r\n    \"n2d1ak\",\r\n    \"n2dana\",\r\n    \"n2dani\",\r\n    \"n2danz\",\r\n    \"nd1arr\",\r\n    \"n3dat\",\r\n    \"nd3att\",\r\n    \"nd1au\",\r\n    \"n2daut\",\r\n    \"n2dax\",\r\n    \"nd1äng\",\r\n    \"nd1c\",\r\n    \"nde4al.\",\r\n    \"n2d1ede\",\r\n    \"n3dee\",\r\n    \"n2dei\",\r\n    \"nd3elfe\",\r\n    \"ndel3l\",\r\n    \"ndel4s3a\",\r\n    \"ndel6s5en\",\r\n    \"ndel7ster\",\r\n    \"nde4mot\",\r\n    \"nden3sk\",\r\n    \"n4dentl\",\r\n    \"n4dents\",\r\n    \"nde3o2\",\r\n    \"n5der.\",\r\n    \"n5deren\",\r\n    \"nd2erh\",\r\n    \"n5deri\",\r\n    \"nder6läs\",\r\n    \"nde4rob\",\r\n    \"n4de4ros\",\r\n    \"n6der6sat\",\r\n    \"nder5ste\",\r\n    \"n3d2es1\",\r\n    \"nde2se\",\r\n    \"ndes3s\",\r\n    \"ndi2a3\",\r\n    \"nd1imm\",\r\n    \"ndo1c\",\r\n    \"n2dof\",\r\n    \"ndo2n3a\",\r\n    \"n2dopt\",\r\n    \"nd1or\",\r\n    \"n2do2ri\",\r\n    \"nd2os\",\r\n    \"ndo1st\",\r\n    \"n2d3ott\",\r\n    \"n2dö\",\r\n    \"nd2ös\",\r\n    \"nd4ram\",\r\n    \"n2d3rat\",\r\n    \"nd3rau\",\r\n    \"n2d3re\",\r\n    \"n2drif\",\r\n    \"n2d3roc\",\r\n    \"n2drod\",\r\n    \"n2d3rö\",\r\n    \"n2drui\",\r\n    \"n2d3run\",\r\n    \"nd4sene\",\r\n    \"nd2spr\",\r\n    \"nd3th\",\r\n    \"ndt4r\",\r\n    \"n2duns\",\r\n    \"ndwa5re\",\r\n    \"ndy3\",\r\n    \"1ne\",\r\n    \"3ne.\",\r\n    \"ne2ap\",\r\n    \"3neas\",\r\n    \"ne3at\",\r\n    \"ne3au\",\r\n    \"4n3ebene\",\r\n    \"ne2bl\",\r\n    \"2n1ebn\",\r\n    \"neb4r\",\r\n    \"2nec\",\r\n    \"3neca\",\r\n    \"3nece\",\r\n    \"ne2ch\",\r\n    \"ne1ck\",\r\n    \"neck2a\",\r\n    \"ne2dit\",\r\n    \"2nee\",\r\n    \"neei2\",\r\n    \"ne3ein\",\r\n    \"ne3eis\",\r\n    \"neen2\",\r\n    \"nee1r\",\r\n    \"neer2e\",\r\n    \"n1ef\",\r\n    \"n2ef.\",\r\n    \"n2e3f2a\",\r\n    \"2nefr\",\r\n    \"2n1egg\",\r\n    \"neg4l\",\r\n    \"n1e2go\",\r\n    \"neg4r\",\r\n    \"n1ehe\",\r\n    \"2ne2he.\",\r\n    \"2nehem\",\r\n    \"2nehen2\",\r\n    \"nehe2r\",\r\n    \"3nehm\",\r\n    \"4n3ehr\",\r\n    \"2n1ei\",\r\n    \"3neia\",\r\n    \"4neic\",\r\n    \"nei4dei\",\r\n    \"nei4dr\",\r\n    \"4neier\",\r\n    \"3neigt\",\r\n    \"3neigu\",\r\n    \"nei4la\",\r\n    \"4neing\",\r\n    \"4neinh\",\r\n    \"4neink\",\r\n    \"4neinl\",\r\n    \"4neinz\",\r\n    \"4neip\",\r\n    \"neiss4\",\r\n    \"ne2ke\",\r\n    \"2n1eks\",\r\n    \"nek3t2\",\r\n    \"2nekz\",\r\n    \"ne2la\",\r\n    \"nel3b\",\r\n    \"n1e2le\",\r\n    \"4nelek\",\r\n    \"4nelem\",\r\n    \"ne3len\",\r\n    \"ne3lex\",\r\n    \"nel2i\",\r\n    \"ne3lid\",\r\n    \"ne2lit\",\r\n    \"3nelk\",\r\n    \"n2ell\",\r\n    \"nel2l1a\",\r\n    \"nel4lei\",\r\n    \"neller6f\",\r\n    \"3ne3l2o\",\r\n    \"3nelu\",\r\n    \"3n2em.\",\r\n    \"4n1emb\",\r\n    \"4n3emp\",\r\n    \"2n1ems\",\r\n    \"4nemu\",\r\n    \"3nen\",\r\n    \"n4en.\",\r\n    \"n2en3a\",\r\n    \"nen4am\",\r\n    \"ne4nan\",\r\n    \"ne2nä\",\r\n    \"n2enb\",\r\n    \"n2enc\",\r\n    \"nen4dar\",\r\n    \"4n1endb\",\r\n    \"4n1endd\",\r\n    \"4n1endf\",\r\n    \"n1endg\",\r\n    \"4n1endh\",\r\n    \"4n1endk\",\r\n    \"n1endl\",\r\n    \"4n1endp\",\r\n    \"4n1endt\",\r\n    \"4n1endw\",\r\n    \"nene2b\",\r\n    \"nen3ei\",\r\n    \"nene4m\",\r\n    \"nenen1\",\r\n    \"ne4nene\",\r\n    \"nen3erb\",\r\n    \"ne2n3eu\",\r\n    \"n2enf\",\r\n    \"4n1engb\",\r\n    \"nen4gen\",\r\n    \"4n1engs\",\r\n    \"4n1engt\",\r\n    \"n1engu\",\r\n    \"n2enh\",\r\n    \"ne4n3i\",\r\n    \"n2enj\",\r\n    \"n2enk2\",\r\n    \"n2enm\",\r\n    \"nen4nar\",\r\n    \"ne2no4\",\r\n    \"nen3s4e\",\r\n    \"nen3sk\",\r\n    \"nen3s2p\",\r\n    \"5n2en3t2a\",\r\n    \"4n1entb\",\r\n    \"4nentd\",\r\n    \"4nentf\",\r\n    \"5n2enti\",\r\n    \"4n1entl\",\r\n    \"4nentn\",\r\n    \"5nentr\",\r\n    \"4n1ents\",\r\n    \"4n3entw\",\r\n    \"4nentz\",\r\n    \"ne4n3u\",\r\n    \"n2env\",\r\n    \"n2enw\",\r\n    \"nenz4er\",\r\n    \"ne2o3b\",\r\n    \"ne2oh\",\r\n    \"ne2or\",\r\n    \"neos4\",\r\n    \"ne2pen\",\r\n    \"2nepf\",\r\n    \"2ne2pi\",\r\n    \"2nepo\",\r\n    \"ne2pos\",\r\n    \"nept4\",\r\n    \"n4er.\",\r\n    \"ne1ra\",\r\n    \"ne2rab\",\r\n    \"ne2rac\",\r\n    \"ne2r3af\",\r\n    \"ne2rag\",\r\n    \"ne3r4al\",\r\n    \"ne2ram\",\r\n    \"ne2ran\",\r\n    \"ne2r3ap\",\r\n    \"n2erat\",\r\n    \"ne6ratio\",\r\n    \"ne3rato\",\r\n    \"ne2rau\",\r\n    \"n2erb2a\",\r\n    \"4n3erbe.\",\r\n    \"4n3erben\",\r\n    \"2nerdb\",\r\n    \"ner4dig\",\r\n    \"nere2\",\r\n    \"ne2r1eb\",\r\n    \"ne2rec\",\r\n    \"n1erf\",\r\n    \"4nerfas\",\r\n    \"3nerfr\",\r\n    \"2nerfü\",\r\n    \"2ner3g4\",\r\n    \"3nergr\",\r\n    \"n1erh\",\r\n    \"4n3erhö\",\r\n    \"3neri\",\r\n    \"n2erj\",\r\n    \"n1erk\",\r\n    \"5nerka\",\r\n    \"n2erkö\",\r\n    \"n2erli\",\r\n    \"2n1erlö\",\r\n    \"n1ermi\",\r\n    \"2n1ernä\",\r\n    \"4n3erneu\",\r\n    \"2n1ernt\",\r\n    \"n1eros\",\r\n    \"n1eröf\",\r\n    \"ne1rös\",\r\n    \"n2ers.\",\r\n    \"2n1ersa\",\r\n    \"3nerse\",\r\n    \"ner4sk\",\r\n    \"4n3ersts\",\r\n    \"nert4\",\r\n    \"3nert.\",\r\n    \"ne2rup\",\r\n    \"3n2erv\",\r\n    \"4nerwar\",\r\n    \"2n1erz\",\r\n    \"n2es.\",\r\n    \"ne2sal\",\r\n    \"nes2an\",\r\n    \"n4ese\",\r\n    \"ne2sei\",\r\n    \"ne2s1ev\",\r\n    \"2ne3sh\",\r\n    \"ne3si\",\r\n    \"ne3ska\",\r\n    \"ne2s1of\",\r\n    \"ne2s1or\",\r\n    \"ne2s1pa\",\r\n    \"4n1es2si\",\r\n    \"nes4sig\",\r\n    \"ne1sta\",\r\n    \"ne2ste\",\r\n    \"nes3ti\",\r\n    \"2n1est3r\",\r\n    \"4nesyn\",\r\n    \"3neß\",\r\n    \"ne2tab\",\r\n    \"2ne4tag\",\r\n    \"net1ak\",\r\n    \"ne2t1an\",\r\n    \"2ne2tap\",\r\n    \"2ne2tat\",\r\n    \"ne4te2l\",\r\n    \"ne2th\",\r\n    \"net3ha\",\r\n    \"ne3ti\",\r\n    \"ne4tin\",\r\n    \"ne4tob\",\r\n    \"n2ett\",\r\n    \"net3ta\",\r\n    \"net3te\",\r\n    \"net3tr\",\r\n    \"2n1e2tu\",\r\n    \"net4zer\",\r\n    \"net2z1i\",\r\n    \"ne2u\",\r\n    \"neu1c\",\r\n    \"neu4ere\",\r\n    \"neuer4f\",\r\n    \"neuer4k\",\r\n    \"neuer4r\",\r\n    \"neuer4s\",\r\n    \"neuer4w\",\r\n    \"neu3g4\",\r\n    \"2n1eup\",\r\n    \"neur2\",\r\n    \"neu2ra\",\r\n    \"neu3t\",\r\n    \"3n2evi\",\r\n    \"n2ew\",\r\n    \"ne3wa\",\r\n    \"2n1ex\",\r\n    \"ne2xi\",\r\n    \"5ney\",\r\n    \"3nez\",\r\n    \"3né\",\r\n    \"2n1f\",\r\n    \"n3f2al\",\r\n    \"nfalt4\",\r\n    \"n3f2ang\",\r\n    \"nf4ar\",\r\n    \"n3f2ä\",\r\n    \"nfe2i\",\r\n    \"n3f2en\",\r\n    \"n3f2er\",\r\n    \"nf2es\",\r\n    \"n4fex\",\r\n    \"nff4\",\r\n    \"n3fi\",\r\n    \"nfi4le.\",\r\n    \"nf4le\",\r\n    \"nf2o\",\r\n    \"nfo1s\",\r\n    \"nf4r\",\r\n    \"nf3s2\",\r\n    \"nf2tan\",\r\n    \"nf2t3r\",\r\n    \"nft4st\",\r\n    \"nfts3tr\",\r\n    \"nf3tu\",\r\n    \"n2f1u\",\r\n    \"4n1g\",\r\n    \"n3gabe\",\r\n    \"ng1abt\",\r\n    \"n2g1a2c\",\r\n    \"n2g1ad\",\r\n    \"n2g1ak\",\r\n    \"ng1a2me\",\r\n    \"ng3anda\",\r\n    \"n2ganh\",\r\n    \"n4ganl\",\r\n    \"ng1ans\",\r\n    \"ng1ant\",\r\n    \"ng1are\",\r\n    \"n3g2ars\",\r\n    \"n2g1a2v\",\r\n    \"n2g1äl\",\r\n    \"ng3d\",\r\n    \"n2g1eif\",\r\n    \"n2g1ein\",\r\n    \"ngelb4\",\r\n    \"nge3l4ei\",\r\n    \"ngelt2\",\r\n    \"n3g4en\",\r\n    \"n5gene\",\r\n    \"nge5nerw\",\r\n    \"ngen3sa\",\r\n    \"nge4ram\",\r\n    \"n2g1erg\",\r\n    \"nger4zä\",\r\n    \"n3g4es\",\r\n    \"nge3sa\",\r\n    \"nge5t\",\r\n    \"ngg3s\",\r\n    \"ng3hu\",\r\n    \"n2g1id\",\r\n    \"ng2lad\",\r\n    \"ng2läs\",\r\n    \"n2glic\",\r\n    \"ng4lok\",\r\n    \"n3glot\",\r\n    \"n2gn\",\r\n    \"ng3ne\",\r\n    \"n4g3ni\",\r\n    \"ng4nom\",\r\n    \"ng2nu\",\r\n    \"ng2ob\",\r\n    \"n2g1op\",\r\n    \"n2g1or\",\r\n    \"ngo2ri\",\r\n    \"n2gö\",\r\n    \"n2g3rai\",\r\n    \"ng4ran\",\r\n    \"n2g3rat\",\r\n    \"ng3roc\",\r\n    \"ng3rost\",\r\n    \"ng4s3au\",\r\n    \"ng4scr\",\r\n    \"ng4s3e4h\",\r\n    \"ng4sek\",\r\n    \"ng4sens\",\r\n    \"ng4spar\",\r\n    \"ngs5tan\",\r\n    \"ngs4teu\",\r\n    \"n4gt\",\r\n    \"ng3ts\",\r\n    \"n2gum\",\r\n    \"ngung4\",\r\n    \"ngzei4t\",\r\n    \"4n3h2\",\r\n    \"nhe2r\",\r\n    \"1ni\",\r\n    \"3n2ia\",\r\n    \"ni3alo\",\r\n    \"ni2ar\",\r\n    \"nibb4\",\r\n    \"nic4\",\r\n    \"ni1ce\",\r\n    \"n1id\",\r\n    \"3n2id.\",\r\n    \"ni3da\",\r\n    \"ni2de\",\r\n    \"2nidea\",\r\n    \"ni3d4r\",\r\n    \"2n3idy\",\r\n    \"n2ie\",\r\n    \"nie3b\",\r\n    \"ni1el\",\r\n    \"nie3l2a\",\r\n    \"nie4n3\",\r\n    \"ni3ene\",\r\n    \"ni3eni\",\r\n    \"nie4rei\",\r\n    \"ni4erna\",\r\n    \"nie2sa\",\r\n    \"ni2eu\",\r\n    \"nife4s3\",\r\n    \"ni1fl\",\r\n    \"niga2\",\r\n    \"ni2g1ab\",\r\n    \"ni2g1am\",\r\n    \"ni2g1an\",\r\n    \"4n3i2gel\",\r\n    \"n4igen\",\r\n    \"2niget\",\r\n    \"ni4gl\",\r\n    \"nig3li\",\r\n    \"ni2gn\",\r\n    \"nig4sp\",\r\n    \"nihi3\",\r\n    \"ni2kar\",\r\n    \"3nike\",\r\n    \"ni2kel\",\r\n    \"ni3kerh\",\r\n    \"ni2ki\",\r\n    \"nik3ing\",\r\n    \"ni2kor\",\r\n    \"ni2k3r\",\r\n    \"nik3t4\",\r\n    \"3n2il\",\r\n    \"ni3l2a\",\r\n    \"ni3l2i\",\r\n    \"4nimp\",\r\n    \"nin1\",\r\n    \"3nin.\",\r\n    \"3n2ina\",\r\n    \"nin2ac\",\r\n    \"ni2nal\",\r\n    \"3n2inb\",\r\n    \"2n1ind\",\r\n    \"2ninf\",\r\n    \"3n2ing\",\r\n    \"ning4s\",\r\n    \"2n1inh\",\r\n    \"4n1ink2\",\r\n    \"3nino\",\r\n    \"ni2nor\",\r\n    \"3n2inp\",\r\n    \"2n1ins\",\r\n    \"4ninse\",\r\n    \"4ninsu\",\r\n    \"4n1int\",\r\n    \"ni3nu\",\r\n    \"4n1inv\",\r\n    \"3n2inw\",\r\n    \"ni2ob\",\r\n    \"ni3ok\",\r\n    \"ni3ora\",\r\n    \"n2ip\",\r\n    \"ni4ron\",\r\n    \"n1irr\",\r\n    \"3n2is\",\r\n    \"ni4sam\",\r\n    \"ni2san\",\r\n    \"ni2sä\",\r\n    \"nis3cha\",\r\n    \"ni4schw\",\r\n    \"ni2s1e\",\r\n    \"4n3isol\",\r\n    \"ni2som\",\r\n    \"4nisot\",\r\n    \"ni2sp\",\r\n    \"ni3spi\",\r\n    \"nis3s4\",\r\n    \"nis3tha\",\r\n    \"ni2s1u\",\r\n    \"2nit\",\r\n    \"3nita\",\r\n    \"ni2ti\",\r\n    \"4ni4tia\",\r\n    \"nit2o\",\r\n    \"3nitr\",\r\n    \"nit3s\",\r\n    \"nit6ter6g\",\r\n    \"nit6t5er6k\",\r\n    \"nit4tra\",\r\n    \"nitt4sa\",\r\n    \"3niu\",\r\n    \"ni3v2\",\r\n    \"3nix\",\r\n    \"2n1j\",\r\n    \"4n1k\",\r\n    \"nk1abr\",\r\n    \"n2k1ac\",\r\n    \"nka2ge\",\r\n    \"n3kal\",\r\n    \"n4kalg\",\r\n    \"nk1ang\",\r\n    \"nk1apf\",\r\n    \"nk3art.\",\r\n    \"nka3sc\",\r\n    \"n2katm\",\r\n    \"n2kato\",\r\n    \"nk1aus\",\r\n    \"n2kaut\",\r\n    \"n2k1äh\",\r\n    \"n2k1äp\",\r\n    \"nke2c\",\r\n    \"nk1ei\",\r\n    \"nk2eil\",\r\n    \"nke4lei\",\r\n    \"n4kelem\",\r\n    \"nke4na\",\r\n    \"nken4te\",\r\n    \"n4k3erle\",\r\n    \"nke4ros\",\r\n    \"nk3ersa\",\r\n    \"n3kesc\",\r\n    \"nke2t\",\r\n    \"nk1eti\",\r\n    \"n2ketu\",\r\n    \"nk1i2d\",\r\n    \"n2kide\",\r\n    \"nk1inh\",\r\n    \"n2k1ins\",\r\n    \"n4klade\",\r\n    \"n3klag\",\r\n    \"nk3leis\",\r\n    \"n2k3len\",\r\n    \"nk3les\",\r\n    \"n3klin\",\r\n    \"nk2lo\",\r\n    \"nk4neb\",\r\n    \"n2knis\",\r\n    \"n2knit\",\r\n    \"n2knu\",\r\n    \"n2k1o4be\",\r\n    \"n2kopt\",\r\n    \"nko2r\",\r\n    \"nkord2\",\r\n    \"nk1ori\",\r\n    \"n2k1ort\",\r\n    \"n2köl\",\r\n    \"nk4rab\",\r\n    \"nk3rät\",\r\n    \"n4kre.\",\r\n    \"n2k3rel\",\r\n    \"n2kren\",\r\n    \"nk3rep\",\r\n    \"n2krez\",\r\n    \"nk3ro\",\r\n    \"n2krol\",\r\n    \"nk2sal\",\r\n    \"nk2se\",\r\n    \"nk3sen\",\r\n    \"nk2so\",\r\n    \"nks2ti\",\r\n    \"nk3s2z\",\r\n    \"nk2tak\",\r\n    \"nk2tan\",\r\n    \"nk4tau\",\r\n    \"nk4tent\",\r\n    \"nk4terg\",\r\n    \"nk4t3ern\",\r\n    \"nkte3sk\",\r\n    \"nkt2et\",\r\n    \"nk2tin\",\r\n    \"nkt1it\",\r\n    \"nk2top\",\r\n    \"nkt1r\",\r\n    \"nkt3ric\",\r\n    \"nk2tro\",\r\n    \"nk2tru\",\r\n    \"nkt4sen\",\r\n    \"n2k1um\",\r\n    \"nku2n\",\r\n    \"nk1urh\",\r\n    \"n2küb\",\r\n    \"2n3l2\",\r\n    \"nla3ge\",\r\n    \"nle2ga\",\r\n    \"2n1m2\",\r\n    \"n3ma\",\r\n    \"n3mä\",\r\n    \"nmen2s\",\r\n    \"n5mi\",\r\n    \"4n1n\",\r\n    \"n2nada\",\r\n    \"nna2g\",\r\n    \"n2nalg\",\r\n    \"n2n1all\",\r\n    \"nna3m\",\r\n    \"n2nan\",\r\n    \"nna3st\",\r\n    \"n2nau\",\r\n    \"n3nec\",\r\n    \"nn2ei.\",\r\n    \"n3nelb\",\r\n    \"nne4le\",\r\n    \"nne4na\",\r\n    \"nn2ens\",\r\n    \"nner4ei\",\r\n    \"n6n5ereig\",\r\n    \"nner4fü\",\r\n    \"nner6geb\",\r\n    \"nn4ergr\",\r\n    \"nn2erh\",\r\n    \"nn2erk\",\r\n    \"nner4la\",\r\n    \"nn2ero\",\r\n    \"nne2rö\",\r\n    \"nn3erwa\",\r\n    \"nner6war\",\r\n    \"nner2z\",\r\n    \"nne4s1e\",\r\n    \"nn2eu\",\r\n    \"nn2ex\",\r\n    \"nn3f\",\r\n    \"nng4\",\r\n    \"n3ni\",\r\n    \"nnk2\",\r\n    \"nn2o3b\",\r\n    \"nn3obl\",\r\n    \"nn3obs\",\r\n    \"n2nof\",\r\n    \"n2nop\",\r\n    \"nno2r\",\r\n    \"nn1ori\",\r\n    \"nn4sam\",\r\n    \"nn3ser\",\r\n    \"nn3s2p\",\r\n    \"nnst4\",\r\n    \"nn4stoc\",\r\n    \"nn2stö\",\r\n    \"nn5t2a\",\r\n    \"nn2th\",\r\n    \"n2n1uf\",\r\n    \"n2n1unf\",\r\n    \"nn1ur\",\r\n    \"nnvoll4\",\r\n    \"nnvol5le\",\r\n    \"1no\",\r\n    \"3no.\",\r\n    \"no5at\",\r\n    \"3n2oba\",\r\n    \"n2obel\",\r\n    \"2nobj\",\r\n    \"no2bla\",\r\n    \"n2oble\",\r\n    \"3noblo\",\r\n    \"3noblö\",\r\n    \"2n1ob2s\",\r\n    \"nobu2\",\r\n    \"nobut3\",\r\n    \"3noby\",\r\n    \"no1c\",\r\n    \"noche4\",\r\n    \"noch4r\",\r\n    \"2nod\",\r\n    \"no2de\",\r\n    \"no2ed\",\r\n    \"n1of\",\r\n    \"no2fe\",\r\n    \"2noff\",\r\n    \"2n1oh\",\r\n    \"3n2ohe\",\r\n    \"no2kel\",\r\n    \"2n3okk\",\r\n    \"no3kr\",\r\n    \"n3ole\",\r\n    \"no2leu\",\r\n    \"no4lig\",\r\n    \"no2liv\",\r\n    \"2n3o2ly\",\r\n    \"3no3me3\",\r\n    \"no3mi\",\r\n    \"3nomp\",\r\n    \"non2e\",\r\n    \"n1onk\",\r\n    \"nons4\",\r\n    \"n1ont\",\r\n    \"2nony\",\r\n    \"no2o\",\r\n    \"3n2opa\",\r\n    \"3nopä\",\r\n    \"no2per\",\r\n    \"2n1o2pi\",\r\n    \"2n1ops\",\r\n    \"no3p2te\",\r\n    \"3nor.\",\r\n    \"nor2a\",\r\n    \"no2rad\",\r\n    \"n2o3rak\",\r\n    \"no3ral\",\r\n    \"no3rar\",\r\n    \"2norc\",\r\n    \"nor4da\",\r\n    \"3nordb\",\r\n    \"nor4des\",\r\n    \"nor2d3r\",\r\n    \"no3r2e\",\r\n    \"2n1org\",\r\n    \"3norh\",\r\n    \"3n2orl\",\r\n    \"3norm\",\r\n    \"norm2a\",\r\n    \"nor3mal\",\r\n    \"3norö\",\r\n    \"3nors\",\r\n    \"2n1ort\",\r\n    \"3n2os.\",\r\n    \"nos2e1\",\r\n    \"no3sh\",\r\n    \"no5s2k\",\r\n    \"no2s3p\",\r\n    \"2no2sti\",\r\n    \"nost1r\",\r\n    \"2nostv\",\r\n    \"nos2u\",\r\n    \"no2tan\",\r\n    \"no3tart\",\r\n    \"no2tä\",\r\n    \"no4t1e2i\",\r\n    \"no6t5entr\",\r\n    \"no4ter2\",\r\n    \"noterb3\",\r\n    \"no4tex\",\r\n    \"not1h\",\r\n    \"no2tho\",\r\n    \"no2t3in\",\r\n    \"no2t3op\",\r\n    \"no2t3r\",\r\n    \"3nov\",\r\n    \"2n1o2x\",\r\n    \"3noz\",\r\n    \"2nöd\",\r\n    \"4nö2f\",\r\n    \"4n1ök\",\r\n    \"4n1öl\",\r\n    \"n2ör\",\r\n    \"1n2öt\",\r\n    \"4n3p4\",\r\n    \"npa2ge\",\r\n    \"npa2s\",\r\n    \"npf4\",\r\n    \"npro1\",\r\n    \"npsy3\",\r\n    \"2n1q\",\r\n    \"6n3r2\",\r\n    \"nran2\",\r\n    \"nrau4ma\",\r\n    \"nräu3s\",\r\n    \"nrebe2\",\r\n    \"nreli1\",\r\n    \"nre3s4z\",\r\n    \"nro2h\",\r\n    \"nrö2s\",\r\n    \"nrücker6\",\r\n    \"4n1s\",\r\n    \"n3sabo\",\r\n    \"n2s1a2d\",\r\n    \"n2s1a2gi\",\r\n    \"nsa2kr\",\r\n    \"n2sall\",\r\n    \"ns4alp\",\r\n    \"n2salt\",\r\n    \"ns4anat\",\r\n    \"ns3ane\",\r\n    \"n2sanm\",\r\n    \"nsa2r\",\r\n    \"ns2arg\",\r\n    \"n3sark\",\r\n    \"nsa2s\",\r\n    \"ns4ath\",\r\n    \"nsau4r\",\r\n    \"nsau2s\",\r\n    \"n2saut\",\r\n    \"ns2av\",\r\n    \"ns2ax\",\r\n    \"n2s1än\",\r\n    \"ns2äug\",\r\n    \"n2s1äus\",\r\n    \"n3sche.\",\r\n    \"n4schef\",\r\n    \"nsch5eul\",\r\n    \"n4schl.\",\r\n    \"nsch2o\",\r\n    \"nscht4\",\r\n    \"n3schu\",\r\n    \"nsch7werd\",\r\n    \"ns2cr\",\r\n    \"ns1eb\",\r\n    \"nse4ein\",\r\n    \"ns2eh\",\r\n    \"nse2ha2\",\r\n    \"nseh5ere\",\r\n    \"n4seinf\",\r\n    \"ns2ele\",\r\n    \"ns3elem\",\r\n    \"n2sem.\",\r\n    \"n2sene\",\r\n    \"nsen4sp\",\r\n    \"n2sepo\",\r\n    \"n2s1erf\",\r\n    \"n2s1erg\",\r\n    \"n2serh\",\r\n    \"n2s1erk\",\r\n    \"ns4erko\",\r\n    \"ns1erl\",\r\n    \"n4serle\",\r\n    \"n4s3erne\",\r\n    \"n2serö\",\r\n    \"ns1ers\",\r\n    \"n4sersc\",\r\n    \"ns3ertr\",\r\n    \"n2s1erw\",\r\n    \"n2serz\",\r\n    \"n2sety\",\r\n    \"n2s1eu\",\r\n    \"ns2ext\",\r\n    \"nsfi2l\",\r\n    \"ns3iden\",\r\n    \"n3sim\",\r\n    \"n4simp\",\r\n    \"ns2inf\",\r\n    \"n2sini\",\r\n    \"nsinn2\",\r\n    \"nsinns3\",\r\n    \"n3sis\",\r\n    \"n4siso\",\r\n    \"nsi4te\",\r\n    \"nsi2tr\",\r\n    \"n3s2kal\",\r\n    \"n3s2kel\",\r\n    \"ns2kis\",\r\n    \"n3skle\",\r\n    \"n3s2ky\",\r\n    \"n5smara\",\r\n    \"n2s1o2d\",\r\n    \"ns1of\",\r\n    \"n4soff\",\r\n    \"ns4om\",\r\n    \"n4s3ont\",\r\n    \"n2s1op\",\r\n    \"n4s3ort.\",\r\n    \"ns2pac\",\r\n    \"nspa2g\",\r\n    \"ns4pek\",\r\n    \"ns2pel\",\r\n    \"n5s4pen\",\r\n    \"n4speri\",\r\n    \"n2sph\",\r\n    \"n3s2pi\",\r\n    \"ns4pie\",\r\n    \"ns4pir\",\r\n    \"n2spo\",\r\n    \"n2sprä\",\r\n    \"n4s3prie\",\r\n    \"n2spro\",\r\n    \"n2sput\",\r\n    \"nsrü2\",\r\n    \"ns3s4\",\r\n    \"ns3tabl\",\r\n    \"n3stad\",\r\n    \"ns8tagent\",\r\n    \"nst1ak\",\r\n    \"n4stale\",\r\n    \"ns4ta2n1\",\r\n    \"n3stand\",\r\n    \"nst3ane\",\r\n    \"n3s4tar\",\r\n    \"n2stas\",\r\n    \"n4stat.\",\r\n    \"n6staten\",\r\n    \"ns4tati\",\r\n    \"n4stats\",\r\n    \"n3stäm\",\r\n    \"n3s4tän\",\r\n    \"nst5eife\",\r\n    \"nst7einhe\",\r\n    \"ns4tent\",\r\n    \"ns2tep\",\r\n    \"nst5erge\",\r\n    \"n5s6terne\",\r\n    \"n5s6terns\",\r\n    \"ns4teu\",\r\n    \"ns2ti\",\r\n    \"n3s4tic\",\r\n    \"n3stif\",\r\n    \"n4stilg\",\r\n    \"n3stim\",\r\n    \"n2stob\",\r\n    \"nst5opfe\",\r\n    \"ns4tor\",\r\n    \"n4strie\",\r\n    \"n4strik\",\r\n    \"ns4trip\",\r\n    \"ns4trun\",\r\n    \"ns2tu\",\r\n    \"nst3u4t\",\r\n    \"ns4tüm\",\r\n    \"n3suf\",\r\n    \"ns2um\",\r\n    \"ns1un\",\r\n    \"ns2ung\",\r\n    \"ns4unk\",\r\n    \"ns2unw\",\r\n    \"ns4unz\",\r\n    \"ns1urs\",\r\n    \"n2s1ut\",\r\n    \"n3sy\",\r\n    \"ns4zene\",\r\n    \"2n1t\",\r\n    \"n3t2a3c\",\r\n    \"ntak4ta\",\r\n    \"ntal1a\",\r\n    \"nta4lin\",\r\n    \"n4t1all\",\r\n    \"nta2lo\",\r\n    \"nt2alp\",\r\n    \"n3ta3m\",\r\n    \"n3t2anb\",\r\n    \"nta3ne\",\r\n    \"n4tansp\",\r\n    \"nt1ant\",\r\n    \"n4tanza\",\r\n    \"n3t2arb\",\r\n    \"nt1ark\",\r\n    \"n3t2arm\",\r\n    \"nt1art\",\r\n    \"ntar6tik\",\r\n    \"nt3artu\",\r\n    \"n2t1ass\",\r\n    \"n2tath\",\r\n    \"n3tatl\",\r\n    \"nt1äm\",\r\n    \"n2t1äu\",\r\n    \"nte3au\",\r\n    \"nte1e\",\r\n    \"nte3g6\",\r\n    \"nt1eh\",\r\n    \"n3tehe\",\r\n    \"n2teig\",\r\n    \"nt1ein\",\r\n    \"n2t1eis\",\r\n    \"nte4lin\",\r\n    \"n2t1emo\",\r\n    \"nt4en\",\r\n    \"nte4na\",\r\n    \"nten6te.\",\r\n    \"ntera2\",\r\n    \"nte6r5eis\",\r\n    \"nt4erh\",\r\n    \"nt4erk\",\r\n    \"nt4erm\",\r\n    \"nt4ern\",\r\n    \"ntern4e\",\r\n    \"nt4ers\",\r\n    \"nt4ert\",\r\n    \"nte3sa\",\r\n    \"n4t1es4s\",\r\n    \"nte2st\",\r\n    \"n6testri\",\r\n    \"n2te4ta\",\r\n    \"nteu3\",\r\n    \"nteu6eri\",\r\n    \"nte3v\",\r\n    \"nt1hel\",\r\n    \"nt1hie\",\r\n    \"n2thot\",\r\n    \"n3thr\",\r\n    \"nt4hu\",\r\n    \"n2t5hum\",\r\n    \"nt4hy\",\r\n    \"n3t2i\",\r\n    \"nti3c\",\r\n    \"ntim3p\",\r\n    \"n4t3ind\",\r\n    \"n4t3inf\",\r\n    \"n4t3inh\",\r\n    \"ntini1\",\r\n    \"n5t2lem\",\r\n    \"ntmen2\",\r\n    \"ntmo4\",\r\n    \"ntni2\",\r\n    \"ntnis1\",\r\n    \"nto3re\",\r\n    \"n4torg\",\r\n    \"n4t3o4rie\",\r\n    \"n2t1öl\",\r\n    \"nt4ral\",\r\n    \"nt1rau\",\r\n    \"nt4raum\",\r\n    \"nt3rea\",\r\n    \"nt3rec\",\r\n    \"n5t4ree\",\r\n    \"nt3reif\",\r\n    \"n5trep\",\r\n    \"nt4repr\",\r\n    \"nt3rich\",\r\n    \"n4t3rieg\",\r\n    \"n2troh\",\r\n    \"n3trop\",\r\n    \"n4tropi\",\r\n    \"n2t3rü\",\r\n    \"n4ts\",\r\n    \"nts2ah\",\r\n    \"nt3s2p\",\r\n    \"nts3par\",\r\n    \"nt5spe\",\r\n    \"nts2t\",\r\n    \"nt2sur\",\r\n    \"ntt2\",\r\n    \"n3tub\",\r\n    \"ntu4re.\",\r\n    \"ntu1s\",\r\n    \"n3tü\",\r\n    \"nt3z\",\r\n    \"1nu\",\r\n    \"3nu1a\",\r\n    \"nu4ale\",\r\n    \"nu3a2r3\",\r\n    \"nubi1\",\r\n    \"2nu1c\",\r\n    \"3nud\",\r\n    \"nude2\",\r\n    \"3nue\",\r\n    \"nu2es\",\r\n    \"nu2fe\",\r\n    \"3nug\",\r\n    \"2n1uh\",\r\n    \"3nuhi\",\r\n    \"3nui\",\r\n    \"n2uk4\",\r\n    \"nu3kl\",\r\n    \"n3u2kr\",\r\n    \"null1a\",\r\n    \"nulle2\",\r\n    \"null3eb\",\r\n    \"n2um.\",\r\n    \"2n3umb\",\r\n    \"n2ume\",\r\n    \"2numf\",\r\n    \"4numg\",\r\n    \"2numl\",\r\n    \"3n2umm\",\r\n    \"4numr\",\r\n    \"2n1ums\",\r\n    \"2n1umv\",\r\n    \"2n3umz\",\r\n    \"nu4n\",\r\n    \"4nuna\",\r\n    \"2n1une\",\r\n    \"3n2ung4\",\r\n    \"4n3ungl\",\r\n    \"4n1uni\",\r\n    \"n3unk\",\r\n    \"2nunr\",\r\n    \"nun3s\",\r\n    \"4nunt\",\r\n    \"4nunv\",\r\n    \"3nunz\",\r\n    \"3nuo\",\r\n    \"2nup\",\r\n    \"2nu2r\",\r\n    \"nur2i\",\r\n    \"nur3s\",\r\n    \"nur2z\",\r\n    \"3nu2s\",\r\n    \"nu3sc\",\r\n    \"nu3se\",\r\n    \"nus1p\",\r\n    \"nu3spo\",\r\n    \"nuss3er4\",\r\n    \"nus6serl\",\r\n    \"3nut\",\r\n    \"nu2t1a\",\r\n    \"n3uto\",\r\n    \"nu4top\",\r\n    \"nu4t3r\",\r\n    \"3nuu\",\r\n    \"3nux\",\r\n    \"3nuz\",\r\n    \"3nü.\",\r\n    \"2nü4b\",\r\n    \"nür1c\",\r\n    \"3nüs\",\r\n    \"1nüt\",\r\n    \"2n1v2\",\r\n    \"n3ver\",\r\n    \"n3vl\",\r\n    \"nvoran4\",\r\n    \"2n3w\",\r\n    \"1ny.\",\r\n    \"2n1ya\",\r\n    \"n2ya.\",\r\n    \"1nyh\",\r\n    \"n1yo\",\r\n    \"1nyr\",\r\n    \"1nys\",\r\n    \"1nyw\",\r\n    \"4n1z\",\r\n    \"n2zac\",\r\n    \"n2z1a2g\",\r\n    \"n2z3a2k\",\r\n    \"n2zan\",\r\n    \"nz3a4ne\",\r\n    \"n3zani\",\r\n    \"n2zar\",\r\n    \"nza2s\",\r\n    \"n2zat\",\r\n    \"n2z1au\",\r\n    \"n2zän\",\r\n    \"n2zär\",\r\n    \"nze4la\",\r\n    \"nzel6lig\",\r\n    \"n6zenerg\",\r\n    \"n3zeni\",\r\n    \"n4zense\",\r\n    \"n4zentl\",\r\n    \"n4zents\",\r\n    \"nz3erem\",\r\n    \"n2z1erh\",\r\n    \"nz1erl\",\r\n    \"nzer4lö\",\r\n    \"n5z4err\",\r\n    \"nz5erste\",\r\n    \"nzer6tra\",\r\n    \"n3z4es\",\r\n    \"nze3sk\",\r\n    \"nze2t\",\r\n    \"nz1eta\",\r\n    \"nze3u4t\",\r\n    \"n2z1id\",\r\n    \"nzi2ga\",\r\n    \"n2zinh\",\r\n    \"n2z1ini\",\r\n    \"nz1int\",\r\n    \"nz1inv\",\r\n    \"nz3le\",\r\n    \"n2z1op\",\r\n    \"n2zöl\",\r\n    \"nz3st\",\r\n    \"nzt4r\",\r\n    \"n2z1wa\",\r\n    \"n2z1wä\",\r\n    \"n2zwet\",\r\n    \"n2zwir\",\r\n    \"n2zwö\",\r\n    \"n2z1wu\",\r\n    \"ño1\",\r\n    \"ñor2\",\r\n    \"2o3a2\",\r\n    \"o4a3bi\",\r\n    \"o4ac\",\r\n    \"oa3che\",\r\n    \"oa3chi\",\r\n    \"o4ad\",\r\n    \"oa3de\",\r\n    \"oad4st\",\r\n    \"oa3in\",\r\n    \"o4a3ke\",\r\n    \"oa4k5l\",\r\n    \"o4a3la\",\r\n    \"o4a3mi\",\r\n    \"oa4n\",\r\n    \"oan4a\",\r\n    \"o4a3q\",\r\n    \"o2a4r\",\r\n    \"o2as\",\r\n    \"3oa3se\",\r\n    \"o5ass\",\r\n    \"o4at\",\r\n    \"oa4tr\",\r\n    \"o5au\",\r\n    \"2o1ä\",\r\n    \"o1b\",\r\n    \"2ob.\",\r\n    \"o3b2al\",\r\n    \"ob2am\",\r\n    \"ob2ar\",\r\n    \"ob1auf\",\r\n    \"2o3b2ä\",\r\n    \"2obb\",\r\n    \"ob2e\",\r\n    \"2obe.\",\r\n    \"2obea\",\r\n    \"2o3bec\",\r\n    \"2obef\",\r\n    \"o2b3ein\",\r\n    \"2oben\",\r\n    \"obe4na\",\r\n    \"oben3d4\",\r\n    \"1o2ber\",\r\n    \"2o3ber.\",\r\n    \"ober5eis\",\r\n    \"ober3in\",\r\n    \"oberin6g\",\r\n    \"obe4ris\",\r\n    \"2obev\",\r\n    \"2obez\",\r\n    \"2o3b2i\",\r\n    \"3obj\",\r\n    \"ob1la\",\r\n    \"ob3lei\",\r\n    \"1ob3li\",\r\n    \"2oblo2\",\r\n    \"2ob2lö\",\r\n    \"ob2lu\",\r\n    \"2obo\",\r\n    \"ob1or\",\r\n    \"2obö\",\r\n    \"ob3rei\",\r\n    \"2obrü\",\r\n    \"o4bs\",\r\n    \"ob3s2h\",\r\n    \"ob3sk\",\r\n    \"obs2p\",\r\n    \"ob3sz\",\r\n    \"2o3bu\",\r\n    \"o4bunt\",\r\n    \"obu2s\",\r\n    \"2o3bü\",\r\n    \"o4büb\",\r\n    \"2oby\",\r\n    \"oby4t\",\r\n    \"2oc\",\r\n    \"o3ca\",\r\n    \"oc1c\",\r\n    \"3occl\",\r\n    \"o1ce\",\r\n    \"och1a\",\r\n    \"ocha2b\",\r\n    \"ocha2r\",\r\n    \"o1che\",\r\n    \"oche4b\",\r\n    \"o2ch1e4c\",\r\n    \"och1eh\",\r\n    \"och1ei\",\r\n    \"oche2l\",\r\n    \"ocher4k\",\r\n    \"ochi4d\",\r\n    \"och3l\",\r\n    \"och3m\",\r\n    \"och1o\",\r\n    \"ochö2f\",\r\n    \"och3r\",\r\n    \"och1s\",\r\n    \"ocht4\",\r\n    \"o1chu\",\r\n    \"ochu2f\",\r\n    \"och3u4t\",\r\n    \"och1w\",\r\n    \"o1ci\",\r\n    \"o1c4k\",\r\n    \"o2ckar\",\r\n    \"o2ckau\",\r\n    \"o3cke\",\r\n    \"o6ck5er6sc\",\r\n    \"o3cki\",\r\n    \"ock3sz\",\r\n    \"ock3ta\",\r\n    \"o1cl\",\r\n    \"o3cu\",\r\n    \"o1ç\",\r\n    \"o1d\",\r\n    \"2od2a\",\r\n    \"od3ak\",\r\n    \"od2dr\",\r\n    \"o3dec\",\r\n    \"o3d2e3i\",\r\n    \"odein3\",\r\n    \"ode4l3ag\",\r\n    \"ode4man\",\r\n    \"ode2n1\",\r\n    \"o3der\",\r\n    \"ode2s1e\",\r\n    \"ode3sp\",\r\n    \"od2et\",\r\n    \"o3dex\",\r\n    \"od2i\",\r\n    \"2o3dia\",\r\n    \"2odi3c\",\r\n    \"2odif\",\r\n    \"2o3dir\",\r\n    \"2odn\",\r\n    \"od2o\",\r\n    \"o2don\",\r\n    \"o2d3op\",\r\n    \"odo4s\",\r\n    \"od2ö\",\r\n    \"2odr\",\r\n    \"o2dre\",\r\n    \"odt4\",\r\n    \"2o3du\",\r\n    \"o3dy\",\r\n    \"ody2m\",\r\n    \"2o1e2\",\r\n    \"oe3di\",\r\n    \"oe4m\",\r\n    \"oen1e\",\r\n    \"oe3ri\",\r\n    \"o2e3s\",\r\n    \"oe4sc\",\r\n    \"o2e3t2\",\r\n    \"o3et.\",\r\n    \"o3ets\",\r\n    \"2ofa\",\r\n    \"ofa2c\",\r\n    \"of1a2d\",\r\n    \"of1a2g\",\r\n    \"of2an\",\r\n    \"of1au\",\r\n    \"2ofä\",\r\n    \"o2f1e2b\",\r\n    \"o2f1ec\",\r\n    \"2ofee\",\r\n    \"o2f1ei\",\r\n    \"2ofem\",\r\n    \"o2fent\",\r\n    \"2o3fer\",\r\n    \"o4ferb\",\r\n    \"2o3f2es\",\r\n    \"o2f1e2t\",\r\n    \"2ofeu\",\r\n    \"of3eun\",\r\n    \"of2f1a\",\r\n    \"off3erz\",\r\n    \"of2f1in\",\r\n    \"1offiz\",\r\n    \"of2f3l\",\r\n    \"of2f1o\",\r\n    \"of2f3r\",\r\n    \"offs2\",\r\n    \"off3sh\",\r\n    \"off3si\",\r\n    \"off3sp\",\r\n    \"of2fu\",\r\n    \"2ofi\",\r\n    \"ofi3e2i\",\r\n    \"ofi3k4l\",\r\n    \"ofi3s4\",\r\n    \"2o1fl\",\r\n    \"of3le\",\r\n    \"of3li\",\r\n    \"of4lö\",\r\n    \"2ofo\",\r\n    \"2ofö\",\r\n    \"2o1fr\",\r\n    \"of3rä\",\r\n    \"of4rü\",\r\n    \"of2s1\",\r\n    \"of4sam\",\r\n    \"of3sä\",\r\n    \"ofs2ch\",\r\n    \"of4sen\",\r\n    \"of3sta\",\r\n    \"of4staf\",\r\n    \"of3str\",\r\n    \"2oft\",\r\n    \"oft2a\",\r\n    \"of2tei\",\r\n    \"of3th\",\r\n    \"oft4r\",\r\n    \"2ofu\",\r\n    \"of3ur\",\r\n    \"2o1g\",\r\n    \"o2g1ab\",\r\n    \"o2g1ac\",\r\n    \"oga3d\",\r\n    \"og1ang\",\r\n    \"og1ans\",\r\n    \"o2g1e2i\",\r\n    \"oge2li\",\r\n    \"ogener4\",\r\n    \"ogerätein8\",\r\n    \"o2g1eth\",\r\n    \"og2gl\",\r\n    \"o3gh\",\r\n    \"ogi2er\",\r\n    \"ogin1\",\r\n    \"o2g1ini\",\r\n    \"og3ins\",\r\n    \"og1l\",\r\n    \"og3le\",\r\n    \"og2lo\",\r\n    \"o3g4n\",\r\n    \"og1o2ri\",\r\n    \"ogs2\",\r\n    \"og3sp\",\r\n    \"og1ste\",\r\n    \"og3sti\",\r\n    \"2o1ha\",\r\n    \"oh1alk\",\r\n    \"o1hä\",\r\n    \"o1he\",\r\n    \"o3he.\",\r\n    \"oh1eis\",\r\n    \"o3hem\",\r\n    \"o3hen.\",\r\n    \"ohen3s\",\r\n    \"o3her.\",\r\n    \"o3here\",\r\n    \"oh1er4t\",\r\n    \"oh1er2z\",\r\n    \"o3hes\",\r\n    \"2o1hi\",\r\n    \"2ohl\",\r\n    \"ohl1a\",\r\n    \"oh2la2d\",\r\n    \"oh2lä\",\r\n    \"oh3lec\",\r\n    \"ohl1ei\",\r\n    \"oh3lep\",\r\n    \"ohler2\",\r\n    \"oh4lerg\",\r\n    \"oh4l3erh\",\r\n    \"oh4lerw\",\r\n    \"oh3lo\",\r\n    \"ohl1o2r\",\r\n    \"ohls2e\",\r\n    \"oh2lu\",\r\n    \"1ohmi\",\r\n    \"ohn1a\",\r\n    \"oh4nac\",\r\n    \"oh3nee\",\r\n    \"oh2ni\",\r\n    \"1ohnm\",\r\n    \"oh2n1o\",\r\n    \"ohn3sk\",\r\n    \"2o1ho\",\r\n    \"oho2l1e\",\r\n    \"ohol1o\",\r\n    \"oh1o2p\",\r\n    \"2ohö\",\r\n    \"oh3öl\",\r\n    \"ohr3a\",\r\n    \"oh2rel\",\r\n    \"oh2rem\",\r\n    \"ohren3s\",\r\n    \"ohrer2\",\r\n    \"oh4rerg\",\r\n    \"oh3ri\",\r\n    \"oh4rin\",\r\n    \"oh2rol\",\r\n    \"ohr5t4r\",\r\n    \"oh1s\",\r\n    \"oh3sa\",\r\n    \"oh3t\",\r\n    \"o1hu\",\r\n    \"oh1w\",\r\n    \"2o1hy\",\r\n    \"2oi\",\r\n    \"o1id.\",\r\n    \"o3i2da\",\r\n    \"o1ids\",\r\n    \"o3ie\",\r\n    \"o1i2m\",\r\n    \"o1in\",\r\n    \"o4ine\",\r\n    \"oi2r\",\r\n    \"o3isch.\",\r\n    \"o4ische\",\r\n    \"o1ism\",\r\n    \"oiss2\",\r\n    \"oi1th\",\r\n    \"o1i4tu\",\r\n    \"2o1j\",\r\n    \"ojek8tori\",\r\n    \"2o1k\",\r\n    \"ok2a\",\r\n    \"oka3b2\",\r\n    \"o2k3ac\",\r\n    \"oka3i\",\r\n    \"oka2la\",\r\n    \"okale2\",\r\n    \"oka6lere\",\r\n    \"okas4t\",\r\n    \"ok2e\",\r\n    \"oki4o\",\r\n    \"ok2la\",\r\n    \"ok3lau\",\r\n    \"ok1lä\",\r\n    \"ok2li\",\r\n    \"ok2o\",\r\n    \"oko4pt\",\r\n    \"ok2so\",\r\n    \"ok2s1p\",\r\n    \"ok5t2\",\r\n    \"3okw\",\r\n    \"2ol\",\r\n    \"o1la\",\r\n    \"ol3abu\",\r\n    \"olaf4\",\r\n    \"o2l1a2m\",\r\n    \"ol1ant\",\r\n    \"ol2ar\",\r\n    \"olar3s2\",\r\n    \"o3l2as\",\r\n    \"olast4\",\r\n    \"ol1a2v\",\r\n    \"4o1lä\",\r\n    \"ol1ät\",\r\n    \"ol2chr\",\r\n    \"ol4d1am\",\r\n    \"ol2dä\",\r\n    \"ol2d1ed\",\r\n    \"ol4d3eng\",\r\n    \"old5ersa\",\r\n    \"olde2s\",\r\n    \"ol2deu\",\r\n    \"ol2dim\",\r\n    \"ol2d3o\",\r\n    \"ol2dr\",\r\n    \"4o3le.\",\r\n    \"o2l1ef\",\r\n    \"ol1eie\",\r\n    \"o2l1eis\",\r\n    \"ol1emb\",\r\n    \"oler2\",\r\n    \"ol1erk\",\r\n    \"ol1er3t\",\r\n    \"ole3s\",\r\n    \"ol1ess\",\r\n    \"ole2st\",\r\n    \"ole4sti\",\r\n    \"ole3u2\",\r\n    \"ol1exz\",\r\n    \"ol2fa\",\r\n    \"ol2fem\",\r\n    \"olf3ere\",\r\n    \"ol2f3l\",\r\n    \"olf1r\",\r\n    \"ol2f3ra\",\r\n    \"olft4\",\r\n    \"olgege3\",\r\n    \"olge4ne\",\r\n    \"ol2gl\",\r\n    \"ol2gr\",\r\n    \"ol2i\",\r\n    \"olie4n1\",\r\n    \"oli2er\",\r\n    \"oli3k4\",\r\n    \"oli5tu\",\r\n    \"3oliv\",\r\n    \"ol3ke\",\r\n    \"ol2kl\",\r\n    \"ol2k3re\",\r\n    \"ol2kro\",\r\n    \"olks3\",\r\n    \"olk4sc\",\r\n    \"olk4si\",\r\n    \"ol2l1ac\",\r\n    \"ol2l1ad\",\r\n    \"ol2l1ak\",\r\n    \"oll3am\",\r\n    \"ol4lang\",\r\n    \"ol2l1au\",\r\n    \"ol2l1e2b\",\r\n    \"ol4l1e2c\",\r\n    \"ol2l1ei\",\r\n    \"ol2lel\",\r\n    \"ol4l3erh\",\r\n    \"ol4ler4k\",\r\n    \"oll3erl\",\r\n    \"ol4l3erw\",\r\n    \"ol4l3ess\",\r\n    \"ol2lop\",\r\n    \"oll3s2a\",\r\n    \"oll3sp\",\r\n    \"4olo\",\r\n    \"ol2of\",\r\n    \"olo1p\",\r\n    \"ol1ort\",\r\n    \"ol2ov\",\r\n    \"ol3s2k\",\r\n    \"ol4ster\",\r\n    \"ol3t2h\",\r\n    \"o1lu\",\r\n    \"olu2th\",\r\n    \"ol2y\",\r\n    \"4o3lys\",\r\n    \"ol2z1a2\",\r\n    \"ol3zan\",\r\n    \"ol4z3ern\",\r\n    \"ol2zim\",\r\n    \"ol2zo\",\r\n    \"ol2zw\",\r\n    \"ol2zy\",\r\n    \"2om\",\r\n    \"o2mab\",\r\n    \"oma2bl\",\r\n    \"o2m1a2ge\",\r\n    \"om1alg\",\r\n    \"om1all\",\r\n    \"oma4n3er\",\r\n    \"o2m1ang\",\r\n    \"om2anr\",\r\n    \"om3ansc\",\r\n    \"o4mante\",\r\n    \"o2m1ap\",\r\n    \"o2m1ar4s\",\r\n    \"o2m1art\",\r\n    \"omar4te\",\r\n    \"o4ma2sy\",\r\n    \"omat2i\",\r\n    \"o4matom\",\r\n    \"o2m1au\",\r\n    \"o2meb\",\r\n    \"om1ebe\",\r\n    \"o2m1ef\",\r\n    \"o2m1ei\",\r\n    \"o2mel\",\r\n    \"o3meld\",\r\n    \"omen5t6an\",\r\n    \"o4mep\",\r\n    \"omer2\",\r\n    \"om1erh\",\r\n    \"o2meru\",\r\n    \"om1erz\",\r\n    \"omi2c3\",\r\n    \"omiet1\",\r\n    \"o3mig\",\r\n    \"om1ind\",\r\n    \"om1ing\",\r\n    \"om1ins\",\r\n    \"o2m1int\",\r\n    \"om3ma\",\r\n    \"omm2e\",\r\n    \"3o4mn\",\r\n    \"4omo\",\r\n    \"o2m3oa\",\r\n    \"o2m1org\",\r\n    \"om1o2ri\",\r\n    \"om3pf\",\r\n    \"oms2\",\r\n    \"om3sk\",\r\n    \"om3t2\",\r\n    \"o2mum\",\r\n    \"o4munt\",\r\n    \"2ona\",\r\n    \"on3a2b\",\r\n    \"on2ac\",\r\n    \"ona3g\",\r\n    \"o3nal\",\r\n    \"on3ann\",\r\n    \"onan6z5ei\",\r\n    \"o2n1ap\",\r\n    \"o2n3arb\",\r\n    \"ona3th\",\r\n    \"4onatol\",\r\n    \"onat2s\",\r\n    \"o4n3at4t\",\r\n    \"on2au\",\r\n    \"2onä\",\r\n    \"on1äh\",\r\n    \"2onc\",\r\n    \"on2dan\",\r\n    \"onde8rers\",\r\n    \"onderer7t\",\r\n    \"ond1r\",\r\n    \"on2dra\",\r\n    \"on4drin\",\r\n    \"ond3sk\",\r\n    \"2one\",\r\n    \"on1ec\",\r\n    \"one2ck\",\r\n    \"o3nee\",\r\n    \"o2nef\",\r\n    \"o3neig\",\r\n    \"on3ein\",\r\n    \"on1ema\",\r\n    \"one2n1\",\r\n    \"o4n3ends\",\r\n    \"on2eng\",\r\n    \"onen3s2\",\r\n    \"on1ep\",\r\n    \"o3ner.\",\r\n    \"on1erb\",\r\n    \"o2n1erd\",\r\n    \"oner4fa\",\r\n    \"o2nerh\",\r\n    \"on4erka\",\r\n    \"on1ers\",\r\n    \"o3nes\",\r\n    \"o3nett\",\r\n    \"on2eu\",\r\n    \"on3f2\",\r\n    \"on3gl\",\r\n    \"ong4le\",\r\n    \"ong4r\",\r\n    \"ong3s2\",\r\n    \"on2gue\",\r\n    \"4o3ni\",\r\n    \"on2i3d\",\r\n    \"onie3g\",\r\n    \"oni2ga\",\r\n    \"on4ik\",\r\n    \"o4nikr\",\r\n    \"o4nim\",\r\n    \"o4nind\",\r\n    \"o4ninh\",\r\n    \"o4nins\",\r\n    \"on3k4\",\r\n    \"3onke\",\r\n    \"onli4\",\r\n    \"onlo2c\",\r\n    \"onna2\",\r\n    \"on3n2an\",\r\n    \"on3n2e\",\r\n    \"2ono1\",\r\n    \"o3nod\",\r\n    \"o2nof\",\r\n    \"ono2i\",\r\n    \"o2n3oke\",\r\n    \"o3nom\",\r\n    \"on1orc\",\r\n    \"on3ord\",\r\n    \"ono3s\",\r\n    \"ono3t2\",\r\n    \"onrad3\",\r\n    \"ons1a\",\r\n    \"on4sam\",\r\n    \"on2seb\",\r\n    \"onsen1\",\r\n    \"onse4t\",\r\n    \"onsi2d\",\r\n    \"ons3ing\",\r\n    \"ons3l\",\r\n    \"ons1p\",\r\n    \"on4spin\",\r\n    \"onst2a\",\r\n    \"onst4r\",\r\n    \"ons5tri\",\r\n    \"on3ta\",\r\n    \"on2t1eb\",\r\n    \"on2te2l\",\r\n    \"ont5end\",\r\n    \"on4t3erl\",\r\n    \"on2th\",\r\n    \"on4t3rat\",\r\n    \"2onuk\",\r\n    \"o3nur\",\r\n    \"2onut\",\r\n    \"on3v\",\r\n    \"1ony\",\r\n    \"o3ny.\",\r\n    \"on3z2\",\r\n    \"onze3in\",\r\n    \"o1ñ\",\r\n    \"oo1c\",\r\n    \"ooch2\",\r\n    \"oo2gl\",\r\n    \"oo2k3l\",\r\n    \"oo2kn\",\r\n    \"oo2mo\",\r\n    \"oo2ne\",\r\n    \"o1op\",\r\n    \"oop2s\",\r\n    \"o1or\",\r\n    \"oor3d\",\r\n    \"oo4sk\",\r\n    \"oos3s4\",\r\n    \"oo2su\",\r\n    \"oo2t1a\",\r\n    \"oo4t1ei\",\r\n    \"oo2t1h\",\r\n    \"oo2tr\",\r\n    \"oot2st\",\r\n    \"oot3t\",\r\n    \"oo2tur\",\r\n    \"2o1ö2\",\r\n    \"2op.\",\r\n    \"o1pa\",\r\n    \"op3adr\",\r\n    \"op1akt\",\r\n    \"opa2le\",\r\n    \"op1ang\",\r\n    \"opa5s\",\r\n    \"opa3s4t\",\r\n    \"2opä\",\r\n    \"1ope\",\r\n    \"o1pec\",\r\n    \"2o1ped\",\r\n    \"op1ef\",\r\n    \"2o1pei\",\r\n    \"o1pek\",\r\n    \"2opel\",\r\n    \"2open\",\r\n    \"2opep\",\r\n    \"o2pera\",\r\n    \"op1erh\",\r\n    \"o1pes\",\r\n    \"2opf.\",\r\n    \"op2f3a\",\r\n    \"op3fah\",\r\n    \"op2fä\",\r\n    \"o2pfe\",\r\n    \"op2fem\",\r\n    \"op2fin\",\r\n    \"opf3la\",\r\n    \"op1flü\",\r\n    \"op2fo\",\r\n    \"4oph2\",\r\n    \"o3phe\",\r\n    \"o1pi\",\r\n    \"opi5a4\",\r\n    \"opi3er.\",\r\n    \"opi5ers.\",\r\n    \"opie4r3u\",\r\n    \"opin2\",\r\n    \"2opl\",\r\n    \"op3lag\",\r\n    \"o2p5le\",\r\n    \"o3p2n\",\r\n    \"2opo\",\r\n    \"opo2la\",\r\n    \"op2pan\",\r\n    \"op4pl\",\r\n    \"1oppo\",\r\n    \"op2p3r\",\r\n    \"2oppt\",\r\n    \"2o1pr\",\r\n    \"3o4psi\",\r\n    \"op3sz\",\r\n    \"1opt4\",\r\n    \"2opte\",\r\n    \"op3th\",\r\n    \"o2pum\",\r\n    \"2opy\",\r\n    \"2o1q\",\r\n    \"2or.\",\r\n    \"or1a\",\r\n    \"2ora.\",\r\n    \"o1raa\",\r\n    \"2or3a2b\",\r\n    \"o2rabb\",\r\n    \"o2r3add\",\r\n    \"or3adr\",\r\n    \"o1r2ag\",\r\n    \"o2rak\",\r\n    \"1orake\",\r\n    \"o1ral\",\r\n    \"o4r3alm\",\r\n    \"or4alt\",\r\n    \"or2am\",\r\n    \"or3a2mi\",\r\n    \"o1ran3d\",\r\n    \"or4ane\",\r\n    \"oran2f\",\r\n    \"oran2m\",\r\n    \"oran4ze\",\r\n    \"or3ap\",\r\n    \"2orar\",\r\n    \"o1r2as\",\r\n    \"o2ratt\",\r\n    \"2orau4\",\r\n    \"oraus6wa\",\r\n    \"or2av\",\r\n    \"2o1raw\",\r\n    \"o1ray\",\r\n    \"o3rä\",\r\n    \"or1änd\",\r\n    \"or1ät\",\r\n    \"orb2l\",\r\n    \"or1c\",\r\n    \"2orca\",\r\n    \"or2ce\",\r\n    \"2ord.\",\r\n    \"4orda\",\r\n    \"ord1am\",\r\n    \"or2dar\",\r\n    \"or2dau\",\r\n    \"2ordb\",\r\n    \"ord3eng\",\r\n    \"orde4s\",\r\n    \"or2deu\",\r\n    \"or4d3ing\",\r\n    \"or2d1ir\",\r\n    \"or2dit\",\r\n    \"1ordn\",\r\n    \"or2do2\",\r\n    \"2ordr\",\r\n    \"ord3s2t\",\r\n    \"ord3t\",\r\n    \"2ordu\",\r\n    \"2ordw\",\r\n    \"2ore\",\r\n    \"ore2a\",\r\n    \"o2r1e2b\",\r\n    \"o2r1e2ck\",\r\n    \"ore2di\",\r\n    \"o5ree\",\r\n    \"o3ref\",\r\n    \"or1eff\",\r\n    \"ore2h\",\r\n    \"or1ei\",\r\n    \"o3rei.\",\r\n    \"o3reie\",\r\n    \"o3r2eif\",\r\n    \"o3r2eis\",\r\n    \"oreli1\",\r\n    \"orems2\",\r\n    \"o3renn\",\r\n    \"o3rep\",\r\n    \"o2r1er\",\r\n    \"o3r2ere\",\r\n    \"o3r2ero\",\r\n    \"ore4th\",\r\n    \"o2r1eu\",\r\n    \"2orf\",\r\n    \"or2fac\",\r\n    \"or2far\",\r\n    \"org4a\",\r\n    \"org2e\",\r\n    \"2orget\",\r\n    \"or3ghi\",\r\n    \"2orgia\",\r\n    \"or2gl\",\r\n    \"or3gla\",\r\n    \"or3gle\",\r\n    \"or2gn\",\r\n    \"or3gne\",\r\n    \"2orgr\",\r\n    \"2orh\",\r\n    \"2o3ria\",\r\n    \"2o3r2id\",\r\n    \"orid3i\",\r\n    \"4o3rie.\",\r\n    \"o3rien.\",\r\n    \"o6rienti\",\r\n    \"o3rier\",\r\n    \"o3ril\",\r\n    \"or1ima\",\r\n    \"ori4mi\",\r\n    \"2o3rin1\",\r\n    \"o4r1ind\",\r\n    \"o4rins\",\r\n    \"2or4io\",\r\n    \"o2riso\",\r\n    \"2orit\",\r\n    \"2ork\",\r\n    \"ork4r\",\r\n    \"ork2s\",\r\n    \"ork3sh\",\r\n    \"2orm\",\r\n    \"or2mam\",\r\n    \"or4mang\",\r\n    \"or4mans\",\r\n    \"orm3asp\",\r\n    \"or2m1eb\",\r\n    \"or4m3erf\",\r\n    \"or4m3er4g\",\r\n    \"or2mor\",\r\n    \"orm3ord\",\r\n    \"or2mum\",\r\n    \"ormu4n\",\r\n    \"or4muni\",\r\n    \"or4munt\",\r\n    \"ormwa5\",\r\n    \"or2n1a2c\",\r\n    \"or2nal\",\r\n    \"or2nan\",\r\n    \"or2nar\",\r\n    \"or5ne.\",\r\n    \"or3ni\",\r\n    \"or4nin\",\r\n    \"or3no1\",\r\n    \"2o1ro\",\r\n    \"o2r1ob\",\r\n    \"or3oly\",\r\n    \"oro3n2a\",\r\n    \"or1opf\",\r\n    \"o2ro2r\",\r\n    \"o3rou\",\r\n    \"or1ox\",\r\n    \"2o1rö\",\r\n    \"2orp\",\r\n    \"2orq\",\r\n    \"2orr\",\r\n    \"orr4a\",\r\n    \"or3r2e\",\r\n    \"2ors2\",\r\n    \"or3s4a\",\r\n    \"or3sh\",\r\n    \"or3si\",\r\n    \"or3sk\",\r\n    \"ors4tin\",\r\n    \"or3sz\",\r\n    \"or2t1ak\",\r\n    \"or2t1an\",\r\n    \"orta2r\",\r\n    \"or2tef\",\r\n    \"orte4n\",\r\n    \"or4ten5g\",\r\n    \"ort3erb\",\r\n    \"or4t3ere\",\r\n    \"ort3erf\",\r\n    \"ort3erg\",\r\n    \"or4terk\",\r\n    \"or4t3erl\",\r\n    \"orter6sc\",\r\n    \"or2t3e2v\",\r\n    \"or2the\",\r\n    \"or2tin\",\r\n    \"or4t3off\",\r\n    \"or4t1o2r\",\r\n    \"or2tö\",\r\n    \"ort3rad\",\r\n    \"or4trau\",\r\n    \"or4t3räu\",\r\n    \"ort3re\",\r\n    \"or2t1um\",\r\n    \"2o3ru\",\r\n    \"or2uf\",\r\n    \"or1uh\",\r\n    \"orum4s\",\r\n    \"o4r3un\",\r\n    \"oru2r\",\r\n    \"o5rus\",\r\n    \"o2rü\",\r\n    \"or3z2e\",\r\n    \"orzel5\",\r\n    \"or2zw\",\r\n    \"2o3s2a\",\r\n    \"os3ad\",\r\n    \"osal2\",\r\n    \"o4s3ami\",\r\n    \"osa1s\",\r\n    \"2osc\",\r\n    \"o4s3ca\",\r\n    \"osch3ar\",\r\n    \"o3sche\",\r\n    \"osch3le\",\r\n    \"os4co\",\r\n    \"2ose\",\r\n    \"ose1e\",\r\n    \"ose1in2\",\r\n    \"os2el\",\r\n    \"ose2n\",\r\n    \"o2s1er2k\",\r\n    \"os2ex\",\r\n    \"2osh\",\r\n    \"o3s2hi\",\r\n    \"os2ho\",\r\n    \"os4hu\",\r\n    \"2osi\",\r\n    \"os4it\",\r\n    \"o3sk\",\r\n    \"os2kal\",\r\n    \"o4ski\",\r\n    \"2os2kl\",\r\n    \"2os2ko\",\r\n    \"o4skr\",\r\n    \"o4sky\",\r\n    \"1osm\",\r\n    \"os4mog\",\r\n    \"2oso\",\r\n    \"osol1\",\r\n    \"o2sö\",\r\n    \"2os1p\",\r\n    \"os2pac\",\r\n    \"os2pe\",\r\n    \"os3pec\",\r\n    \"os3pero\",\r\n    \"o3sphä\",\r\n    \"o3s2po\",\r\n    \"os4pot\",\r\n    \"os2pra\",\r\n    \"2oss\",\r\n    \"os2sa\",\r\n    \"os6s3a2c\",\r\n    \"os3sag\",\r\n    \"oss3ala\",\r\n    \"oss3and\",\r\n    \"os4sä\",\r\n    \"os2sei\",\r\n    \"oss5enke\",\r\n    \"os4s3enz\",\r\n    \"os2s1ep\",\r\n    \"os4s3er4b\",\r\n    \"osser4e\",\r\n    \"os4ser4f\",\r\n    \"os4sik\",\r\n    \"os4sim\",\r\n    \"os2s1o2\",\r\n    \"os4son\",\r\n    \"os2sp\",\r\n    \"oss1pa\",\r\n    \"os2s3t\",\r\n    \"ost1a\",\r\n    \"ost3ang\",\r\n    \"os5tarr\",\r\n    \"ost4art\",\r\n    \"os4tat\",\r\n    \"ost3aut\",\r\n    \"os4tä\",\r\n    \"oste2c\",\r\n    \"oste2n\",\r\n    \"oster3e\",\r\n    \"ost5erwe\",\r\n    \"oster8wei\",\r\n    \"ostes5s\",\r\n    \"os4teu\",\r\n    \"ost3eur\",\r\n    \"os2t1h\",\r\n    \"os2tid\",\r\n    \"os3til\",\r\n    \"os4tim\",\r\n    \"os2tin\",\r\n    \"os3tina\",\r\n    \"os2tit\",\r\n    \"os3toc\",\r\n    \"os4tor\",\r\n    \"ost3ran\",\r\n    \"ost3rä\",\r\n    \"ost3re\",\r\n    \"ost3rot\",\r\n    \"ost3uf\",\r\n    \"os2tug\",\r\n    \"os4tüc\",\r\n    \"2osu4\",\r\n    \"os1um\",\r\n    \"2o3sy\",\r\n    \"o3s4ze\",\r\n    \"2oß\",\r\n    \"o2ß1el\",\r\n    \"o2ß1ent\",\r\n    \"o2ß1en2z\",\r\n    \"oßer2\",\r\n    \"o2ß1erb\",\r\n    \"o2ß1ere\",\r\n    \"o2ß1erf\",\r\n    \"oß1is\",\r\n    \"2o1t\",\r\n    \"o3tabe\",\r\n    \"o2t3abi\",\r\n    \"o2t1ah\",\r\n    \"o2t1ak\",\r\n    \"o3tal\",\r\n    \"o3tam\",\r\n    \"ot1ant\",\r\n    \"o3tark\",\r\n    \"o2tarz\",\r\n    \"ota2s\",\r\n    \"ot1ast\",\r\n    \"o2t1au\",\r\n    \"o3tau.\",\r\n    \"ot1ä\",\r\n    \"o3te\",\r\n    \"o4teb\",\r\n    \"ote1i\",\r\n    \"o4t1eib\",\r\n    \"o4t1eic\",\r\n    \"otei4n\",\r\n    \"o4t1eis\",\r\n    \"ot2el\",\r\n    \"ote4l1a\",\r\n    \"ote4lin\",\r\n    \"otel3s2\",\r\n    \"o4t1emi\",\r\n    \"ot2em3p2\",\r\n    \"ote4na\",\r\n    \"o4tentb\",\r\n    \"ot1erb\",\r\n    \"o4t1er2l\",\r\n    \"o4t1erw\",\r\n    \"ot2e2s\",\r\n    \"ot2har\",\r\n    \"o2them\",\r\n    \"o2t1hi\",\r\n    \"o2thr\",\r\n    \"4oti\",\r\n    \"o2til\",\r\n    \"o2t1i2m\",\r\n    \"ot2in\",\r\n    \"ot3inh\",\r\n    \"otli4\",\r\n    \"ot2o\",\r\n    \"oto3b4\",\r\n    \"ot3off\",\r\n    \"oto2ph\",\r\n    \"o2t1ö\",\r\n    \"otra3c\",\r\n    \"o3t4ran\",\r\n    \"ot3rat\",\r\n    \"ot4rau\",\r\n    \"ot3re\",\r\n    \"ot3ric\",\r\n    \"ot4rig\",\r\n    \"ot3rin\",\r\n    \"ot3rus\",\r\n    \"ot2s3at\",\r\n    \"ot3sch\",\r\n    \"ots2en\",\r\n    \"ots1o\",\r\n    \"ots1p\",\r\n    \"ots2pe\",\r\n    \"ot2spr\",\r\n    \"ots3tau\",\r\n    \"ot3sti\",\r\n    \"ot3stra\",\r\n    \"ot2su\",\r\n    \"ott1a\",\r\n    \"ot4tan\",\r\n    \"ot4ta2s\",\r\n    \"ot2teb\",\r\n    \"ot4terh\",\r\n    \"ot4ter4k\",\r\n    \"otte2s\",\r\n    \"ot2t1h\",\r\n    \"ot2tim\",\r\n    \"ott2o\",\r\n    \"ot2t3r\",\r\n    \"ot3t4ra\",\r\n    \"ot4tri\",\r\n    \"ot3t4ru\",\r\n    \"ot1url\",\r\n    \"o3tü\",\r\n    \"ouff6\",\r\n    \"ou1f4l\",\r\n    \"oug2\",\r\n    \"ou4ge\",\r\n    \"ou3gl\",\r\n    \"o1uh\",\r\n    \"ou1is.\",\r\n    \"2oul\",\r\n    \"ou2le.\",\r\n    \"ou2les\",\r\n    \"ou4li\",\r\n    \"2o1um\",\r\n    \"2o2u2n\",\r\n    \"oun4ge.\",\r\n    \"4our\",\r\n    \"oure2\",\r\n    \"ou2ret\",\r\n    \"ouri4\",\r\n    \"ourie4\",\r\n    \"ourme4\",\r\n    \"our4ne.\",\r\n    \"ou3sa\",\r\n    \"ous2i\",\r\n    \"ou3ti\",\r\n    \"3outp\",\r\n    \"out3s2\",\r\n    \"ou3tu4\",\r\n    \"2o1ü\",\r\n    \"o1v\",\r\n    \"ov2a\",\r\n    \"2ovel\",\r\n    \"o3ven\",\r\n    \"ove3s\",\r\n    \"oviso3\",\r\n    \"2ovo\",\r\n    \"2o1w\",\r\n    \"o2w3al\",\r\n    \"o3wec\",\r\n    \"o2wh\",\r\n    \"o3wi\",\r\n    \"o2wu\",\r\n    \"2ox.\",\r\n    \"o1x2a\",\r\n    \"2oxe\",\r\n    \"o2x1el\",\r\n    \"2oxk\",\r\n    \"ox3l\",\r\n    \"o1xo\",\r\n    \"o2x1u\",\r\n    \"1o2xy\",\r\n    \"o1yo\",\r\n    \"oy1s2\",\r\n    \"o1z2\",\r\n    \"o3za\",\r\n    \"1ozea\",\r\n    \"2o3zen\",\r\n    \"ozen4ta\",\r\n    \"ozes4sc\",\r\n    \"4o3zi\",\r\n    \"ozir3\",\r\n    \"ozon1a\",\r\n    \"2ozy\",\r\n    \"oz3z\",\r\n    \"ór3\",\r\n    \"órd2\",\r\n    \"ö1b\",\r\n    \"ö3b4a\",\r\n    \"öb2l\",\r\n    \"ö2b3le\",\r\n    \"ö2b3r\",\r\n    \"öb2s3\",\r\n    \"ö1c\",\r\n    \"öch1l\",\r\n    \"ö2chr\",\r\n    \"öch2s\",\r\n    \"öch4ste\",\r\n    \"öchst5ei\",\r\n    \"öchst3r\",\r\n    \"öchs4tu\",\r\n    \"ö3cke\",\r\n    \"ö1d\",\r\n    \"ödel3l\",\r\n    \"öde1r\",\r\n    \"ödi3\",\r\n    \"ödien3\",\r\n    \"öd2st\",\r\n    \"1ödu\",\r\n    \"ö1e\",\r\n    \"1öf\",\r\n    \"öf2fl\",\r\n    \"öf3l\",\r\n    \"ö1g\",\r\n    \"öge3le\",\r\n    \"ögen2s1\",\r\n    \"ö2g3l\",\r\n    \"ö2g3r\",\r\n    \"ö1he\",\r\n    \"öhe4n1\",\r\n    \"öhl2e4\",\r\n    \"öhre4\",\r\n    \"öh3ri\",\r\n    \"ö1hu\",\r\n    \"ö3ig.\",\r\n    \"ö3isch.\",\r\n    \"ö1ke\",\r\n    \"1ö2k2o3\",\r\n    \"ök3r\",\r\n    \"ök2s\",\r\n    \"ö2l\",\r\n    \"3öl.\",\r\n    \"öl1a2\",\r\n    \"öl1ei\",\r\n    \"öl1em\",\r\n    \"öl4en\",\r\n    \"öl2f1ei\",\r\n    \"ölf2er\",\r\n    \"öl1in\",\r\n    \"ölk4e\",\r\n    \"öl2k3l\",\r\n    \"ölks4\",\r\n    \"öll1a\",\r\n    \"öl3le\",\r\n    \"3ölm\",\r\n    \"öl2nar\",\r\n    \"öl1o2\",\r\n    \"öls2\",\r\n    \"öl3sa\",\r\n    \"öl3sz\",\r\n    \"öl3tu\",\r\n    \"1ölu\",\r\n    \"ölz2w\",\r\n    \"ö1m\",\r\n    \"öm2s\",\r\n    \"ön2e\",\r\n    \"ö3ni\",\r\n    \"önizi1\",\r\n    \"önn2e\",\r\n    \"ön2s\",\r\n    \"ön3sc\",\r\n    \"ön3sp\",\r\n    \"öo1\",\r\n    \"öo2ta\",\r\n    \"öoti1\",\r\n    \"2öp\",\r\n    \"ö1pe\",\r\n    \"öpf3l\",\r\n    \"öp4s3t\",\r\n    \"ör3a2\",\r\n    \"ör2b3l\",\r\n    \"ör1c\",\r\n    \"ör2dr\",\r\n    \"ör3dra\",\r\n    \"ö2r1ec\",\r\n    \"ö2r1ei\",\r\n    \"ö2r1e2l\",\r\n    \"ö2r1e2m\",\r\n    \"öre2n\",\r\n    \"ö2r1ene\",\r\n    \"ö2rent\",\r\n    \"ö3r2erb\",\r\n    \"ö2r1er2e\",\r\n    \"ö2rer2f\",\r\n    \"ö2rer2g\",\r\n    \"ör2erh\",\r\n    \"ö2rer2l\",\r\n    \"ör2err\",\r\n    \"ör2erw\",\r\n    \"ö3r2erz\",\r\n    \"ör1ess\",\r\n    \"ör2f3l\",\r\n    \"ör2gl\",\r\n    \"ö2rim\",\r\n    \"ör2kl\",\r\n    \"örn2e\",\r\n    \"örner4v\",\r\n    \"ör1o\",\r\n    \"örpe2\",\r\n    \"örs2e\",\r\n    \"ör3sk\",\r\n    \"ört2e\",\r\n    \"ör5tri\",\r\n    \"öru4\",\r\n    \"ö2r1une\",\r\n    \"ö2sa\",\r\n    \"2ösc\",\r\n    \"ö2sch3a\",\r\n    \"ösche2\",\r\n    \"ö4sch3ei\",\r\n    \"öscher4\",\r\n    \"ö6sch5erf\",\r\n    \"ö6sch5eri\",\r\n    \"ö2schi\",\r\n    \"ö2sch1l\",\r\n    \"ö2sch3m\",\r\n    \"ö2schn\",\r\n    \"ö2schw\",\r\n    \"ös1ei\",\r\n    \"ö2sein\",\r\n    \"öse3str\",\r\n    \"ö3set\",\r\n    \"2ösl\",\r\n    \"ö2sp\",\r\n    \"ös2s1c\",\r\n    \"ös2st\",\r\n    \"ö2st\",\r\n    \"öst1a2\",\r\n    \"ös3te\",\r\n    \"ös2th\",\r\n    \"ös3tr\",\r\n    \"ö3su\",\r\n    \"ö1ß\",\r\n    \"ößen3\",\r\n    \"öß2ti\",\r\n    \"ö1t\",\r\n    \"ö4t3a\",\r\n    \"öte4n1\",\r\n    \"ö2t3r\",\r\n    \"öts2\",\r\n    \"öt2sc\",\r\n    \"öt2tr\",\r\n    \"ö1v2\",\r\n    \"ö1w\",\r\n    \"ö1z\",\r\n    \"öze3\",\r\n    \"özes4\",\r\n    \"1pa.\",\r\n    \"1paa\",\r\n    \"p1ab\",\r\n    \"p2abe\",\r\n    \"pab2l\",\r\n    \"pab4rü\",\r\n    \"2pabw\",\r\n    \"1pac\",\r\n    \"1p2ad\",\r\n    \"pae2\",\r\n    \"pa3el\",\r\n    \"pa2es\",\r\n    \"pa1fr\",\r\n    \"1pag4\",\r\n    \"pa3gh\",\r\n    \"pa1ho\",\r\n    \"1pak\",\r\n    \"pa3ke\",\r\n    \"pa1kl\",\r\n    \"pak4to\",\r\n    \"3pala\",\r\n    \"pala3t\",\r\n    \"3palä\",\r\n    \"3pal2e\",\r\n    \"pa3l2i\",\r\n    \"1palm\",\r\n    \"pal2ma\",\r\n    \"pal2mä\",\r\n    \"pal2m1o\",\r\n    \"2palt\",\r\n    \"pal2t1a\",\r\n    \"pal4tei\",\r\n    \"pal2tr\",\r\n    \"pa2m3a\",\r\n    \"pa2nar\",\r\n    \"pa4n3at\",\r\n    \"pan3d\",\r\n    \"pand2a\",\r\n    \"pan4ds\",\r\n    \"pa2neu\",\r\n    \"panf4\",\r\n    \"pang4\",\r\n    \"pa4nisl\",\r\n    \"pank4\",\r\n    \"2panl\",\r\n    \"2pann\",\r\n    \"panne2\",\r\n    \"pan4n3eb\",\r\n    \"4pannu\",\r\n    \"1pa2no\",\r\n    \"pan3sl\",\r\n    \"pan3t2h\",\r\n    \"1panto\",\r\n    \"2pantr\",\r\n    \"panz2\",\r\n    \"pan3ze\",\r\n    \"1pap\",\r\n    \"papi2\",\r\n    \"papieren8\",\r\n    \"papie8r7end\",\r\n    \"pap2pr\",\r\n    \"pap4s\",\r\n    \"papst1\",\r\n    \"pa1q\",\r\n    \"1para\",\r\n    \"pa4r3aff\",\r\n    \"par3akt\",\r\n    \"pa4rant\",\r\n    \"pa3rap\",\r\n    \"pa2rä\",\r\n    \"2parb\",\r\n    \"1p2arc\",\r\n    \"par3d\",\r\n    \"parer8geb\",\r\n    \"1parf\",\r\n    \"2parfö\",\r\n    \"pargel6d\",\r\n    \"1park.\",\r\n    \"park3am\",\r\n    \"par4kau\",\r\n    \"par4kr\",\r\n    \"1parks\",\r\n    \"par3m2\",\r\n    \"par3ne\",\r\n    \"1pa2ro\",\r\n    \"2parp\",\r\n    \"2parr\",\r\n    \"4parta\",\r\n    \"3partei\",\r\n    \"1parti\",\r\n    \"1partn\",\r\n    \"3party\",\r\n    \"par3z\",\r\n    \"pas2e\",\r\n    \"pa3sp\",\r\n    \"pa4spe\",\r\n    \"passer4\",\r\n    \"pas6serg\",\r\n    \"pas2s1p\",\r\n    \"pa4st\",\r\n    \"2paß\",\r\n    \"pat1a\",\r\n    \"pat4c\",\r\n    \"pa5t4e2\",\r\n    \"2patel\",\r\n    \"1pat2h\",\r\n    \"1pati\",\r\n    \"1pa5t4r\",\r\n    \"1pau\",\r\n    \"2p1auf\",\r\n    \"pa3uni\",\r\n    \"2pausz\",\r\n    \"1pav\",\r\n    \"1pä\",\r\n    \"3pä2c\",\r\n    \"pä3cke\",\r\n    \"pä4ck3er\",\r\n    \"3päd\",\r\n    \"päde2\",\r\n    \"pä2d1er\",\r\n    \"3pär\",\r\n    \"3päs\",\r\n    \"pä4t1e2h\",\r\n    \"pä4tent\",\r\n    \"pä4tep\",\r\n    \"pä4t3erb\",\r\n    \"pä2t1h\",\r\n    \"pä2to\",\r\n    \"pä4tr\",\r\n    \"pät3s4\",\r\n    \"2p1b\",\r\n    \"2p3c\",\r\n    \"2p1d2\",\r\n    \"pda4\",\r\n    \"1pe.\",\r\n    \"pe2a2\",\r\n    \"pea4r\",\r\n    \"p1e2b\",\r\n    \"pech1\",\r\n    \"1peda\",\r\n    \"1peel\",\r\n    \"pe2en\",\r\n    \"2pef\",\r\n    \"4p1eff\",\r\n    \"1peg\",\r\n    \"pege2l\",\r\n    \"pei1\",\r\n    \"4peic\",\r\n    \"1peil\",\r\n    \"p2eim\",\r\n    \"2peis\",\r\n    \"1peit\",\r\n    \"pekt2i\",\r\n    \"1p4el\",\r\n    \"3pel.\",\r\n    \"pe4l3ab\",\r\n    \"pe4lai\",\r\n    \"pe2l1au\",\r\n    \"pe2l3ax\",\r\n    \"pe2l1ä\",\r\n    \"pelb2\",\r\n    \"pel3d4\",\r\n    \"3pele\",\r\n    \"pe4l1e2h\",\r\n    \"pe2l1er\",\r\n    \"pe2let\",\r\n    \"pe2leu\",\r\n    \"peli2d\",\r\n    \"peli4n\",\r\n    \"pe4l3ink\",\r\n    \"pel3inn\",\r\n    \"pel4ins\",\r\n    \"pel3k\",\r\n    \"pel3l2a\",\r\n    \"pell4e\",\r\n    \"pell2i\",\r\n    \"pe2lob\",\r\n    \"3pels2\",\r\n    \"pel3sp\",\r\n    \"pel3t2a\",\r\n    \"pel4zin\",\r\n    \"1pem\",\r\n    \"1pen\",\r\n    \"pena2r\",\r\n    \"pe4nas\",\r\n    \"pe2nä\",\r\n    \"pen3d2a\",\r\n    \"pe4nen1\",\r\n    \"pe4ni2t\",\r\n    \"pe2n1o\",\r\n    \"pens2a\",\r\n    \"3pen3si\",\r\n    \"pen3s2o3\",\r\n    \"pens2p\",\r\n    \"pen3sz\",\r\n    \"pent2a\",\r\n    \"2pentw\",\r\n    \"penty2\",\r\n    \"penu2\",\r\n    \"pen3z\",\r\n    \"1pep\",\r\n    \"pe3pi\",\r\n    \"pe1ra\",\r\n    \"pe2rak\",\r\n    \"per2am\",\r\n    \"pe2rau\",\r\n    \"pe2r1ä\",\r\n    \"per1e2b\",\r\n    \"perer2\",\r\n    \"perer3z\",\r\n    \"pe3r2id\",\r\n    \"3pe3r4io\",\r\n    \"1perle\",\r\n    \"1perlh\",\r\n    \"per4r3an\",\r\n    \"1pers\",\r\n    \"2perse\",\r\n    \"2persi\",\r\n    \"3perso\",\r\n    \"3persp\",\r\n    \"peru2\",\r\n    \"pe3run\",\r\n    \"1perü\",\r\n    \"perwa4r\",\r\n    \"pe3s2a\",\r\n    \"pese2n\",\r\n    \"1pes5s2\",\r\n    \"pe2st\",\r\n    \"pes4ter\",\r\n    \"pest1o\",\r\n    \"3pet\",\r\n    \"pet4r\",\r\n    \"1pé\",\r\n    \"4pf.\",\r\n    \"p2f1ab\",\r\n    \"p2fad\",\r\n    \"p2faf\",\r\n    \"pf1ai\",\r\n    \"p2f1ak\",\r\n    \"pf1am\",\r\n    \"pf1ans\",\r\n    \"p2fa2r\",\r\n    \"pf3are\",\r\n    \"p2f1au\",\r\n    \"1pfä\",\r\n    \"p2fär\",\r\n    \"p2f1äu\",\r\n    \"4pfe.\",\r\n    \"p2fef\",\r\n    \"p2fei\",\r\n    \"pf1eim\",\r\n    \"pf1ein\",\r\n    \"pf1e2m\",\r\n    \"p3fen.\",\r\n    \"p4fener\",\r\n    \"p3fens\",\r\n    \"p3fent\",\r\n    \"p4f1ep\",\r\n    \"pfer5a\",\r\n    \"p4ferde\",\r\n    \"pfer6pro\",\r\n    \"pf4es\",\r\n    \"p2f1et\",\r\n    \"pff4\",\r\n    \"p2f1i2d\",\r\n    \"pf1inn\",\r\n    \"p2f1in3s\",\r\n    \"pfi2s\",\r\n    \"pf1lam\",\r\n    \"pf4lan\",\r\n    \"pf4leg\",\r\n    \"pf3lei\",\r\n    \"pf3lo\",\r\n    \"pfo2\",\r\n    \"p2fob\",\r\n    \"p2fom\",\r\n    \"p2for\",\r\n    \"pf1ori\",\r\n    \"pf3r\",\r\n    \"pf1ra\",\r\n    \"pf4rü\",\r\n    \"2pfs2\",\r\n    \"pf3sa\",\r\n    \"pf3se\",\r\n    \"pf3sl\",\r\n    \"pfs4ti\",\r\n    \"pf3sz\",\r\n    \"2pf3t2\",\r\n    \"pft4r\",\r\n    \"p2fum\",\r\n    \"2p3g2\",\r\n    \"pgra2\",\r\n    \"1ph\",\r\n    \"4ph.\",\r\n    \"ph2a\",\r\n    \"phal4te4\",\r\n    \"p1hand\",\r\n    \"3pha1s\",\r\n    \"p1hau\",\r\n    \"phä1\",\r\n    \"3phän\",\r\n    \"4phär\",\r\n    \"4phb\",\r\n    \"2phd\",\r\n    \"2p1hei\",\r\n    \"phen3d2\",\r\n    \"phe4n1e\",\r\n    \"phen3s2\",\r\n    \"2ph1ers\",\r\n    \"4phf\",\r\n    \"4phg\",\r\n    \"p2hid\",\r\n    \"phik1a\",\r\n    \"phi4kan\",\r\n    \"2phk\",\r\n    \"ph2l\",\r\n    \"4phm\",\r\n    \"2phn\",\r\n    \"p2ho.\",\r\n    \"p2hob\",\r\n    \"2phö\",\r\n    \"ph2r\",\r\n    \"4phs\",\r\n    \"ph3t2\",\r\n    \"2phthe\",\r\n    \"phu4s\",\r\n    \"phu3t\",\r\n    \"2p1hü\",\r\n    \"3p2hy\",\r\n    \"4phz\",\r\n    \"p2i2a1\",\r\n    \"piab4\",\r\n    \"pia3k\",\r\n    \"pi4ali\",\r\n    \"pia3n\",\r\n    \"piap2\",\r\n    \"pi1ce\",\r\n    \"pid2\",\r\n    \"pi2e1i\",\r\n    \"pi2el\",\r\n    \"piel3a\",\r\n    \"3pier\",\r\n    \"pie2ra\",\r\n    \"pie4reb\",\r\n    \"pie4rei\",\r\n    \"pi3gl\",\r\n    \"1pil\",\r\n    \"pi3le\",\r\n    \"3pilo\",\r\n    \"pil4zer\",\r\n    \"pil2zw\",\r\n    \"p2im\",\r\n    \"3pin.\",\r\n    \"pi2nad\",\r\n    \"3ping\",\r\n    \"pingen4\",\r\n    \"ping3s\",\r\n    \"3pins.\",\r\n    \"3pinse\",\r\n    \"pin3s2p\",\r\n    \"pi2o\",\r\n    \"pi3oide\",\r\n    \"pi3onu\",\r\n    \"pi3os\",\r\n    \"1pip\",\r\n    \"pi2pe\",\r\n    \"3pirate\",\r\n    \"pi3ri\",\r\n    \"3pirin\",\r\n    \"1pis\",\r\n    \"2piso\",\r\n    \"pit2a\",\r\n    \"pi3t2h\",\r\n    \"pit2s\",\r\n    \"pit3z2e\",\r\n    \"pi2z1in\",\r\n    \"2p1j\",\r\n    \"2p1k2\",\r\n    \"pku2\",\r\n    \"1p2l2\",\r\n    \"2pl.\",\r\n    \"3pla\",\r\n    \"4p3lad\",\r\n    \"p1lah\",\r\n    \"pla3na\",\r\n    \"p4lau\",\r\n    \"pla2y1\",\r\n    \"2p3le.\",\r\n    \"ple1c\",\r\n    \"ple2e\",\r\n    \"p4leg\",\r\n    \"ple3n2\",\r\n    \"2p3ler\",\r\n    \"p4leu\",\r\n    \"2plig\",\r\n    \"3p4lik\",\r\n    \"p4liz\",\r\n    \"plo3n\",\r\n    \"2p3lu\",\r\n    \"plu2s\",\r\n    \"2p3m2\",\r\n    \"2p1n2\",\r\n    \"1p2o\",\r\n    \"pob2\",\r\n    \"2po1c\",\r\n    \"3pock\",\r\n    \"3pod\",\r\n    \"3poe\",\r\n    \"po2el\",\r\n    \"2poh\",\r\n    \"po2i\",\r\n    \"po3id.\",\r\n    \"po3ids\",\r\n    \"3poin\",\r\n    \"3pol\",\r\n    \"po2lan\",\r\n    \"po2l1au\",\r\n    \"pold2e\",\r\n    \"po3li\",\r\n    \"po3lo3p\",\r\n    \"pol3z2\",\r\n    \"pom2ph\",\r\n    \"2pond\",\r\n    \"pont2\",\r\n    \"po1ob\",\r\n    \"po2p1ak\",\r\n    \"po2p1ar\",\r\n    \"po2p3l\",\r\n    \"po3p2t\",\r\n    \"po1rau\",\r\n    \"porf4\",\r\n    \"por3s\",\r\n    \"3portal\",\r\n    \"por2t1h\",\r\n    \"3portio\",\r\n    \"3porto.\",\r\n    \"3portos\",\r\n    \"3portr\",\r\n    \"por4tre\",\r\n    \"3posi\",\r\n    \"poss2\",\r\n    \"po2sta\",\r\n    \"pos4tag\",\r\n    \"po2stä\",\r\n    \"post3ei\",\r\n    \"pos3tel\",\r\n    \"pos4tem\",\r\n    \"pos4tr\",\r\n    \"post3ra\",\r\n    \"po2ta\",\r\n    \"pot1ar\",\r\n    \"3potä\",\r\n    \"3pote\",\r\n    \"pot2h\",\r\n    \"po2t3in\",\r\n    \"pott1r\",\r\n    \"po2t1u\",\r\n    \"po3un\",\r\n    \"po2w\",\r\n    \"powe2\",\r\n    \"po3x\",\r\n    \"pö2bl\",\r\n    \"pö2c\",\r\n    \"4p1p\",\r\n    \"p2pab\",\r\n    \"pp1ans\",\r\n    \"p2pat\",\r\n    \"pp1au\",\r\n    \"ppe3e\",\r\n    \"p2p1ei\",\r\n    \"ppe2l1a\",\r\n    \"ppeli5ne\",\r\n    \"ppel3s\",\r\n    \"pp2e2n1\",\r\n    \"p2p1erz\",\r\n    \"p2pf4\",\r\n    \"pp1fr\",\r\n    \"p2p1h\",\r\n    \"pp3he\",\r\n    \"pp3l\",\r\n    \"p4p1lac\",\r\n    \"p4plan\",\r\n    \"p2p1lä\",\r\n    \"p2ple\",\r\n    \"pp3oh\",\r\n    \"p2p1ö4\",\r\n    \"pp3p4\",\r\n    \"p2p3ra\",\r\n    \"p2p5rä\",\r\n    \"p2pri\",\r\n    \"pp3rol\",\r\n    \"pp3rot\",\r\n    \"p2p3ru\",\r\n    \"p4ps\",\r\n    \"pp3s4a\",\r\n    \"pps2p\",\r\n    \"pp3sy\",\r\n    \"ppt4\",\r\n    \"p4p1um\",\r\n    \"ppyl2\",\r\n    \"p2r4\",\r\n    \"1prak\",\r\n    \"1prax\",\r\n    \"p4rä\",\r\n    \"1präd\",\r\n    \"1präf\",\r\n    \"1präg\",\r\n    \"1präl\",\r\n    \"3präm\",\r\n    \"1präp\",\r\n    \"3präs\",\r\n    \"1präv\",\r\n    \"2pre.\",\r\n    \"2prec\",\r\n    \"3pred\",\r\n    \"2pree1\",\r\n    \"pre2ei\",\r\n    \"2preg\",\r\n    \"1prei\",\r\n    \"3preis\",\r\n    \"prei4s3c\",\r\n    \"prei6sei\",\r\n    \"prei4s5t\",\r\n    \"2preiz\",\r\n    \"1prem\",\r\n    \"pren4ga\",\r\n    \"2p3rer\",\r\n    \"1pres\",\r\n    \"pre3sa\",\r\n    \"press4e\",\r\n    \"pri4e\",\r\n    \"2prig\",\r\n    \"pri2l1\",\r\n    \"2pring\",\r\n    \"prings4\",\r\n    \"1prinz\",\r\n    \"pri2t1\",\r\n    \"priter4\",\r\n    \"prit5t4\",\r\n    \"2pritz\",\r\n    \"1priv\",\r\n    \"1pro\",\r\n    \"3prob\",\r\n    \"pro3be\",\r\n    \"2proc\",\r\n    \"7p4rod\",\r\n    \"3p4rog\",\r\n    \"3proj\",\r\n    \"4pross\",\r\n    \"pro1st\",\r\n    \"prot2e\",\r\n    \"3proto\",\r\n    \"2prott\",\r\n    \"pro3x\",\r\n    \"2prö\",\r\n    \"1prüf\",\r\n    \"1prüg\",\r\n    \"2prüh\",\r\n    \"2prün\",\r\n    \"2p1s\",\r\n    \"4ps.\",\r\n    \"ps1ad\",\r\n    \"ps2hi\",\r\n    \"ps1od\",\r\n    \"p2sö\",\r\n    \"ps4pi\",\r\n    \"pss4\",\r\n    \"p2st\",\r\n    \"p3sta\",\r\n    \"pst1au\",\r\n    \"p3stä\",\r\n    \"p3stea\",\r\n    \"p3stel\",\r\n    \"ps2th\",\r\n    \"p3s2ti\",\r\n    \"ps4to\",\r\n    \"p3stö\",\r\n    \"ps2tu\",\r\n    \"p3stü\",\r\n    \"3p2sy\",\r\n    \"4psys\",\r\n    \"ps2ze\",\r\n    \"2p1t\",\r\n    \"pt1a\",\r\n    \"pt2ab\",\r\n    \"pta2g\",\r\n    \"p2t3a4t\",\r\n    \"p2t1e2b\",\r\n    \"pt3ec\",\r\n    \"pt1ef\",\r\n    \"pt1ei\",\r\n    \"pt1emi\",\r\n    \"4pten\",\r\n    \"p4t1en2g\",\r\n    \"p4t1ent\",\r\n    \"pt1ep\",\r\n    \"pt3erei\",\r\n    \"pt1erw\",\r\n    \"pt1erz\",\r\n    \"p3tet\",\r\n    \"p4teta\",\r\n    \"p4t1e2ti\",\r\n    \"p2t1h\",\r\n    \"pt1id\",\r\n    \"pti2de\",\r\n    \"pt1in1\",\r\n    \"pto2mo\",\r\n    \"pto4na\",\r\n    \"pto2p\",\r\n    \"pto2w\",\r\n    \"pt3r\",\r\n    \"p2tro\",\r\n    \"pt3s2\",\r\n    \"pt4sl\",\r\n    \"pts4t\",\r\n    \"pt1uh\",\r\n    \"pt1um\",\r\n    \"pt1urs\",\r\n    \"ptü4\",\r\n    \"3p2ty\",\r\n    \"pt3z2\",\r\n    \"1pu\",\r\n    \"pu1a\",\r\n    \"pub4\",\r\n    \"2puc\",\r\n    \"pu2dr\",\r\n    \"2p1uh\",\r\n    \"2puk\",\r\n    \"pu2kl\",\r\n    \"pu2k1o\",\r\n    \"pu2lin\",\r\n    \"pul2sp\",\r\n    \"pul2st\",\r\n    \"2pulw\",\r\n    \"pum2pl\",\r\n    \"3pun\",\r\n    \"4pund\",\r\n    \"pun2e\",\r\n    \"pun2s\",\r\n    \"4punt\",\r\n    \"2pur\",\r\n    \"pu2ra\",\r\n    \"pu2rei\",\r\n    \"pus2h\",\r\n    \"pu3she\",\r\n    \"pu2s3t\",\r\n    \"pu5t2e\",\r\n    \"3put2s\",\r\n    \"3putz\",\r\n    \"puzi3\",\r\n    \"1püf\",\r\n    \"2pül\",\r\n    \"pül3l2\",\r\n    \"2p1v\",\r\n    \"2p1w\",\r\n    \"pwa4r\",\r\n    \"3p4y1\",\r\n    \"py3s\",\r\n    \"py3t\",\r\n    \"2p1z2\",\r\n    \"qu4\",\r\n    \"que3rel\",\r\n    \"quer5n\",\r\n    \"que4te.\",\r\n    \"1queu\",\r\n    \"1ra.\",\r\n    \"r1aa\",\r\n    \"ra2ab\",\r\n    \"2raac\",\r\n    \"2raal\",\r\n    \"ra3ar\",\r\n    \"r2a1as\",\r\n    \"r1ab\",\r\n    \"ra2b1ar\",\r\n    \"r2abä\",\r\n    \"1rabbi\",\r\n    \"rab2b3l\",\r\n    \"2rabd\",\r\n    \"rabdru4\",\r\n    \"ra2bei\",\r\n    \"rab2er\",\r\n    \"rab3erd\",\r\n    \"2rabf\",\r\n    \"2rabg\",\r\n    \"2rabh\",\r\n    \"1rabi\",\r\n    \"2rabk\",\r\n    \"r2able\",\r\n    \"ra2bli\",\r\n    \"ra4b5lo\",\r\n    \"2ra2br\",\r\n    \"2rabs4\",\r\n    \"2rabt\",\r\n    \"2r3abw\",\r\n    \"1raby\",\r\n    \"2rabz\",\r\n    \"ra2ce\",\r\n    \"2r1acet\",\r\n    \"ra4cheb\",\r\n    \"ra2cho\",\r\n    \"2rachs\",\r\n    \"rach6t5rä\",\r\n    \"ra2chu\",\r\n    \"r2ack\",\r\n    \"1r2ad\",\r\n    \"r4ad.\",\r\n    \"rada2\",\r\n    \"ra2dac\",\r\n    \"ra4d1am\",\r\n    \"ra2dan\",\r\n    \"2radap\",\r\n    \"3radar\",\r\n    \"ra2de4i\",\r\n    \"3radf\",\r\n    \"3radh\",\r\n    \"3radio\",\r\n    \"4radit\",\r\n    \"3rado\",\r\n    \"3radp\",\r\n    \"ra4d1r\",\r\n    \"rad3ri\",\r\n    \"rad5t4\",\r\n    \"r2af\",\r\n    \"raf3ahn\",\r\n    \"raf3ar\",\r\n    \"rafe2\",\r\n    \"ra2f1er\",\r\n    \"raf3r\",\r\n    \"raft5s\",\r\n    \"rag2a\",\r\n    \"ragein4\",\r\n    \"rages4\",\r\n    \"2ragg\",\r\n    \"ra3g4le\",\r\n    \"4ragm\",\r\n    \"ra2gn\",\r\n    \"r2ago\",\r\n    \"rahle4n\",\r\n    \"5r4ahm\",\r\n    \"r1ahn\",\r\n    \"2ra1ho\",\r\n    \"4raht\",\r\n    \"r2ai\",\r\n    \"2raic\",\r\n    \"rail2l\",\r\n    \"2r3air\",\r\n    \"raka3\",\r\n    \"1r4a3ke\",\r\n    \"2rakk\",\r\n    \"3ra1k4l\",\r\n    \"ra2kre\",\r\n    \"ra2kro\",\r\n    \"2rakti\",\r\n    \"1rakü\",\r\n    \"2rakz\",\r\n    \"r2al\",\r\n    \"r4al.\",\r\n    \"ra2la2\",\r\n    \"ra4l3ab\",\r\n    \"ral1ak\",\r\n    \"rala4s\",\r\n    \"ra2lä\",\r\n    \"ral3b4\",\r\n    \"3r4ald\",\r\n    \"ra4l3end\",\r\n    \"ra4lent\",\r\n    \"ra4l5ern\",\r\n    \"ra3lex\",\r\n    \"r4ali\",\r\n    \"ra2lid\",\r\n    \"rali3er\",\r\n    \"ra4lin4d\",\r\n    \"ra4l3ing\",\r\n    \"ralin6sp\",\r\n    \"ralin4t\",\r\n    \"2r3alk.\",\r\n    \"2r3alm.\",\r\n    \"2ralp.\",\r\n    \"4ralpe\",\r\n    \"r4als\",\r\n    \"ral3sk\",\r\n    \"ral3su\",\r\n    \"r3alt\",\r\n    \"3r4al5t2h\",\r\n    \"ra2l3u\",\r\n    \"3raly\",\r\n    \"rama3s\",\r\n    \"ra2mei\",\r\n    \"ra2mer\",\r\n    \"r2ami\",\r\n    \"r2amm\",\r\n    \"ram4man\",\r\n    \"ram6mens\",\r\n    \"ram6m5ers\",\r\n    \"ram4m3u\",\r\n    \"2ramn\",\r\n    \"3ramsc\",\r\n    \"2r1amt\",\r\n    \"ramt4s\",\r\n    \"2ramu\",\r\n    \"2rana\",\r\n    \"ran1ad\",\r\n    \"ran3ade\",\r\n    \"r1a2nal\",\r\n    \"ra2nan\",\r\n    \"ra2nar\",\r\n    \"ra2nau\",\r\n    \"2ranb\",\r\n    \"r2anbe\",\r\n    \"r4anda\",\r\n    \"r4ande\",\r\n    \"ran4dep\",\r\n    \"ran4d3er\",\r\n    \"3r2andi\",\r\n    \"rand3s\",\r\n    \"1raner\",\r\n    \"2ranf\",\r\n    \"2ranga\",\r\n    \"ran6g5e6be\",\r\n    \"3rangi\",\r\n    \"r2angl\",\r\n    \"rangs2\",\r\n    \"rang3sp\",\r\n    \"rang5ste\",\r\n    \"rani3e\",\r\n    \"r3a4nil\",\r\n    \"ran3ka\",\r\n    \"ran2kr\",\r\n    \"ran2kü\",\r\n    \"4ranl\",\r\n    \"2r1anm\",\r\n    \"r2anmi\",\r\n    \"r2anmu\",\r\n    \"2ranna\",\r\n    \"ran5ne\",\r\n    \"2r1anp\",\r\n    \"2ranr\",\r\n    \"2rans\",\r\n    \"r2ans.\",\r\n    \"r1ansc\",\r\n    \"ran4spa\",\r\n    \"4r5antei\",\r\n    \"r1anth\",\r\n    \"r2anto\",\r\n    \"2rantr\",\r\n    \"1ranu\",\r\n    \"2ranw\",\r\n    \"r2anz.\",\r\n    \"r2ap\",\r\n    \"2rapa\",\r\n    \"ra2par\",\r\n    \"2rapf\",\r\n    \"2rapo\",\r\n    \"ra2pok\",\r\n    \"rap2pr\",\r\n    \"2r3a2pri\",\r\n    \"2r1aq\",\r\n    \"r1ar\",\r\n    \"r2ar1a\",\r\n    \"2rarb\",\r\n    \"r2are\",\r\n    \"3r4arei\",\r\n    \"raren1\",\r\n    \"rar3et\",\r\n    \"rar1e2v\",\r\n    \"r2arf4\",\r\n    \"ra3rie\",\r\n    \"rar3in\",\r\n    \"ra3ris\",\r\n    \"r3a4rist\",\r\n    \"4r3arit\",\r\n    \"r2ark\",\r\n    \"raro2\",\r\n    \"ra2rom\",\r\n    \"2rart\",\r\n    \"2rarz\",\r\n    \"rar3zw\",\r\n    \"r4as.\",\r\n    \"ras2a\",\r\n    \"ra3san\",\r\n    \"ra4schl\",\r\n    \"r2asm\",\r\n    \"ra3spr\",\r\n    \"r2ast\",\r\n    \"ra2sta\",\r\n    \"ras4t3ei\",\r\n    \"r3asth\",\r\n    \"ras4to\",\r\n    \"2rasyl\",\r\n    \"2raß\",\r\n    \"1rat\",\r\n    \"r4at.\",\r\n    \"ra2t1an\",\r\n    \"ra2t1ei\",\r\n    \"r3a2tel\",\r\n    \"ra4tid\",\r\n    \"2ratm\",\r\n    \"rat2o\",\r\n    \"2ratom\",\r\n    \"ra5tor\",\r\n    \"rat4r\",\r\n    \"r3att\",\r\n    \"2ratta\",\r\n    \"2rattr\",\r\n    \"4ratz\",\r\n    \"rat3ze\",\r\n    \"4rau.\",\r\n    \"3raub.\",\r\n    \"rau3e4n\",\r\n    \"2rauf\",\r\n    \"rau3fä\",\r\n    \"2rau3g2\",\r\n    \"3raum\",\r\n    \"rau4m3ag\",\r\n    \"rau5mes\",\r\n    \"rau2mi\",\r\n    \"3raup\",\r\n    \"4raur\",\r\n    \"2rausb\",\r\n    \"3raus2c\",\r\n    \"2rausd\",\r\n    \"rau3se\",\r\n    \"2rausf\",\r\n    \"2rausg\",\r\n    \"raus8gewä\",\r\n    \"2raush\",\r\n    \"2rausl\",\r\n    \"rau2sp\",\r\n    \"2rauss\",\r\n    \"raus8sche\",\r\n    \"raus5se\",\r\n    \"2rausv\",\r\n    \"2rausw\",\r\n    \"rau3ße\",\r\n    \"2rauto\",\r\n    \"raut1r\",\r\n    \"rau4tra\",\r\n    \"rau4tro\",\r\n    \"raut5s\",\r\n    \"1raü\",\r\n    \"r2ax\",\r\n    \"raxi2\",\r\n    \"r3axt\",\r\n    \"r2ay\",\r\n    \"ray1o\",\r\n    \"r2az\",\r\n    \"räch2s\",\r\n    \"3r2äd\",\r\n    \"4räf\",\r\n    \"rä1fr\",\r\n    \"4räg\",\r\n    \"2räh\",\r\n    \"4räm\",\r\n    \"3rän.\",\r\n    \"3räni\",\r\n    \"3räns\",\r\n    \"2räp\",\r\n    \"2räq\",\r\n    \"2r1är\",\r\n    \"r2är.\",\r\n    \"rä3ra\",\r\n    \"rä1ro\",\r\n    \"rä2sc\",\r\n    \"räse2\",\r\n    \"räte1s\",\r\n    \"3rätse\",\r\n    \"4rätz\",\r\n    \"rä2u\",\r\n    \"4räue\",\r\n    \"räu2s\",\r\n    \"räus4c\",\r\n    \"räu7schen.\",\r\n    \"2räuss\",\r\n    \"2räuß\",\r\n    \"4räut\",\r\n    \"2räx\",\r\n    \"4r1b\",\r\n    \"r2b3a2b1\",\r\n    \"r3bac\",\r\n    \"rba4del\",\r\n    \"rb2al\",\r\n    \"r3bam\",\r\n    \"r2bang\",\r\n    \"r2bant\",\r\n    \"rb1art\",\r\n    \"r2barz\",\r\n    \"rb1auf\",\r\n    \"rbb2\",\r\n    \"rb1ech\",\r\n    \"rbe3erf\",\r\n    \"rbei3d2\",\r\n    \"rbe3inf\",\r\n    \"rb3einh\",\r\n    \"rbe3int\",\r\n    \"r4belä\",\r\n    \"rbel2o\",\r\n    \"r3ben.\",\r\n    \"rbe3r2e\",\r\n    \"rber6gin\",\r\n    \"rbe3rum\",\r\n    \"rbe3sl\",\r\n    \"r2bim\",\r\n    \"r2binf\",\r\n    \"r3bit\",\r\n    \"rbit2a\",\r\n    \"rbi3tu\",\r\n    \"rb4la2d\",\r\n    \"r2blan\",\r\n    \"r8blasser\",\r\n    \"r4b3last\",\r\n    \"r3blat\",\r\n    \"r3blau\",\r\n    \"r2b3le.\",\r\n    \"r3blen\",\r\n    \"rb3ler\",\r\n    \"r2bleu\",\r\n    \"rb2lin\",\r\n    \"rb2lö\",\r\n    \"rb2ob\",\r\n    \"r2bonk\",\r\n    \"rb3ras\",\r\n    \"rb3rea\",\r\n    \"r8b7rechts\",\r\n    \"rb4sam\",\r\n    \"rb2sei\",\r\n    \"rb2ser\",\r\n    \"rb2s1o\",\r\n    \"rb4stä\",\r\n    \"rb2su\",\r\n    \"rb2u\",\r\n    \"rbü4b\",\r\n    \"rby4t\",\r\n    \"2rc\",\r\n    \"r1ce\",\r\n    \"r1che.\",\r\n    \"r1chen\",\r\n    \"r1ch2i\",\r\n    \"rch3l\",\r\n    \"r3chlo\",\r\n    \"rch3m\",\r\n    \"rch3r\",\r\n    \"rch4ro\",\r\n    \"rch1s4\",\r\n    \"rch3sp\",\r\n    \"rch3t2a\",\r\n    \"rchter6r\",\r\n    \"rch1w\",\r\n    \"r1ci\",\r\n    \"r2ck\",\r\n    \"r1cl\",\r\n    \"r1ç\",\r\n    \"4r1d\",\r\n    \"rd2ac\",\r\n    \"r2daf\",\r\n    \"r2d1ak\",\r\n    \"r2d1a2l\",\r\n    \"rd2amm\",\r\n    \"rdani1\",\r\n    \"r2dann\",\r\n    \"rd1ant\",\r\n    \"rd1ara\",\r\n    \"rd1ark\",\r\n    \"r2darz\",\r\n    \"rdär2\",\r\n    \"r3de.\",\r\n    \"r3dee\",\r\n    \"r2dei\",\r\n    \"rd2ei.\",\r\n    \"r2d1elb\",\r\n    \"r2de2le\",\r\n    \"r2delf\",\r\n    \"rdem6\",\r\n    \"rden3d\",\r\n    \"r4dengl\",\r\n    \"r4dents\",\r\n    \"rde3ob\",\r\n    \"rde3ono\",\r\n    \"rde3r4er\",\r\n    \"rderin6s\",\r\n    \"r4d3ernt\",\r\n    \"r3des\",\r\n    \"rde3sp\",\r\n    \"r2d1e2x\",\r\n    \"r2d1inn\",\r\n    \"rd1iri\",\r\n    \"rd1ita\",\r\n    \"r2dof\",\r\n    \"r3don\",\r\n    \"rd3oss\",\r\n    \"rdo4st\",\r\n    \"r2d1oz\",\r\n    \"r2dö\",\r\n    \"rd3rat\",\r\n    \"r2drau\",\r\n    \"rd3ris\",\r\n    \"rd4rö\",\r\n    \"r3d4rü\",\r\n    \"rd2sän\",\r\n    \"rd3s2k\",\r\n    \"rd3s2z\",\r\n    \"rdt4\",\r\n    \"rd3t2a\",\r\n    \"rd3th\",\r\n    \"rdt2s\",\r\n    \"r2d1uk\",\r\n    \"rdwa6r\",\r\n    \"1re\",\r\n    \"3re.\",\r\n    \"rea2d\",\r\n    \"rea6l5erw\",\r\n    \"4re2am\",\r\n    \"re3at.\",\r\n    \"re3ats\",\r\n    \"reatu3\",\r\n    \"2reä\",\r\n    \"re2b1a\",\r\n    \"re2b1l\",\r\n    \"reb1r\",\r\n    \"reb3ra\",\r\n    \"reb3so\",\r\n    \"rech3ar\",\r\n    \"4rechs\",\r\n    \"2reck.\",\r\n    \"2recki\",\r\n    \"3red.\",\r\n    \"re3da\",\r\n    \"4redd\",\r\n    \"2redi\",\r\n    \"re2dik\",\r\n    \"3redn\",\r\n    \"3redu\",\r\n    \"re1ebe\",\r\n    \"re1el\",\r\n    \"re1em\",\r\n    \"ree4mi\",\r\n    \"re1er\",\r\n    \"3refe\",\r\n    \"4reff\",\r\n    \"r2eff.\",\r\n    \"3refl\",\r\n    \"3refo\",\r\n    \"3reg\",\r\n    \"rege4l3ä\",\r\n    \"regene7ra\",\r\n    \"4r1egg\",\r\n    \"re3gi\",\r\n    \"re2hac\",\r\n    \"re2h1ar\",\r\n    \"re4hen4e\",\r\n    \"re4h3ent\",\r\n    \"re2hi\",\r\n    \"reh1l4\",\r\n    \"re2h1o\",\r\n    \"re3hol\",\r\n    \"3rehö\",\r\n    \"reh4th\",\r\n    \"re2hü\",\r\n    \"r2ei.\",\r\n    \"r2eib\",\r\n    \"rei4bel\",\r\n    \"rei4ble\",\r\n    \"r2eic\",\r\n    \"2reid\",\r\n    \"r2eie\",\r\n    \"4reier.\",\r\n    \"rei4fei\",\r\n    \"4reifel\",\r\n    \"2reig\",\r\n    \"3reigä\",\r\n    \"3reigeh\",\r\n    \"r4eigel\",\r\n    \"6reigens\",\r\n    \"3reigi\",\r\n    \"4reign\",\r\n    \"3reigru\",\r\n    \"rei3l2a\",\r\n    \"rei3l2i\",\r\n    \"2r1eilt\",\r\n    \"3reim\",\r\n    \"reim2p\",\r\n    \"r1ein\",\r\n    \"2rein2a\",\r\n    \"rei3nal\",\r\n    \"2reinb\",\r\n    \"rein4du\",\r\n    \"rei3n4e3c\",\r\n    \"reinen5\",\r\n    \"2reinf\",\r\n    \"rein4fe\",\r\n    \"re4info\",\r\n    \"2reing\",\r\n    \"2reinh\",\r\n    \"4reinn\",\r\n    \"4r3einr\",\r\n    \"2reins\",\r\n    \"4reinsa\",\r\n    \"rein6sel\",\r\n    \"rein8s7tre\",\r\n    \"rein4sz\",\r\n    \"2reint\",\r\n    \"rein6teg\",\r\n    \"re1in2v\",\r\n    \"2reinw\",\r\n    \"2reinz\",\r\n    \"4reisar\",\r\n    \"4reisb\",\r\n    \"reises4\",\r\n    \"2reisf\",\r\n    \"2reish\",\r\n    \"2reisr\",\r\n    \"reister6\",\r\n    \"4reisu\",\r\n    \"2reisw\",\r\n    \"reit3s2\",\r\n    \"3rek\",\r\n    \"4re2ke\",\r\n    \"4rekk\",\r\n    \"5rekn\",\r\n    \"2rekz\",\r\n    \"r2el.\",\r\n    \"r2ela\",\r\n    \"re3lat\",\r\n    \"2relb\",\r\n    \"rel2e\",\r\n    \"relea4\",\r\n    \"re5lei\",\r\n    \"re2lek\",\r\n    \"4relem\",\r\n    \"r2elev\",\r\n    \"2relf\",\r\n    \"2relit\",\r\n    \"2relix\",\r\n    \"r2ell\",\r\n    \"rel4lar\",\r\n    \"rel4lei\",\r\n    \"re3lo\",\r\n    \"r2els\",\r\n    \"2relt\",\r\n    \"relu2\",\r\n    \"3r2em.\",\r\n    \"2r1emb\",\r\n    \"rem2da\",\r\n    \"re2m1ei\",\r\n    \"re3men\",\r\n    \"2remi\",\r\n    \"re3mig\",\r\n    \"2rempf\",\r\n    \"rems1c\",\r\n    \"rem4str\",\r\n    \"2rem2u\",\r\n    \"r2en.\",\r\n    \"r2ena\",\r\n    \"2rena.\",\r\n    \"re4nac\",\r\n    \"re3nad\",\r\n    \"re3nal\",\r\n    \"re4n3an\",\r\n    \"re2nä\",\r\n    \"2r1endg\",\r\n    \"3rendi\",\r\n    \"ren3dr\",\r\n    \"4renerg\",\r\n    \"4rengag\",\r\n    \"ren4gan\",\r\n    \"2rengp\",\r\n    \"3renh\",\r\n    \"re2ni\",\r\n    \"3renm\",\r\n    \"ren4nar\",\r\n    \"ren6nene\",\r\n    \"renrü2\",\r\n    \"ren6sein\",\r\n    \"rens2p\",\r\n    \"2rentd\",\r\n    \"6rentera\",\r\n    \"2rentf\",\r\n    \"3rentfo\",\r\n    \"2rentg\",\r\n    \"r3enthä\",\r\n    \"2r1entl\",\r\n    \"2r1ents\",\r\n    \"2r3entw\",\r\n    \"2rentz\",\r\n    \"r2enz\",\r\n    \"ren6z5er6f\",\r\n    \"renzer6l\",\r\n    \"ren6z5er6s\",\r\n    \"renzer6w\",\r\n    \"ren4z3in\",\r\n    \"ren2zw\",\r\n    \"re2ob\",\r\n    \"re3or\",\r\n    \"3repe\",\r\n    \"4re2pen\",\r\n    \"2repi\",\r\n    \"re2pis\",\r\n    \"2repoc\",\r\n    \"2r1e2pos\",\r\n    \"4repp\",\r\n    \"3repu\",\r\n    \"3r2er.\",\r\n    \"rera2\",\r\n    \"2r1erb\",\r\n    \"3r4erber\",\r\n    \"rer2bi\",\r\n    \"2r1erd\",\r\n    \"rere2\",\r\n    \"4r3ereig\",\r\n    \"r1erek\",\r\n    \"re2r1ep\",\r\n    \"r2erer\",\r\n    \"r1erf\",\r\n    \"r3erfa\",\r\n    \"4rerfah\",\r\n    \"2rerfi\",\r\n    \"2rerfo\",\r\n    \"r2erfr\",\r\n    \"rer2fü\",\r\n    \"r1erg\",\r\n    \"4r3ergeb\",\r\n    \"5rergebü\",\r\n    \"r4ergen\",\r\n    \"3r4erges\",\r\n    \"2rer2go\",\r\n    \"rer2gr\",\r\n    \"r4ergru\",\r\n    \"r1erh\",\r\n    \"rer2hö\",\r\n    \"r1erk\",\r\n    \"rer4kan\",\r\n    \"rer2ke\",\r\n    \"4r3erken\",\r\n    \"3r2erki\",\r\n    \"3r2erko\",\r\n    \"r1erl\",\r\n    \"2r3er2la\",\r\n    \"5r4erlag\",\r\n    \"r3erleb\",\r\n    \"r2erli\",\r\n    \"2rerlö\",\r\n    \"2r1erm\",\r\n    \"rer2n\",\r\n    \"2r1ernä\",\r\n    \"r1erne\",\r\n    \"2r1erni\",\r\n    \"4r3erns\",\r\n    \"4r1ernt\",\r\n    \"re1ro\",\r\n    \"re2rob\",\r\n    \"re4rosi\",\r\n    \"2r1er2ö\",\r\n    \"r1erre\",\r\n    \"rer4reg\",\r\n    \"rer4rei\",\r\n    \"r1erri\",\r\n    \"5r2ers.\",\r\n    \"2r1ersa\",\r\n    \"rer3sc\",\r\n    \"r6erschi\",\r\n    \"r2erse\",\r\n    \"2rersp\",\r\n    \"rer2st\",\r\n    \"r6erstad\",\r\n    \"2rer4su\",\r\n    \"r1ert4\",\r\n    \"r2erte\",\r\n    \"2rertr\",\r\n    \"r1erw\",\r\n    \"2rerwa\",\r\n    \"rer4wac\",\r\n    \"rer4wec\",\r\n    \"r4erwes\",\r\n    \"2r1erz\",\r\n    \"rer2zä\",\r\n    \"3r2erzy\",\r\n    \"3r2es.\",\r\n    \"re2sa\",\r\n    \"re4sam\",\r\n    \"resche4\",\r\n    \"re4schw\",\r\n    \"3rese\",\r\n    \"re4se2h\",\r\n    \"re2s1of\",\r\n    \"3resol\",\r\n    \"3reson\",\r\n    \"re2spa\",\r\n    \"res2po\",\r\n    \"2ress\",\r\n    \"4resse\",\r\n    \"res3sei\",\r\n    \"res6s5erw\",\r\n    \"4ressu\",\r\n    \"re1sta\",\r\n    \"res4tas\",\r\n    \"res6tent\",\r\n    \"res4tex\",\r\n    \"2res4tu\",\r\n    \"3resu\",\r\n    \"re2t1ak\",\r\n    \"2re2tap\",\r\n    \"re2tau\",\r\n    \"ret2e\",\r\n    \"2r1e2th\",\r\n    \"re2tra\",\r\n    \"re4trol\",\r\n    \"re2u\",\r\n    \"reu4eri\",\r\n    \"reu3g2\",\r\n    \"2reul\",\r\n    \"re3uni\",\r\n    \"2reur\",\r\n    \"4reuu\",\r\n    \"2reü\",\r\n    \"4r3eva\",\r\n    \"2r1evid\",\r\n    \"rewa4r\",\r\n    \"re2wi\",\r\n    \"2rewo\",\r\n    \"2r1e2x1\",\r\n    \"3rez\",\r\n    \"2rezi\",\r\n    \"1ré\",\r\n    \"4r1f\",\r\n    \"rf1a2ck\",\r\n    \"r3fam\",\r\n    \"rfe2i\",\r\n    \"r2fent\",\r\n    \"r3f2es\",\r\n    \"rff2\",\r\n    \"rf3fe\",\r\n    \"rfi4le.\",\r\n    \"r4fland\",\r\n    \"r3f4lä\",\r\n    \"rf3lic\",\r\n    \"rf4lö\",\r\n    \"r3flü\",\r\n    \"r2fo2b\",\r\n    \"rfolg4s\",\r\n    \"r4frauc\",\r\n    \"rf4ru\",\r\n    \"rf4rü\",\r\n    \"rf2sa\",\r\n    \"rf4sam\",\r\n    \"rf2s1ä\",\r\n    \"rf2su\",\r\n    \"rf2ta\",\r\n    \"rft4r\",\r\n    \"rf2u\",\r\n    \"rfzu3\",\r\n    \"2r1g\",\r\n    \"r2g1a2d\",\r\n    \"r2g1ah\",\r\n    \"r2g1ak\",\r\n    \"rga4ner\",\r\n    \"r2g1ap\",\r\n    \"r2garb\",\r\n    \"rg3art.\",\r\n    \"r2g1ask\",\r\n    \"rgd2\",\r\n    \"rge4an\",\r\n    \"rge2bl\",\r\n    \"r2g1e2c\",\r\n    \"r3gel\",\r\n    \"r4gelef\",\r\n    \"rge4l3er\",\r\n    \"rgen4z3w\",\r\n    \"r4ge4tap\",\r\n    \"r2geto\",\r\n    \"rgi4sel\",\r\n    \"r2glan\",\r\n    \"r3glanz\",\r\n    \"rg5le.\",\r\n    \"r2gleu\",\r\n    \"r2glig\",\r\n    \"r2g3lit\",\r\n    \"rg2log\",\r\n    \"rg2lu\",\r\n    \"r2g3na\",\r\n    \"r2gne\",\r\n    \"r2g3ni\",\r\n    \"r2g3no\",\r\n    \"r2g3oa\",\r\n    \"r2gob\",\r\n    \"r3gog\",\r\n    \"rg3op\",\r\n    \"r2g1or\",\r\n    \"rgö2\",\r\n    \"r2g1öd\",\r\n    \"r2g3ral\",\r\n    \"rg4rau\",\r\n    \"r2greg\",\r\n    \"r2g3res\",\r\n    \"r2gret\",\r\n    \"rg3rin\",\r\n    \"r3grun\",\r\n    \"rg3rüs\",\r\n    \"rg3sä\",\r\n    \"rg3se\",\r\n    \"rgs2ei\",\r\n    \"rg4sel\",\r\n    \"rg3s2i\",\r\n    \"rg3sp\",\r\n    \"rgs2pe\",\r\n    \"rgs2po\",\r\n    \"rg3st\",\r\n    \"rgs4tr\",\r\n    \"rgs2tu\",\r\n    \"rg3su\",\r\n    \"r1h4\",\r\n    \"2rh.\",\r\n    \"r2hag\",\r\n    \"2rhah\",\r\n    \"2rhak\",\r\n    \"r4haltb\",\r\n    \"r3han\",\r\n    \"2rhau\",\r\n    \"2r3hä\",\r\n    \"3r2he.\",\r\n    \"r3hea\",\r\n    \"2rheb\",\r\n    \"2rhef\",\r\n    \"2rhi\",\r\n    \"2rhol\",\r\n    \"r3hop\",\r\n    \"2rhot\",\r\n    \"2rhöl\",\r\n    \"2rhs\",\r\n    \"rhu2s\",\r\n    \"2rhü\",\r\n    \"1ri\",\r\n    \"ri3ams\",\r\n    \"ri1an\",\r\n    \"ri2ano\",\r\n    \"ria1s\",\r\n    \"ri2ast\",\r\n    \"rib2bl\",\r\n    \"ri1ce\",\r\n    \"ri1cha\",\r\n    \"ri3chl\",\r\n    \"richt8spo\",\r\n    \"3richtu\",\r\n    \"ri2con\",\r\n    \"ri2dau\",\r\n    \"2ride\",\r\n    \"ri2d3e2l\",\r\n    \"ri4dent\",\r\n    \"r2i3di\",\r\n    \"2ridol\",\r\n    \"2ridy\",\r\n    \"r2ie\",\r\n    \"4riefm\",\r\n    \"rie2f3r\",\r\n    \"rieg4s3\",\r\n    \"ri2e1i\",\r\n    \"riein1\",\r\n    \"ri1el\",\r\n    \"rie3l2a\",\r\n    \"ri3els\",\r\n    \"ri4enä\",\r\n    \"riene2\",\r\n    \"ri3eni\",\r\n    \"rien3s\",\r\n    \"rie4nu\",\r\n    \"ri1er.\",\r\n    \"rie3r2e\",\r\n    \"riere4n\",\r\n    \"ri3ers.\",\r\n    \"rie3sa\",\r\n    \"ri1eu\",\r\n    \"ri2f1a\",\r\n    \"ri2fä\",\r\n    \"ri2fei\",\r\n    \"ri2fer\",\r\n    \"rif6f5end\",\r\n    \"rif4fer\",\r\n    \"ri2f1o\",\r\n    \"ri2fr\",\r\n    \"rif3s\",\r\n    \"rif4ter\",\r\n    \"3rig\",\r\n    \"4riga\",\r\n    \"4r3i2gel\",\r\n    \"ri4gene\",\r\n    \"4rigg\",\r\n    \"5rigj\",\r\n    \"rig1l\",\r\n    \"ri4glä\",\r\n    \"ri3g2o3\",\r\n    \"4rigr\",\r\n    \"4rij\",\r\n    \"ri2kar\",\r\n    \"ri2kä\",\r\n    \"ri2kin\",\r\n    \"ri2kn\",\r\n    \"ri4kone\",\r\n    \"rik2op\",\r\n    \"ri2kor\",\r\n    \"2rima\",\r\n    \"ri2mag\",\r\n    \"ri2me.\",\r\n    \"2rimm\",\r\n    \"4rimp\",\r\n    \"rim2s\",\r\n    \"rim4sc\",\r\n    \"rim4st\",\r\n    \"ri3na\",\r\n    \"r1inbe\",\r\n    \"rin2c\",\r\n    \"2r1indu\",\r\n    \"ri3n2e\",\r\n    \"rine1i\",\r\n    \"2r1inf\",\r\n    \"rin2fo\",\r\n    \"3r2infr\",\r\n    \"r2ing\",\r\n    \"rin2ga\",\r\n    \"ring3le\",\r\n    \"rin2gr\",\r\n    \"ring3sp\",\r\n    \"2r1inh\",\r\n    \"2rinit\",\r\n    \"4rinj\",\r\n    \"4rink\",\r\n    \"rin2kl\",\r\n    \"rin2ko\",\r\n    \"rin2kr\",\r\n    \"2rinl\",\r\n    \"6r5innenm\",\r\n    \"4r3inner\",\r\n    \"2r1innr\",\r\n    \"r1innu\",\r\n    \"2r1in2q\",\r\n    \"2r1ins\",\r\n    \"rin4si\",\r\n    \"rin2so\",\r\n    \"r4inspi\",\r\n    \"3r2insy\",\r\n    \"2rint\",\r\n    \"4rinte\",\r\n    \"rin6tent\",\r\n    \"rin4t5re\",\r\n    \"2r1inv\",\r\n    \"rin2va\",\r\n    \"2rinz\",\r\n    \"ri2ob\",\r\n    \"r3ion\",\r\n    \"ri3o2st\",\r\n    \"ri2pl\",\r\n    \"ri3po\",\r\n    \"4r1ir\",\r\n    \"r2is\",\r\n    \"ris2a\",\r\n    \"ri3san\",\r\n    \"ri4sch3o\",\r\n    \"ri4schw\",\r\n    \"3risik\",\r\n    \"ri3s2ko\",\r\n    \"r3iso\",\r\n    \"ri4s3p\",\r\n    \"r3isr\",\r\n    \"3riss\",\r\n    \"ri4s3t\",\r\n    \"ris6t5ers\",\r\n    \"ris4th\",\r\n    \"rist3r\",\r\n    \"r2it\",\r\n    \"r3i2tal\",\r\n    \"rit3ant\",\r\n    \"rit2i\",\r\n    \"2ri3t4r\",\r\n    \"ritt3a\",\r\n    \"rit4tau\",\r\n    \"rit6ter6f\",\r\n    \"rit4to\",\r\n    \"rit2t3r\",\r\n    \"rit2u\",\r\n    \"r1i4tum\",\r\n    \"rix1\",\r\n    \"1rí\",\r\n    \"2r1j\",\r\n    \"2r1k\",\r\n    \"rka2b3l\",\r\n    \"rk1ah\",\r\n    \"r2k1ak\",\r\n    \"rk1all\",\r\n    \"rk2am\",\r\n    \"rk1are\",\r\n    \"rk1asp\",\r\n    \"rkauf4s\",\r\n    \"r2k1äh\",\r\n    \"r3kel\",\r\n    \"r4kelem\",\r\n    \"rke2n1\",\r\n    \"rken4er\",\r\n    \"rken3s4t\",\r\n    \"r2k1er2l\",\r\n    \"rk5ersta\",\r\n    \"r2k1er4w\",\r\n    \"r3k2es\",\r\n    \"r3ket\",\r\n    \"rk1im\",\r\n    \"rk4las\",\r\n    \"rk4lau\",\r\n    \"rk4lim\",\r\n    \"r2klis\",\r\n    \"rk2lo\",\r\n    \"rk2lu\",\r\n    \"rk4ne\",\r\n    \"r2kob\",\r\n    \"r3kol\",\r\n    \"r3kon\",\r\n    \"rk2op\",\r\n    \"rk1o2ri\",\r\n    \"r2kou\",\r\n    \"rk2ö\",\r\n    \"rk3räu\",\r\n    \"r3kri\",\r\n    \"rk3rin\",\r\n    \"r2k3rom\",\r\n    \"r2krou\",\r\n    \"rk2sal\",\r\n    \"rk2sei\",\r\n    \"rk2sel\",\r\n    \"rk2ser\",\r\n    \"rk2so\",\r\n    \"rk2sp\",\r\n    \"rkstati6\",\r\n    \"rk4stec\",\r\n    \"rk4stoc\",\r\n    \"rk2ta\",\r\n    \"rk2tel\",\r\n    \"rk4t3eng\",\r\n    \"rk4tent\",\r\n    \"rk4t3erf\",\r\n    \"rk4terg\",\r\n    \"rk4t3erl\",\r\n    \"rkt3ers\",\r\n    \"rk6tersc\",\r\n    \"rk4t3erw\",\r\n    \"rk4t3erz\",\r\n    \"rk4teta\",\r\n    \"rkt2i\",\r\n    \"rk2t3in\",\r\n    \"rk4t1o2\",\r\n    \"rkto4b\",\r\n    \"rk2t3r\",\r\n    \"rk4tri\",\r\n    \"rk2tum\",\r\n    \"rk1ums\",\r\n    \"rku2n\",\r\n    \"r3kup\",\r\n    \"rkur3s\",\r\n    \"r3kus\",\r\n    \"rku2sa\",\r\n    \"r2küb\",\r\n    \"2r1l\",\r\n    \"rl2ab\",\r\n    \"r3lag\",\r\n    \"r5land\",\r\n    \"rlan4d3i\",\r\n    \"r2l1ar\",\r\n    \"r2l1a2sc\",\r\n    \"r2l3aug\",\r\n    \"rle2a\",\r\n    \"r3lec\",\r\n    \"r5lei.\",\r\n    \"r3lep\",\r\n    \"rl2et\",\r\n    \"r3lex\",\r\n    \"rlg4\",\r\n    \"r3l2i\",\r\n    \"rli4ne.\",\r\n    \"rli2s\",\r\n    \"r3l2o\",\r\n    \"rlou1\",\r\n    \"rl2ö\",\r\n    \"rlös3s\",\r\n    \"rls2a\",\r\n    \"rl2spr\",\r\n    \"rl3ste\",\r\n    \"rl2s5to\",\r\n    \"rl3t\",\r\n    \"r3l2u\",\r\n    \"r3ly\",\r\n    \"rlz2\",\r\n    \"4r1m\",\r\n    \"r2mab\",\r\n    \"r2m1ad\",\r\n    \"rma2la\",\r\n    \"rm1ald\",\r\n    \"rm1ami\",\r\n    \"r2m1ank\",\r\n    \"rm1anz\",\r\n    \"r4m3aph\",\r\n    \"r2marc\",\r\n    \"r2marz\",\r\n    \"rma4s3pe\",\r\n    \"rmas3se\",\r\n    \"rmat2o\",\r\n    \"rm2är\",\r\n    \"rm3d2\",\r\n    \"rm1ef\",\r\n    \"r4m3einh\",\r\n    \"rme4na\",\r\n    \"rm2ene\",\r\n    \"r2ment\",\r\n    \"r2meo\",\r\n    \"rmer4fo\",\r\n    \"r2m1erh\",\r\n    \"r2m1erl\",\r\n    \"r2m1erp\",\r\n    \"r2m1erw\",\r\n    \"rm2es\",\r\n    \"rme1st\",\r\n    \"rmes4z\",\r\n    \"rmeta2\",\r\n    \"r2mide\",\r\n    \"rmi6nanz\",\r\n    \"rminen4\",\r\n    \"rmi6neng\",\r\n    \"r4mn\",\r\n    \"r2m1ob\",\r\n    \"rmon3s4\",\r\n    \"rm1o2ri\",\r\n    \"rmo1s\",\r\n    \"rm3p2\",\r\n    \"rm3sa\",\r\n    \"rm3s2k\",\r\n    \"rm3t\",\r\n    \"rmt2a\",\r\n    \"rmu2n\",\r\n    \"r4muna\",\r\n    \"r2muni\",\r\n    \"4rn\",\r\n    \"rna2b\",\r\n    \"r3nad\",\r\n    \"rn4ade\",\r\n    \"r3nage\",\r\n    \"r2n1all\",\r\n    \"rna4n\",\r\n    \"rn4and\",\r\n    \"rn3ani\",\r\n    \"r2nanz\",\r\n    \"rna2r\",\r\n    \"rn3are\",\r\n    \"r4n3ari\",\r\n    \"r4n1ast\",\r\n    \"r4n3att\",\r\n    \"r2nau\",\r\n    \"rn3aug\",\r\n    \"rnd4\",\r\n    \"rn3de\",\r\n    \"rn3dr\",\r\n    \"r4nef\",\r\n    \"rn2eid\",\r\n    \"r4neif\",\r\n    \"r4neis\",\r\n    \"rn1ema\",\r\n    \"rne2n\",\r\n    \"r2n1ene\",\r\n    \"rn2eng\",\r\n    \"r4n1e2p\",\r\n    \"r4n1erg\",\r\n    \"rn4erhi\",\r\n    \"rner4ke\",\r\n    \"rner4ku\",\r\n    \"r4n1erl\",\r\n    \"r4n1ert\",\r\n    \"r4n1erw\",\r\n    \"r4nerz\",\r\n    \"r5nes\",\r\n    \"rn2e2t\",\r\n    \"rnet1e\",\r\n    \"rne4tem\",\r\n    \"rne4ter\",\r\n    \"rne4to\",\r\n    \"rn2eu\",\r\n    \"rne3uf\",\r\n    \"r4nex\",\r\n    \"rn3f\",\r\n    \"rn3g2\",\r\n    \"rngene4\",\r\n    \"r2nid\",\r\n    \"r2n1in\",\r\n    \"r4ninf\",\r\n    \"r3nit\",\r\n    \"rnk2\",\r\n    \"rnn2\",\r\n    \"r3nod\",\r\n    \"rn2oh\",\r\n    \"r2n1op\",\r\n    \"r2n1or\",\r\n    \"rn1ö\",\r\n    \"rnö2d\",\r\n    \"rn3sa\",\r\n    \"rn3s2ä\",\r\n    \"rnse4ha\",\r\n    \"rn3s4p\",\r\n    \"rns2u\",\r\n    \"rn3s2z\",\r\n    \"rn3t2a\",\r\n    \"rn3t2e\",\r\n    \"rn1ur\",\r\n    \"r1nü\",\r\n    \"r1ny\",\r\n    \"rnz2\",\r\n    \"r2oba\",\r\n    \"2robj\",\r\n    \"1robo\",\r\n    \"ro2bo2r\",\r\n    \"2robr\",\r\n    \"ro2bre\",\r\n    \"2robs\",\r\n    \"ro1c\",\r\n    \"roch2a\",\r\n    \"3rock.\",\r\n    \"r2o3de\",\r\n    \"rod4r\",\r\n    \"roe4\",\r\n    \"2roff\",\r\n    \"ro3fl\",\r\n    \"4rog.\",\r\n    \"ro3g2a\",\r\n    \"3rogg\",\r\n    \"ro2h1in\",\r\n    \"roh1l2\",\r\n    \"4rohn\",\r\n    \"ro2hö\",\r\n    \"3rohr\",\r\n    \"1roi\",\r\n    \"ro3in\",\r\n    \"ro1ir\",\r\n    \"rok2l\",\r\n    \"ro3le\",\r\n    \"ro2liv\",\r\n    \"rol4lan\",\r\n    \"rolle4\",\r\n    \"rol6lerg\",\r\n    \"rolls2\",\r\n    \"rol3s\",\r\n    \"2roly\",\r\n    \"4rom.\",\r\n    \"ro2mad\",\r\n    \"ro2mal\",\r\n    \"3roman.\",\r\n    \"2romb\",\r\n    \"romen3e\",\r\n    \"ro2m1er\",\r\n    \"4romm\",\r\n    \"2romn\",\r\n    \"rom3s\",\r\n    \"4romt\",\r\n    \"r2on\",\r\n    \"ro3n4ab\",\r\n    \"ro2nan\",\r\n    \"3rond\",\r\n    \"ro4nerb\",\r\n    \"4ronk\",\r\n    \"3ronn\",\r\n    \"rons2\",\r\n    \"ron4tan\",\r\n    \"ron6tend\",\r\n    \"ron4t3r\",\r\n    \"ron2t1u\",\r\n    \"ro1ny\",\r\n    \"ro1o2f\",\r\n    \"rop2a\",\r\n    \"2rope\",\r\n    \"2ropf\",\r\n    \"1ropl\",\r\n    \"2ropt\",\r\n    \"r1or\",\r\n    \"ro2r3al\",\r\n    \"ro2rat\",\r\n    \"2rorc\",\r\n    \"ro2rel\",\r\n    \"ro2ro\",\r\n    \"ror3th\",\r\n    \"rort2s\",\r\n    \"ror2ü\",\r\n    \"ro3sh\",\r\n    \"ro5s2i\",\r\n    \"ros4ko\",\r\n    \"ros4sal\",\r\n    \"ros4san\",\r\n    \"ros2s1c\",\r\n    \"ros6senk\",\r\n    \"ros4st\",\r\n    \"ro1sta\",\r\n    \"ros6t1r\",\r\n    \"ro2sum\",\r\n    \"4r3osz\",\r\n    \"4roß\",\r\n    \"roßen2\",\r\n    \"ro4ßenk\",\r\n    \"ro2ßi\",\r\n    \"ro2tan\",\r\n    \"ro4tas\",\r\n    \"ro4t3au\",\r\n    \"ro2tä\",\r\n    \"ro2te3i\",\r\n    \"ro2t1ho\",\r\n    \"ro2tru\",\r\n    \"rot3s\",\r\n    \"rots2o\",\r\n    \"rot2ta\",\r\n    \"ro3tu\",\r\n    \"3roul\",\r\n    \"ro3unt\",\r\n    \"3rout\",\r\n    \"2ro1x\",\r\n    \"4roy\",\r\n    \"rö2b3l\",\r\n    \"rö2du\",\r\n    \"2rö2f\",\r\n    \"3röh\",\r\n    \"2r1ök\",\r\n    \"1röl\",\r\n    \"2röl.\",\r\n    \"rö3le\",\r\n    \"röl2l\",\r\n    \"r1ölp\",\r\n    \"3römi\",\r\n    \"r1ör\",\r\n    \"r2ös.\",\r\n    \"rös1c\",\r\n    \"r2öse\",\r\n    \"1rösl\",\r\n    \"3rötu\",\r\n    \"2r1p2\",\r\n    \"r3pa\",\r\n    \"r3pe\",\r\n    \"rper3in\",\r\n    \"rpf4\",\r\n    \"r2pli\",\r\n    \"rp4lu\",\r\n    \"r3po\",\r\n    \"rpro1\",\r\n    \"rp3se\",\r\n    \"rps3t\",\r\n    \"r4p3t\",\r\n    \"r3pu\",\r\n    \"2r1q\",\r\n    \"4r1r\",\r\n    \"rr2ab\",\r\n    \"rr4at\",\r\n    \"rrat2s\",\r\n    \"rr1auf\",\r\n    \"rr1äm\",\r\n    \"rrb2\",\r\n    \"rr1c\",\r\n    \"r5rega\",\r\n    \"r5regi\",\r\n    \"rr2ei\",\r\n    \"rre2le\",\r\n    \"rre2pa\",\r\n    \"rrer2\",\r\n    \"r2rerh\",\r\n    \"r2rerl\",\r\n    \"rrer4s\",\r\n    \"r3res\",\r\n    \"rre2ve\",\r\n    \"r4rezi\",\r\n    \"r3r2hen\",\r\n    \"rr2hos\",\r\n    \"r3r4i\",\r\n    \"rri3k2\",\r\n    \"rrm2\",\r\n    \"rrn3au\",\r\n    \"rr2o\",\r\n    \"rr3obs\",\r\n    \"rro3m\",\r\n    \"rro2re\",\r\n    \"rrr2\",\r\n    \"rr2st\",\r\n    \"rr3str\",\r\n    \"rr3stu\",\r\n    \"rr2th\",\r\n    \"r3r2u\",\r\n    \"r3r2ü\",\r\n    \"rrz2\",\r\n    \"6r1s\",\r\n    \"r3sabo\",\r\n    \"r2s1a2d\",\r\n    \"rs2al\",\r\n    \"r4samp\",\r\n    \"r4s1amt\",\r\n    \"rs2an\",\r\n    \"r4sanf\",\r\n    \"r2s3ang\",\r\n    \"rs3anm\",\r\n    \"r4sanp\",\r\n    \"rs3ant\",\r\n    \"rs3anz\",\r\n    \"rs3ar\",\r\n    \"rs4ark\",\r\n    \"r4sarm\",\r\n    \"r4sch3e4b\",\r\n    \"r6scherl\",\r\n    \"r3schu\",\r\n    \"r2s1ebe\",\r\n    \"rse2e\",\r\n    \"r2s1ef\",\r\n    \"r2sein\",\r\n    \"rse2n\",\r\n    \"rs2end\",\r\n    \"rse4ne\",\r\n    \"r2sepi\",\r\n    \"rs1ere\",\r\n    \"r2serh\",\r\n    \"rs1ers\",\r\n    \"r2serz\",\r\n    \"rse2t\",\r\n    \"rs1eta\",\r\n    \"rs2ext\",\r\n    \"r3s2hav\",\r\n    \"r3shir\",\r\n    \"r3sho\",\r\n    \"rs2hor\",\r\n    \"r4shu\",\r\n    \"rs2il\",\r\n    \"rs2ka\",\r\n    \"rs2kel\",\r\n    \"rs2ki\",\r\n    \"r4skir\",\r\n    \"rs2kl\",\r\n    \"r4skor\",\r\n    \"r3s4kri\",\r\n    \"r4sky\",\r\n    \"rs4mog\",\r\n    \"r3s4no\",\r\n    \"r3so\",\r\n    \"r4sob\",\r\n    \"rs4om\",\r\n    \"r4s1op\",\r\n    \"r4sorie\",\r\n    \"r4s3ort.\",\r\n    \"rso2s\",\r\n    \"rs1ost\",\r\n    \"rs2p\",\r\n    \"r3span\",\r\n    \"r3spe\",\r\n    \"r2s3ph\",\r\n    \"r3spi\",\r\n    \"r3spl\",\r\n    \"rs4por\",\r\n    \"r2sput\",\r\n    \"rs3s2\",\r\n    \"rst3abl\",\r\n    \"r3stad\",\r\n    \"rst3ala\",\r\n    \"r4stale\",\r\n    \"r4stans\",\r\n    \"r4stant\",\r\n    \"r2stas\",\r\n    \"r7stati\",\r\n    \"r7statu\",\r\n    \"r3stä\",\r\n    \"rst5eing\",\r\n    \"r6st5eint\",\r\n    \"rst3emi\",\r\n    \"rs4temp\",\r\n    \"rster2\",\r\n    \"rs4t4erb\",\r\n    \"rst3erl\",\r\n    \"r3s4tern\",\r\n    \"rst3erw\",\r\n    \"rs2tev\",\r\n    \"rs2t1h\",\r\n    \"rs2ti\",\r\n    \"r3s4tie\",\r\n    \"r2stin\",\r\n    \"rst3ing\",\r\n    \"r3stink\",\r\n    \"r2stip\",\r\n    \"r2stit\",\r\n    \"r3sto\",\r\n    \"rs4tob\",\r\n    \"rs4tol\",\r\n    \"rs4tor\",\r\n    \"r4stot\",\r\n    \"rs4tr\",\r\n    \"r3stra\",\r\n    \"r6strang\",\r\n    \"rs5tren\",\r\n    \"rs2tu\",\r\n    \"rs4tuc\",\r\n    \"r3s4tü\",\r\n    \"rsuch4s\",\r\n    \"r3suf\",\r\n    \"rs2ums\",\r\n    \"r3sy\",\r\n    \"r1ß\",\r\n    \"4r1t\",\r\n    \"r2tabo\",\r\n    \"rt1abs\",\r\n    \"rta2ck\",\r\n    \"r2t1a2d\",\r\n    \"r2t3ae\",\r\n    \"rt1akr\",\r\n    \"r4t3albe\",\r\n    \"rta3l2e\",\r\n    \"r2t1all\",\r\n    \"rtal4s3e\",\r\n    \"rt1am\",\r\n    \"rt2ame\",\r\n    \"rt1ann\",\r\n    \"rt1ant\",\r\n    \"r2tanw\",\r\n    \"r2t1ar\",\r\n    \"rt3att\",\r\n    \"r2taut\",\r\n    \"rt3äh\",\r\n    \"rt1änd\",\r\n    \"rt1ärm\",\r\n    \"rte1e2\",\r\n    \"r3teh\",\r\n    \"rt1ein\",\r\n    \"rt4eind\",\r\n    \"r4t3einh\",\r\n    \"rte2i1s4\",\r\n    \"r2telf\",\r\n    \"rtels4t\",\r\n    \"r2temo\",\r\n    \"rte2n1\",\r\n    \"rte4na\",\r\n    \"rten3s4\",\r\n    \"r4t3ents\",\r\n    \"rten3z\",\r\n    \"rteo2\",\r\n    \"rt3erei\",\r\n    \"r6tereig\",\r\n    \"r4ter4fa\",\r\n    \"r4ter4fo\",\r\n    \"rt1erh\",\r\n    \"rt1erk\",\r\n    \"r4t3er4la\",\r\n    \"rter6mit\",\r\n    \"r4t3ernä\",\r\n    \"r2ter2ö\",\r\n    \"rter4re\",\r\n    \"rt1ers\",\r\n    \"rt4ersp\",\r\n    \"rt1erz\",\r\n    \"rte3sk\",\r\n    \"rt1he\",\r\n    \"r2thel\",\r\n    \"r2t1hi\",\r\n    \"rt2hum\",\r\n    \"r2t1id\",\r\n    \"rtik2\",\r\n    \"r2t1ima\",\r\n    \"r4t3inf\",\r\n    \"rt2is\",\r\n    \"rt2it\",\r\n    \"rt3l\",\r\n    \"rt3m\",\r\n    \"r2t1ob\",\r\n    \"rto1pf\",\r\n    \"rt1orc\",\r\n    \"r4torg\",\r\n    \"r4trak\",\r\n    \"rt3rams\",\r\n    \"rt3rand\",\r\n    \"rt3rati\",\r\n    \"rt3rec\",\r\n    \"rtre1s\",\r\n    \"r4t3ris\",\r\n    \"rt3rol\",\r\n    \"rt3roma\",\r\n    \"r3trop\",\r\n    \"r2trou\",\r\n    \"rtrü2c\",\r\n    \"rt3sc\",\r\n    \"rt4s1eh\",\r\n    \"rts2el\",\r\n    \"rt3sex\",\r\n    \"rts3ing\",\r\n    \"rts1o\",\r\n    \"rts1pa\",\r\n    \"rt4s3tan\",\r\n    \"rts4tie\",\r\n    \"rt2su\",\r\n    \"rt3t4\",\r\n    \"rt1umb\",\r\n    \"rt2u3na\",\r\n    \"r2t1urt\",\r\n    \"rtu4t\",\r\n    \"r2t3ute\",\r\n    \"r3tü\",\r\n    \"rty1\",\r\n    \"rt3z2\",\r\n    \"1ru\",\r\n    \"ru1a\",\r\n    \"ru4ale\",\r\n    \"ru3a2r3\",\r\n    \"rube4\",\r\n    \"ruben3\",\r\n    \"rubens4\",\r\n    \"rub2i\",\r\n    \"rucht3s4\",\r\n    \"ru6ckerl\",\r\n    \"ru2cku\",\r\n    \"rude2a\",\r\n    \"ru2dr\",\r\n    \"ru2et\",\r\n    \"3ruf\",\r\n    \"ru2f1a\",\r\n    \"ruff4\",\r\n    \"ruf2s\",\r\n    \"ruf4ter\",\r\n    \"ru2g3r\",\r\n    \"3ruhm\",\r\n    \"2r1uhr\",\r\n    \"3ruin\",\r\n    \"ru3ins\",\r\n    \"ru1is\",\r\n    \"2rum\",\r\n    \"ruma2\",\r\n    \"4r3umd\",\r\n    \"4r3umf\",\r\n    \"4r3umg\",\r\n    \"ru2mi\",\r\n    \"4r3uml\",\r\n    \"4r3umsa\",\r\n    \"4r3umw\",\r\n    \"4rumz\",\r\n    \"2r1una\",\r\n    \"2rund\",\r\n    \"run4d1a\",\r\n    \"runden5e\",\r\n    \"run4d3er\",\r\n    \"run2e\",\r\n    \"runei2\",\r\n    \"4r1unf\",\r\n    \"run2ga\",\r\n    \"2rungl\",\r\n    \"4r1u2ni\",\r\n    \"r3unio\",\r\n    \"ru4nis.\",\r\n    \"run2kr\",\r\n    \"4r1unl\",\r\n    \"2r1unm\",\r\n    \"4runn\",\r\n    \"4runr\",\r\n    \"r1unse\",\r\n    \"4r3unt\",\r\n    \"4runw\",\r\n    \"2rupd\",\r\n    \"ru3pr\",\r\n    \"4r1ur\",\r\n    \"ru2ra\",\r\n    \"ru2r1e\",\r\n    \"5ruro\",\r\n    \"r4us.\",\r\n    \"ru2si\",\r\n    \"rus2p\",\r\n    \"rus2s1p\",\r\n    \"rus4st\",\r\n    \"ru2st\",\r\n    \"ru2tab\",\r\n    \"rute4\",\r\n    \"ru4tei\",\r\n    \"ru4t1el\",\r\n    \"ru2t1er\",\r\n    \"ru4t1o2\",\r\n    \"ru2t3r\",\r\n    \"rut6scha\",\r\n    \"4ruz\",\r\n    \"ru2z1w\",\r\n    \"1rü\",\r\n    \"2rüb\",\r\n    \"4rübu\",\r\n    \"rü1ch\",\r\n    \"rü4ckel\",\r\n    \"rü2hel\",\r\n    \"rüher2\",\r\n    \"rüh1l\",\r\n    \"4rümm\",\r\n    \"rün3z\",\r\n    \"2r1v\",\r\n    \"r3ve\",\r\n    \"rv2el\",\r\n    \"rve4n1e\",\r\n    \"rvenen4\",\r\n    \"r4ventz\",\r\n    \"rve3s\",\r\n    \"r3v2o\",\r\n    \"2r1w\",\r\n    \"rwe4gel\",\r\n    \"r3wei\",\r\n    \"rwelt4s\",\r\n    \"r5werk\",\r\n    \"r5wert\",\r\n    \"r2wo.\",\r\n    \"r3woh\",\r\n    \"r3wort\",\r\n    \"rwun3s\",\r\n    \"4r1x\",\r\n    \"1ry\",\r\n    \"2r1ya\",\r\n    \"ry2c\",\r\n    \"rygi3\",\r\n    \"ry1la\",\r\n    \"ry2le\",\r\n    \"ry1os\",\r\n    \"ry3sth\",\r\n    \"rysti1\",\r\n    \"2r1z\",\r\n    \"rz2an\",\r\n    \"rz3ant\",\r\n    \"r2zar\",\r\n    \"r2zat\",\r\n    \"rz2än\",\r\n    \"r5zene\",\r\n    \"rz1eng\",\r\n    \"r4zents\",\r\n    \"rze2p\",\r\n    \"rze2ra\",\r\n    \"r2z1erd\",\r\n    \"r2z1erf\",\r\n    \"r2z1erg\",\r\n    \"rz1erk\",\r\n    \"r2z1erl\",\r\n    \"r2z1erw\",\r\n    \"r2z1ess\",\r\n    \"rz1id\",\r\n    \"rz1int\",\r\n    \"rzir3\",\r\n    \"r3z2of\",\r\n    \"r2z3ot\",\r\n    \"rz2tan\",\r\n    \"rz3te\",\r\n    \"rz2th\",\r\n    \"rzu4g3l\",\r\n    \"r2zwä\",\r\n    \"r3z2wec\",\r\n    \"r2zwir\",\r\n    \"1sa\",\r\n    \"3sa.\",\r\n    \"3s2aa\",\r\n    \"2s1ab\",\r\n    \"sab2ä\",\r\n    \"4sabd\",\r\n    \"sa2be\",\r\n    \"3sabet\",\r\n    \"sa2bit\",\r\n    \"sa2bl\",\r\n    \"4sabm\",\r\n    \"sa2bor\",\r\n    \"sa2br\",\r\n    \"4s3abs\",\r\n    \"3sac\",\r\n    \"4sacc\",\r\n    \"5sache\",\r\n    \"sa2cho\",\r\n    \"sachs2\",\r\n    \"sach3t\",\r\n    \"s2ack\",\r\n    \"2s1ada\",\r\n    \"sa2der\",\r\n    \"s1adm\",\r\n    \"2s1a2dr\",\r\n    \"3safa\",\r\n    \"sa4fe\",\r\n    \"4s3aff\",\r\n    \"sa1f4r\",\r\n    \"3s2aft\",\r\n    \"saf4tr\",\r\n    \"3saga\",\r\n    \"sag2e\",\r\n    \"5sage.\",\r\n    \"5sagen.\",\r\n    \"4s3agent\",\r\n    \"2s1agg\",\r\n    \"sa2gio\",\r\n    \"sag4n\",\r\n    \"s1a2gr\",\r\n    \"s2ahs\",\r\n    \"3s2ai\",\r\n    \"sa3i2k1\",\r\n    \"sail2\",\r\n    \"sai4r\",\r\n    \"2s1ak\",\r\n    \"sa2ka\",\r\n    \"sak2e\",\r\n    \"3saki\",\r\n    \"4sakk\",\r\n    \"3sako\",\r\n    \"4sakt\",\r\n    \"3s2al.\",\r\n    \"3s2al2a\",\r\n    \"sa2l3an\",\r\n    \"sa2lar\",\r\n    \"sa3lat\",\r\n    \"3s2alb\",\r\n    \"sal3bl\",\r\n    \"3s2ald\",\r\n    \"sa4lerk\",\r\n    \"3sali\",\r\n    \"sa2l1id\",\r\n    \"s1all\",\r\n    \"sal3la\",\r\n    \"sal4le.\",\r\n    \"3sal2o\",\r\n    \"sal3or\",\r\n    \"sal2se\",\r\n    \"s1alt\",\r\n    \"s2al3t2h\",\r\n    \"3salz\",\r\n    \"3sam\",\r\n    \"4s1a2mat\",\r\n    \"4s1a2mei\",\r\n    \"s2amen\",\r\n    \"sa2min\",\r\n    \"5samm\",\r\n    \"6s1amma\",\r\n    \"4s1amn\",\r\n    \"s1am3p4\",\r\n    \"4samph\",\r\n    \"sam4ta\",\r\n    \"sam4to\",\r\n    \"samt3st\",\r\n    \"s1an\",\r\n    \"s2an.\",\r\n    \"2s3a2na\",\r\n    \"san4at\",\r\n    \"sa2nä\",\r\n    \"2s3anb\",\r\n    \"s2an2c\",\r\n    \"3s2and\",\r\n    \"s4and.\",\r\n    \"san4dan\",\r\n    \"san4d3ri\",\r\n    \"sand3s\",\r\n    \"sa2ner\",\r\n    \"3sang.\",\r\n    \"4sanga\",\r\n    \"2s3anh\",\r\n    \"3sani\",\r\n    \"3sanken\",\r\n    \"2s3anl\",\r\n    \"2sa2no\",\r\n    \"2s3anp\",\r\n    \"2s3ans\",\r\n    \"s4anse\",\r\n    \"san4sk\",\r\n    \"san3sp\",\r\n    \"4santei\",\r\n    \"4s3antr\",\r\n    \"4s3anw\",\r\n    \"2sanz\",\r\n    \"2s1ap\",\r\n    \"sa2pe\",\r\n    \"s2aph\",\r\n    \"sap3p\",\r\n    \"3sapr\",\r\n    \"2s1aq\",\r\n    \"2s1ar\",\r\n    \"3s4ar.\",\r\n    \"3sara\",\r\n    \"4s3arb\",\r\n    \"3s2ard\",\r\n    \"s2are\",\r\n    \"s3area\",\r\n    \"3sarg\",\r\n    \"sar2ga\",\r\n    \"sa3rin\",\r\n    \"s2ark\",\r\n    \"sa2rom\",\r\n    \"s2ars\",\r\n    \"4sart\",\r\n    \"sa4r1u2\",\r\n    \"3sas.\",\r\n    \"sas2a\",\r\n    \"s1asc\",\r\n    \"s1a4si\",\r\n    \"2s1a4sp\",\r\n    \"sas2tu\",\r\n    \"4sa2sy\",\r\n    \"sat2a\",\r\n    \"satan4\",\r\n    \"sa4t3ant\",\r\n    \"sat1ei\",\r\n    \"2s3a4tem\",\r\n    \"s3ath\",\r\n    \"3sat2i\",\r\n    \"4s3atl\",\r\n    \"4satm\",\r\n    \"sat2o\",\r\n    \"sa4tol\",\r\n    \"sa2tr\",\r\n    \"sa3ts\",\r\n    \"s3atta\",\r\n    \"4s3attr\",\r\n    \"3satz\",\r\n    \"5satza\",\r\n    \"sat4zel\",\r\n    \"sat4z3en\",\r\n    \"s1au\",\r\n    \"3sau.\",\r\n    \"3sauc\",\r\n    \"3sau2e\",\r\n    \"2sauf\",\r\n    \"4s3aufb\",\r\n    \"3saug\",\r\n    \"saug3le\",\r\n    \"sau2gr\",\r\n    \"3saum\",\r\n    \"3saur\",\r\n    \"sauri1\",\r\n    \"2saus\",\r\n    \"3saus.\",\r\n    \"4s3ausb\",\r\n    \"4s3ausf\",\r\n    \"4sausg\",\r\n    \"sau2sp\",\r\n    \"4sauss\",\r\n    \"3sauste\",\r\n    \"4s3ausw\",\r\n    \"2sauß\",\r\n    \"s1av\",\r\n    \"sa2ve\",\r\n    \"sa2xi\",\r\n    \"sa2y1\",\r\n    \"1sä\",\r\n    \"3säb\",\r\n    \"3s2äc\",\r\n    \"3s2äg\",\r\n    \"s1äh\",\r\n    \"4s3ähn\",\r\n    \"3säl\",\r\n    \"4s1ält\",\r\n    \"2s1äm\",\r\n    \"4s3änd\",\r\n    \"4s3äp\",\r\n    \"2säq\",\r\n    \"2s1är\",\r\n    \"3s2ärg\",\r\n    \"3s2ät\",\r\n    \"3säul\",\r\n    \"4säuß\",\r\n    \"4s3b4\",\r\n    \"sba4ne\",\r\n    \"sbau6men\",\r\n    \"sber2e\",\r\n    \"1sc\",\r\n    \"2sc.\",\r\n    \"2scab\",\r\n    \"2scac\",\r\n    \"2scal\",\r\n    \"2scam\",\r\n    \"2scar\",\r\n    \"2scat\",\r\n    \"2s1ce\",\r\n    \"4s3cei\",\r\n    \"4sch.\",\r\n    \"3s4chal\",\r\n    \"sch3ana\",\r\n    \"4schanc\",\r\n    \"4schang\",\r\n    \"4schao\",\r\n    \"4schara\",\r\n    \"4sch3ar5m\",\r\n    \"s2chä\",\r\n    \"2schäq\",\r\n    \"4schb\",\r\n    \"4schc\",\r\n    \"2schd\",\r\n    \"sch2e\",\r\n    \"4schech\",\r\n    \"sche2f\",\r\n    \"6schef.\",\r\n    \"6schefi\",\r\n    \"6schefs\",\r\n    \"s4chei\",\r\n    \"4sch3ei.\",\r\n    \"sch6ein.\",\r\n    \"s4chema\",\r\n    \"4schemp\",\r\n    \"sch5erfü\",\r\n    \"sch5erla\",\r\n    \"3sches\",\r\n    \"4schess\",\r\n    \"4schex\",\r\n    \"2schf\",\r\n    \"2schg\",\r\n    \"2schh\",\r\n    \"schi4d\",\r\n    \"schi4e\",\r\n    \"4schiru\",\r\n    \"3schis\",\r\n    \"2schk\",\r\n    \"s4chl\",\r\n    \"sch4lac\",\r\n    \"sch4lag\",\r\n    \"4schle.\",\r\n    \"6schlein\",\r\n    \"4schloc\",\r\n    \"4schlöc\",\r\n    \"4schmas\",\r\n    \"4schmed\",\r\n    \"2schmö\",\r\n    \"4schmüh\",\r\n    \"2schmy\",\r\n    \"2schn.\",\r\n    \"4schneb\",\r\n    \"4schobj\",\r\n    \"4schorc\",\r\n    \"4schör\",\r\n    \"4schp\",\r\n    \"2schq\",\r\n    \"4schrad\",\r\n    \"4schre.\",\r\n    \"4schrin\",\r\n    \"4s3chris\",\r\n    \"sch3rom\",\r\n    \"4schron\",\r\n    \"4schrou\",\r\n    \"4schs\",\r\n    \"schs2e\",\r\n    \"sch3s2k\",\r\n    \"schs4ti\",\r\n    \"4sch3t\",\r\n    \"scht2a\",\r\n    \"scht2i\",\r\n    \"s4chu\",\r\n    \"4schunt\",\r\n    \"2schv\",\r\n    \"sch4web\",\r\n    \"4schweg\",\r\n    \"6schwerk\",\r\n    \"4schwet\",\r\n    \"4schwid\",\r\n    \"3schwu\",\r\n    \"2schz\",\r\n    \"2scj\",\r\n    \"4s3cl\",\r\n    \"2s3co\",\r\n    \"4scoa\",\r\n    \"3s4co2p\",\r\n    \"scre4m\",\r\n    \"2scs\",\r\n    \"2scu\",\r\n    \"2scy\",\r\n    \"4s3d2\",\r\n    \"sda3me\",\r\n    \"sde1s2\",\r\n    \"sdien4e\",\r\n    \"sdi1st\",\r\n    \"1se\",\r\n    \"3se.\",\r\n    \"se3at.\",\r\n    \"seb2\",\r\n    \"3sebä\",\r\n    \"2s1e2ben\",\r\n    \"2s1echo\",\r\n    \"sech4st\",\r\n    \"2s1echt\",\r\n    \"2s1e2ck\",\r\n    \"se2dik\",\r\n    \"3see\",\r\n    \"see1i2\",\r\n    \"see3ig\",\r\n    \"se2el\",\r\n    \"see3len\",\r\n    \"se3en.\",\r\n    \"see3n2e\",\r\n    \"se3enp\",\r\n    \"se3er.\",\r\n    \"see1ra\",\r\n    \"seer2e\",\r\n    \"se1erf\",\r\n    \"se3e2r1i\",\r\n    \"se1erk\",\r\n    \"se1ers\",\r\n    \"see3s4\",\r\n    \"2s3eff\",\r\n    \"sef4l\",\r\n    \"3s2eg\",\r\n    \"4s3e2gal\",\r\n    \"se2gl\",\r\n    \"seg4r\",\r\n    \"3seh\",\r\n    \"seh1a\",\r\n    \"se2hag\",\r\n    \"se2hak\",\r\n    \"se2hel\",\r\n    \"seher4e\",\r\n    \"se4herk\",\r\n    \"se2h1in\",\r\n    \"seh3l\",\r\n    \"se4h3ö\",\r\n    \"seh3ra\",\r\n    \"seh3re\",\r\n    \"seh5r2i\",\r\n    \"seh1s\",\r\n    \"se2hüb\",\r\n    \"2sei.\",\r\n    \"2s1eic\",\r\n    \"2s1eid.\",\r\n    \"sei3da\",\r\n    \"4s3eifer\",\r\n    \"2s1eig\",\r\n    \"3seil\",\r\n    \"s2eim\",\r\n    \"s1ein\",\r\n    \"5s4ein.\",\r\n    \"2seinb\",\r\n    \"sein4du\",\r\n    \"2sei3n2e\",\r\n    \"seine3i\",\r\n    \"4seinfl\",\r\n    \"sein4fo\",\r\n    \"2seing\",\r\n    \"2s3einh\",\r\n    \"2seini\",\r\n    \"2seink\",\r\n    \"2seinl\",\r\n    \"2seinn\",\r\n    \"sein4ne\",\r\n    \"2s3einr\",\r\n    \"s4eins.\",\r\n    \"4seinsc\",\r\n    \"4seinsp\",\r\n    \"sein8stit\",\r\n    \"sein6str\",\r\n    \"2seint\",\r\n    \"sein4to\",\r\n    \"4seintr\",\r\n    \"2seinw\",\r\n    \"2s3einz\",\r\n    \"2s1eis\",\r\n    \"3s2eism\",\r\n    \"3s2eit\",\r\n    \"seit2s\",\r\n    \"3sek\",\r\n    \"4s1e2kel\",\r\n    \"4sekz\",\r\n    \"s2el.\",\r\n    \"se2l1a\",\r\n    \"3s2elb\",\r\n    \"sel3d4\",\r\n    \"sel1ec\",\r\n    \"se2lef\",\r\n    \"2s3e2leg\",\r\n    \"6selektr\",\r\n    \"2selem\",\r\n    \"se2ler\",\r\n    \"sel3ers\",\r\n    \"2self.\",\r\n    \"selin4s\",\r\n    \"s3e2lit\",\r\n    \"2s1elix\",\r\n    \"s2ell\",\r\n    \"se2lob\",\r\n    \"s2els\",\r\n    \"sel3sz\",\r\n    \"selt2e\",\r\n    \"selz2\",\r\n    \"sem2e\",\r\n    \"2s1e2mis\",\r\n    \"2s3emp\",\r\n    \"s4en.\",\r\n    \"3sena\",\r\n    \"se4nad\",\r\n    \"se3nal\",\r\n    \"se4nas\",\r\n    \"sen3au\",\r\n    \"se2nä\",\r\n    \"s2enb\",\r\n    \"4s1endl\",\r\n    \"sen3d4r\",\r\n    \"s1endw\",\r\n    \"senen1\",\r\n    \"4senerg\",\r\n    \"se4ners\",\r\n    \"s2enf\",\r\n    \"3s4eni\",\r\n    \"se2nid\",\r\n    \"se2n1im\",\r\n    \"3s2enk\",\r\n    \"sen6keli\",\r\n    \"se2no\",\r\n    \"se4nott\",\r\n    \"se4noz\",\r\n    \"3sens\",\r\n    \"s2ensa\",\r\n    \"sen4s3e4h\",\r\n    \"4sensem\",\r\n    \"s4ensi\",\r\n    \"sen4si4d\",\r\n    \"senst2\",\r\n    \"sen8s7turm\",\r\n    \"sent2a\",\r\n    \"sen3tä\",\r\n    \"2sentd\",\r\n    \"4sentf\",\r\n    \"2sentg\",\r\n    \"4sentla\",\r\n    \"2sentn\",\r\n    \"s2ento\",\r\n    \"sen3tr\",\r\n    \"4s1ents\",\r\n    \"2sentw\",\r\n    \"4sentwu\",\r\n    \"4sentwü\",\r\n    \"4sentz\",\r\n    \"se4n3u2\",\r\n    \"sen3za\",\r\n    \"sen4zer\",\r\n    \"sen3zw\",\r\n    \"seo2r\",\r\n    \"se2pen\",\r\n    \"3seq\",\r\n    \"s4er.\",\r\n    \"se2r3a2d\",\r\n    \"ser3al\",\r\n    \"se3rand\",\r\n    \"ser3äus\",\r\n    \"serb2\",\r\n    \"s3erbe.\",\r\n    \"serd2\",\r\n    \"se2r1e2b\",\r\n    \"se3reie\",\r\n    \"6sereign\",\r\n    \"se4r3eim\",\r\n    \"se4rein\",\r\n    \"sere2m\",\r\n    \"5s4eren\",\r\n    \"se4r3enk\",\r\n    \"s4erfe\",\r\n    \"s1erfo\",\r\n    \"s2erfr\",\r\n    \"s3erfü\",\r\n    \"4serfül\",\r\n    \"serg2\",\r\n    \"ser3ga\",\r\n    \"ser3gl\",\r\n    \"s2ergr\",\r\n    \"s1erh\",\r\n    \"2serhö\",\r\n    \"3seri\",\r\n    \"5serie\",\r\n    \"serk4\",\r\n    \"4s3ermit\",\r\n    \"s2ern.\",\r\n    \"s3erneu\",\r\n    \"2s3ernt\",\r\n    \"sero4b\",\r\n    \"2s1e2ros\",\r\n    \"s1erot\",\r\n    \"s1erö\",\r\n    \"2seröf\",\r\n    \"s2ers.\",\r\n    \"2sersa\",\r\n    \"4serseh\",\r\n    \"ser6sehn\",\r\n    \"4ser4set\",\r\n    \"se3ru\",\r\n    \"se4ruh\",\r\n    \"ser2um\",\r\n    \"s3e4rup\",\r\n    \"5s4er3v\",\r\n    \"s1erz\",\r\n    \"3s4es.\",\r\n    \"se3s4a\",\r\n    \"se2sel\",\r\n    \"se3sk\",\r\n    \"2s1essa\",\r\n    \"se1sta\",\r\n    \"se3stec\",\r\n    \"se3stei\",\r\n    \"se5stemp\",\r\n    \"sest3ri\",\r\n    \"se3su\",\r\n    \"4s3e4tap\",\r\n    \"se2tat\",\r\n    \"2s1e2th\",\r\n    \"set2i\",\r\n    \"4s1e2tik\",\r\n    \"3setz\",\r\n    \"3seuc\",\r\n    \"2s1eul\",\r\n    \"seum4\",\r\n    \"se1u2n\",\r\n    \"s1ex\",\r\n    \"3sex.\",\r\n    \"2sexa\",\r\n    \"se2xe\",\r\n    \"sex3en\",\r\n    \"s2exi\",\r\n    \"s2exo\",\r\n    \"4sexp\",\r\n    \"sex3t4r\",\r\n    \"2sexz\",\r\n    \"1sé\",\r\n    \"4s3f4\",\r\n    \"sfal6l5er\",\r\n    \"4s3g4\",\r\n    \"sgang4\",\r\n    \"sge3sa\",\r\n    \"sge5t\",\r\n    \"2s1h\",\r\n    \"4sh.\",\r\n    \"sh2a\",\r\n    \"3sha.\",\r\n    \"shal4li\",\r\n    \"shalt2\",\r\n    \"shalt4s\",\r\n    \"4shan\",\r\n    \"s3hä\",\r\n    \"sh2e\",\r\n    \"sh2i\",\r\n    \"3shi.\",\r\n    \"s2hip\",\r\n    \"shi4r\",\r\n    \"sh3n\",\r\n    \"4s3hoc\",\r\n    \"4s3hof\",\r\n    \"4shom\",\r\n    \"3shop\",\r\n    \"sho4re\",\r\n    \"3s4how\",\r\n    \"4s3hö\",\r\n    \"sh4r2\",\r\n    \"4shs\",\r\n    \"s3hu\",\r\n    \"1si\",\r\n    \"3si.\",\r\n    \"si3ach.\",\r\n    \"2siat\",\r\n    \"5s4i1c\",\r\n    \"si2cha\",\r\n    \"2s1idea\",\r\n    \"2sidee\",\r\n    \"2s1ideo\",\r\n    \"si3der\",\r\n    \"s2i3do\",\r\n    \"2sidy\",\r\n    \"3s4ie\",\r\n    \"sie2bu\",\r\n    \"siege4s\",\r\n    \"sien3\",\r\n    \"si3ene\",\r\n    \"si1err\",\r\n    \"si1f4\",\r\n    \"3s4ig\",\r\n    \"si2g1a2\",\r\n    \"si2g1ei\",\r\n    \"sig4n\",\r\n    \"si2g3r\",\r\n    \"sig4st\",\r\n    \"si2k1ab\",\r\n    \"si2kak\",\r\n    \"si2kar\",\r\n    \"si2k1ä\",\r\n    \"si2k1el\",\r\n    \"si4kens\",\r\n    \"sik3erl\",\r\n    \"si2k3i\",\r\n    \"sikin1\",\r\n    \"si2k3n\",\r\n    \"si2k3r\",\r\n    \"sik3s\",\r\n    \"sik3t2\",\r\n    \"si2ku\",\r\n    \"3silb\",\r\n    \"sil2br\",\r\n    \"sil2e\",\r\n    \"3sili\",\r\n    \"s1ill\",\r\n    \"3silo\",\r\n    \"2s1imm\",\r\n    \"sim4st\",\r\n    \"3simu\",\r\n    \"si3n4a\",\r\n    \"2s1ind\",\r\n    \"2s1inf\",\r\n    \"4s3infe\",\r\n    \"s3infor\",\r\n    \"sing1a\",\r\n    \"sin3g4le\",\r\n    \"sin2g3r\",\r\n    \"sings2\",\r\n    \"sing3sa\",\r\n    \"sing3so\",\r\n    \"2s1inh\",\r\n    \"s1in1i\",\r\n    \"sini1e\",\r\n    \"s2ink\",\r\n    \"sinner4\",\r\n    \"2s1inno\",\r\n    \"4s1inq\",\r\n    \"2s1ins\",\r\n    \"4sinso\",\r\n    \"4sinst\",\r\n    \"2s1int\",\r\n    \"4s1inv\",\r\n    \"sion4\",\r\n    \"sirn4\",\r\n    \"2sirr\",\r\n    \"3siru\",\r\n    \"si2sa\",\r\n    \"si4sam\",\r\n    \"s2isc\",\r\n    \"si4schu\",\r\n    \"si2s1e2\",\r\n    \"si2si\",\r\n    \"s1i2so\",\r\n    \"sis1or\",\r\n    \"si2s3p\",\r\n    \"sis3s4\",\r\n    \"3s4ist\",\r\n    \"si2su\",\r\n    \"3s2it\",\r\n    \"si2tal\",\r\n    \"si2tau\",\r\n    \"si2tra\",\r\n    \"sit2u\",\r\n    \"si2va\",\r\n    \"sive3\",\r\n    \"siver2\",\r\n    \"si4v3erf\",\r\n    \"si2vin\",\r\n    \"siv1o4\",\r\n    \"si2vor\",\r\n    \"siz2\",\r\n    \"1sí\",\r\n    \"4s3j\",\r\n    \"2s1k2\",\r\n    \"4sk.\",\r\n    \"sk4a\",\r\n    \"4s3kab\",\r\n    \"s3kad\",\r\n    \"4skalk\",\r\n    \"s3kalt\",\r\n    \"4s3kam\",\r\n    \"4skana\",\r\n    \"4skanä\",\r\n    \"3skanda\",\r\n    \"4skann\",\r\n    \"4skap\",\r\n    \"4s3kar\",\r\n    \"4s3kas\",\r\n    \"ska4te.\",\r\n    \"4skateg\",\r\n    \"ska4tes\",\r\n    \"ska4to\",\r\n    \"4skau\",\r\n    \"4s3kä\",\r\n    \"4skb\",\r\n    \"ske2li\",\r\n    \"4sken\",\r\n    \"3skep\",\r\n    \"4sker\",\r\n    \"4s3ket\",\r\n    \"s3kh\",\r\n    \"3s2ki.\",\r\n    \"3s2kif\",\r\n    \"3s2kik\",\r\n    \"s3kim\",\r\n    \"s3kin\",\r\n    \"ski1s\",\r\n    \"s2kis.\",\r\n    \"3skiz\",\r\n    \"sk4l\",\r\n    \"4s3klas\",\r\n    \"3s2klav\",\r\n    \"4s3klu\",\r\n    \"4sk4n\",\r\n    \"4skoh\",\r\n    \"4skol\",\r\n    \"4skom\",\r\n    \"4s3kon\",\r\n    \"3skop.\",\r\n    \"sko2pr\",\r\n    \"4skos\",\r\n    \"4skow\",\r\n    \"4s3kö\",\r\n    \"sk4r\",\r\n    \"4s3kra\",\r\n    \"s3kre\",\r\n    \"4s3kro\",\r\n    \"4sks\",\r\n    \"4sk3t2\",\r\n    \"skto2\",\r\n    \"3skulp\",\r\n    \"4skun\",\r\n    \"sku2s1\",\r\n    \"4skü\",\r\n    \"4skv\",\r\n    \"2s1l2\",\r\n    \"sl4a\",\r\n    \"s3lab\",\r\n    \"3slal\",\r\n    \"sla2ma\",\r\n    \"sla2ve\",\r\n    \"s2law\",\r\n    \"s3lä\",\r\n    \"sl3b\",\r\n    \"4s3le\",\r\n    \"sler3s\",\r\n    \"s3li\",\r\n    \"3s4lip\",\r\n    \"slo3be\",\r\n    \"s3loc\",\r\n    \"s4loga\",\r\n    \"3s2low\",\r\n    \"s3ly\",\r\n    \"4s3m4\",\r\n    \"sma3b4\",\r\n    \"sma3sc\",\r\n    \"sme3na\",\r\n    \"smi2t3\",\r\n    \"2s3n2\",\r\n    \"snab4\",\r\n    \"sni4a\",\r\n    \"sni3er.\",\r\n    \"sni3ers\",\r\n    \"4s5not\",\r\n    \"1so\",\r\n    \"3so.\",\r\n    \"2s3oas\",\r\n    \"2s1o2b\",\r\n    \"3s2o3ba\",\r\n    \"4sobj\",\r\n    \"4s3obo\",\r\n    \"so1c\",\r\n    \"so2di\",\r\n    \"so2do\",\r\n    \"so3et\",\r\n    \"2s1o2fe\",\r\n    \"2soffi\",\r\n    \"3soft\",\r\n    \"3sog\",\r\n    \"sog4l\",\r\n    \"s1o2he\",\r\n    \"3sohl\",\r\n    \"sohle2\",\r\n    \"2s3ohng\",\r\n    \"2s1ohr\",\r\n    \"3soi2\",\r\n    \"so3id\",\r\n    \"2s3ok\",\r\n    \"3sol.\",\r\n    \"so3la\",\r\n    \"so4lau\",\r\n    \"3sold\",\r\n    \"3sole\",\r\n    \"so2l1ei\",\r\n    \"so3li\",\r\n    \"sol2la\",\r\n    \"sol4ler\",\r\n    \"so3l2o\",\r\n    \"4s3o2ly\",\r\n    \"3somm\",\r\n    \"3s2on\",\r\n    \"son2a\",\r\n    \"son3au\",\r\n    \"sone2\",\r\n    \"son4gl\",\r\n    \"son3sä\",\r\n    \"son2s1o\",\r\n    \"so3o\",\r\n    \"2sope\",\r\n    \"2s1opf\",\r\n    \"3sopr\",\r\n    \"sop3s\",\r\n    \"4s3ord\",\r\n    \"sore2\",\r\n    \"so2rei\",\r\n    \"so2rel\",\r\n    \"4s1orga\",\r\n    \"so1rh\",\r\n    \"2s1o2rie\",\r\n    \"so2ro\",\r\n    \"3sorp\",\r\n    \"3s2orti\",\r\n    \"so4ru\",\r\n    \"3sos\",\r\n    \"s2os.\",\r\n    \"4so4sk\",\r\n    \"4sosm\",\r\n    \"4so1st\",\r\n    \"4s1osz\",\r\n    \"3so3ß\",\r\n    \"2sot\",\r\n    \"so3t2h\",\r\n    \"3sott\",\r\n    \"soun2\",\r\n    \"sound1\",\r\n    \"so3unds\",\r\n    \"so3unt\",\r\n    \"2s1out\",\r\n    \"3sov\",\r\n    \"3sow\",\r\n    \"2s1o2x\",\r\n    \"3soz\",\r\n    \"s1oze\",\r\n    \"1sö\",\r\n    \"sö2c\",\r\n    \"2s1ö2d\",\r\n    \"2sö2f\",\r\n    \"2s1ök\",\r\n    \"2s1öl\",\r\n    \"2s1ös\",\r\n    \"1sp2\",\r\n    \"2sp.\",\r\n    \"4spaa\",\r\n    \"s2pace\",\r\n    \"2spack\",\r\n    \"2spag\",\r\n    \"2spak\",\r\n    \"2spala\",\r\n    \"2spalä\",\r\n    \"3spalt\",\r\n    \"spa2m\",\r\n    \"s2pan.\",\r\n    \"3spannu\",\r\n    \"s2pans\",\r\n    \"3spant\",\r\n    \"2spanz\",\r\n    \"2spap\",\r\n    \"2s3para\",\r\n    \"2sparo\",\r\n    \"5s6parten\",\r\n    \"4spartn\",\r\n    \"4sparty\",\r\n    \"3spaß\",\r\n    \"3spat.\",\r\n    \"2spati\",\r\n    \"4spatr\",\r\n    \"2spau\",\r\n    \"3s2paz\",\r\n    \"s2pä\",\r\n    \"2späd\",\r\n    \"3späh\",\r\n    \"2spär\",\r\n    \"2späs\",\r\n    \"2s3pe.\",\r\n    \"2speg\",\r\n    \"4spein\",\r\n    \"4spensi\",\r\n    \"spe3p4\",\r\n    \"s2pera\",\r\n    \"3s2perg\",\r\n    \"s1peri\",\r\n    \"4sperle\",\r\n    \"2spero\",\r\n    \"s2perr\",\r\n    \"2spers\",\r\n    \"2sperü\",\r\n    \"4spet\",\r\n    \"3s4pez\",\r\n    \"4s3pf4\",\r\n    \"2spha\",\r\n    \"s2phä\",\r\n    \"3sphär\",\r\n    \"s3phe\",\r\n    \"s4phin\",\r\n    \"3s2pi4e\",\r\n    \"4spier\",\r\n    \"spier4r\",\r\n    \"spi2k\",\r\n    \"4s3pil\",\r\n    \"3spio\",\r\n    \"4s3pip\",\r\n    \"4s3pis\",\r\n    \"2sp4l\",\r\n    \"4spla\",\r\n    \"4s3plä\",\r\n    \"4sple\",\r\n    \"sp5le.\",\r\n    \"3s2pli\",\r\n    \"4s3plu\",\r\n    \"2s3pn\",\r\n    \"2spod\",\r\n    \"4spoe\",\r\n    \"2spog\",\r\n    \"s2poi\",\r\n    \"4s3pok\",\r\n    \"4spol\",\r\n    \"s2pons\",\r\n    \"4spoo\",\r\n    \"2spop\",\r\n    \"s2pore\",\r\n    \"3s2porn\",\r\n    \"spor6tag\",\r\n    \"4s3pos\",\r\n    \"4spote\",\r\n    \"4spr.\",\r\n    \"3s2prac\",\r\n    \"2sprak\",\r\n    \"2sprax\",\r\n    \"2spräm\",\r\n    \"4spräs\",\r\n    \"3s4prec\",\r\n    \"4spred\",\r\n    \"4spreis\",\r\n    \"5s2pren\",\r\n    \"2s3pres\",\r\n    \"s2pric\",\r\n    \"3spring\",\r\n    \"4sprinz\",\r\n    \"2sprob\",\r\n    \"2sprog\",\r\n    \"4sproj\",\r\n    \"4sprop\",\r\n    \"3spross\",\r\n    \"2sprot\",\r\n    \"2sproz\",\r\n    \"3sprö\",\r\n    \"3s2pru\",\r\n    \"3sprüc\",\r\n    \"2sprüf\",\r\n    \"3sprün\",\r\n    \"4s3ps\",\r\n    \"2s4p3t\",\r\n    \"2spub\",\r\n    \"2spud\",\r\n    \"3spuk\",\r\n    \"3s2pule\",\r\n    \"2spun\",\r\n    \"2spup\",\r\n    \"3s4pur\",\r\n    \"spu4rer\",\r\n    \"2spy\",\r\n    \"2s1q\",\r\n    \"4s3r4\",\r\n    \"srat2s\",\r\n    \"sre3cha\",\r\n    \"sreli1\",\r\n    \"sro2h\",\r\n    \"srö2s\",\r\n    \"srücker6\",\r\n    \"6s1s\",\r\n    \"ss3abi\",\r\n    \"ssa3bo\",\r\n    \"s5sack\",\r\n    \"ss4agi\",\r\n    \"ss1aj\",\r\n    \"s3sal\",\r\n    \"ss3alba\",\r\n    \"s4sall\",\r\n    \"s4samt\",\r\n    \"s2sanf\",\r\n    \"s4sang\",\r\n    \"s4sano\",\r\n    \"s4sans\",\r\n    \"ss2ant\",\r\n    \"s4sanz\",\r\n    \"ss2ara\",\r\n    \"ss2arg\",\r\n    \"s3sars\",\r\n    \"ssa1s\",\r\n    \"s2s3att\",\r\n    \"ssau3e\",\r\n    \"ssau4r\",\r\n    \"s3s2ä\",\r\n    \"s4sce\",\r\n    \"ssch2\",\r\n    \"sschanker8\",\r\n    \"s3schw\",\r\n    \"s4sco\",\r\n    \"s2scr\",\r\n    \"sse3a\",\r\n    \"ss1ec\",\r\n    \"sse1ec\",\r\n    \"sseh2a\",\r\n    \"s2sein\",\r\n    \"ss4eind\",\r\n    \"sse3int\",\r\n    \"sse2lö\",\r\n    \"s3sen\",\r\n    \"ssen6kel\",\r\n    \"ssen6sem\",\r\n    \"ss1epe\",\r\n    \"sse6ratt\",\r\n    \"ss5ereig\",\r\n    \"ss4ergr\",\r\n    \"sser4hö\",\r\n    \"sser6mit\",\r\n    \"sser4öf\",\r\n    \"ss3erse\",\r\n    \"ss4eru\",\r\n    \"sser6wei\",\r\n    \"sses4sa\",\r\n    \"s4s3estr\",\r\n    \"s3set\",\r\n    \"sse3ta\",\r\n    \"s3si\",\r\n    \"ss3i2ko\",\r\n    \"s4sill\",\r\n    \"s4simp\",\r\n    \"s4sind\",\r\n    \"s4sinf\",\r\n    \"ssing3s\",\r\n    \"s4sint\",\r\n    \"s4s1isr\",\r\n    \"s3skala\",\r\n    \"ss3l\",\r\n    \"ssmut4\",\r\n    \"ss1off\",\r\n    \"ssoi4\",\r\n    \"s3sol\",\r\n    \"s4sop\",\r\n    \"ss2pen\",\r\n    \"ss2phi\",\r\n    \"s3spi\",\r\n    \"s3sprä\",\r\n    \"s3spri\",\r\n    \"s2spro\",\r\n    \"ssquet4\",\r\n    \"ss3s4\",\r\n    \"sssau4\",\r\n    \"sst2a\",\r\n    \"s3stad\",\r\n    \"s4stag\",\r\n    \"ss3tak\",\r\n    \"s3stä\",\r\n    \"sst2e\",\r\n    \"s3stel\",\r\n    \"s3s2tep\",\r\n    \"s3s4tern\",\r\n    \"ss4teu\",\r\n    \"sst2i\",\r\n    \"ss2tie\",\r\n    \"ss2t3in\",\r\n    \"s3stof\",\r\n    \"s3stop\",\r\n    \"ss4tör\",\r\n    \"s3stran\",\r\n    \"ss4tras\",\r\n    \"s3s4trat\",\r\n    \"s3strec\",\r\n    \"s3strom\",\r\n    \"s3strö\",\r\n    \"ss2tur\",\r\n    \"s3stü\",\r\n    \"s2sumg\",\r\n    \"s2sumr\",\r\n    \"ss2ur\",\r\n    \"s3sy\",\r\n    \"s1t\",\r\n    \"4st.\",\r\n    \"s2ta\",\r\n    \"2sta.\",\r\n    \"3staa\",\r\n    \"3stab.\",\r\n    \"2stabb\",\r\n    \"4stabel\",\r\n    \"4stabit\",\r\n    \"2stabl\",\r\n    \"4stabt\",\r\n    \"st2ac\",\r\n    \"1stadt\",\r\n    \"1staff\",\r\n    \"2stag\",\r\n    \"3stagl\",\r\n    \"3s4tagr\",\r\n    \"3s4tah\",\r\n    \"2stak\",\r\n    \"3staks\",\r\n    \"2stala\",\r\n    \"sta3lak\",\r\n    \"2stalb\",\r\n    \"s3ta3l2i\",\r\n    \"2stalk\",\r\n    \"st1alp\",\r\n    \"st1alr\",\r\n    \"st1ami\",\r\n    \"1stamm\",\r\n    \"1stan\",\r\n    \"2stanb\",\r\n    \"s6tand\",\r\n    \"2stanf\",\r\n    \"st2ang\",\r\n    \"2stanl\",\r\n    \"s4tanm\",\r\n    \"4st1ann\",\r\n    \"s4tano\",\r\n    \"st3ansp\",\r\n    \"2stanw\",\r\n    \"sta3po1\",\r\n    \"stapos4\",\r\n    \"st1app\",\r\n    \"s4tar.\",\r\n    \"sta6rens\",\r\n    \"4stari\",\r\n    \"s4tark\",\r\n    \"s4t2ars\",\r\n    \"s4tart\",\r\n    \"sta4sie\",\r\n    \"stast4\",\r\n    \"s3tat.\",\r\n    \"2statb\",\r\n    \"3stati\",\r\n    \"s4tatis\",\r\n    \"7statth\",\r\n    \"s4tau.\",\r\n    \"2stauf\",\r\n    \"3s4taur\",\r\n    \"4stausb\",\r\n    \"4stausg\",\r\n    \"4stausr\",\r\n    \"4stauss\",\r\n    \"s4taut\",\r\n    \"s4t1a2ve\",\r\n    \"4stax\",\r\n    \"1s2tä\",\r\n    \"3stäb\",\r\n    \"3städ\",\r\n    \"4stäg\",\r\n    \"4stäp\",\r\n    \"5s4tär\",\r\n    \"3stätt\",\r\n    \"2s3täus\",\r\n    \"2stb\",\r\n    \"2st3c\",\r\n    \"2std\",\r\n    \"4s5te.\",\r\n    \"4steam\",\r\n    \"4stechn\",\r\n    \"s2te2d\",\r\n    \"st1edi\",\r\n    \"2stee\",\r\n    \"3s2teg\",\r\n    \"ste2g3r\",\r\n    \"1steh\",\r\n    \"s2tei\",\r\n    \"st4ei.\",\r\n    \"4steic\",\r\n    \"st1eid\",\r\n    \"3steig\",\r\n    \"stei4gr\",\r\n    \"2steil\",\r\n    \"stei4na\",\r\n    \"6steinga\",\r\n    \"s4teins\",\r\n    \"stein6sp\",\r\n    \"s2tel\",\r\n    \"2stel.\",\r\n    \"st1elb\",\r\n    \"s3tele\",\r\n    \"s3telf\",\r\n    \"st2ell\",\r\n    \"stel6l5än\",\r\n    \"2steln\",\r\n    \"2stels\",\r\n    \"2stem\",\r\n    \"ste4mar\",\r\n    \"ste6ment\",\r\n    \"3stemm\",\r\n    \"2sten\",\r\n    \"s5ten.\",\r\n    \"ste4na\",\r\n    \"s4t3ends\",\r\n    \"s5t2ens\",\r\n    \"s4tentf\",\r\n    \"s4tents\",\r\n    \"st1e2po\",\r\n    \"2ster\",\r\n    \"4s5ter.\",\r\n    \"ste2r3a\",\r\n    \"s6terben\",\r\n    \"3sterbo\",\r\n    \"s3teren\",\r\n    \"3stereo\",\r\n    \"st3erfü\",\r\n    \"3steril\",\r\n    \"4sterm\",\r\n    \"3s4ternb\",\r\n    \"ster4zo\",\r\n    \"4ste2s1\",\r\n    \"ste3sc\",\r\n    \"stes4se\",\r\n    \"s4testn\",\r\n    \"2stet\",\r\n    \"ste4tab\",\r\n    \"ste4tag\",\r\n    \"3s2teti\",\r\n    \"3s4tett\",\r\n    \"3s2teu\",\r\n    \"1steue\",\r\n    \"4steuf\",\r\n    \"st3eun\",\r\n    \"st1ev\",\r\n    \"s2tew\",\r\n    \"4stex\",\r\n    \"s2texa\",\r\n    \"2stf\",\r\n    \"2stg\",\r\n    \"2sth\",\r\n    \"st2hen\",\r\n    \"s2t1hi\",\r\n    \"st3ho\",\r\n    \"s2thu\",\r\n    \"st1hy\",\r\n    \"2stia\",\r\n    \"2stib\",\r\n    \"s2tic\",\r\n    \"1stich\",\r\n    \"st1i2d\",\r\n    \"2stie.\",\r\n    \"4stief.\",\r\n    \"4stiefl\",\r\n    \"2stien\",\r\n    \"1s2tif\",\r\n    \"2stig\",\r\n    \"sti4gel\",\r\n    \"3s4tigm\",\r\n    \"2s3tik\",\r\n    \"s2t2il\",\r\n    \"1s2tim\",\r\n    \"3stimm\",\r\n    \"4stimma\",\r\n    \"2stimp\",\r\n    \"st1inb\",\r\n    \"2s4tinf\",\r\n    \"s3tinn\",\r\n    \"s2tins\",\r\n    \"2s2tint\",\r\n    \"2stio\",\r\n    \"2stip.\",\r\n    \"2stipp\",\r\n    \"s2ti2r\",\r\n    \"st1ira\",\r\n    \"st1iri\",\r\n    \"st1iro\",\r\n    \"4stis\",\r\n    \"2stite\",\r\n    \"1stitu\",\r\n    \"2stiv\",\r\n    \"2stj\",\r\n    \"2stk\",\r\n    \"4stl\",\r\n    \"st3le\",\r\n    \"2stm\",\r\n    \"2stn\",\r\n    \"s2to\",\r\n    \"2sto.\",\r\n    \"sto2bl\",\r\n    \"4stocht\",\r\n    \"2stod\",\r\n    \"4stod.\",\r\n    \"1stof\",\r\n    \"s4toff\",\r\n    \"2stok\",\r\n    \"4stole\",\r\n    \"s4toll\",\r\n    \"sto3mi\",\r\n    \"2s3ton\",\r\n    \"4stona\",\r\n    \"3s4to4ne\",\r\n    \"4stonl\",\r\n    \"4stoo\",\r\n    \"2stopo\",\r\n    \"4stor.\",\r\n    \"s4torb\",\r\n    \"2store\",\r\n    \"2storf\",\r\n    \"2s4torg\",\r\n    \"2stori\",\r\n    \"2storp\",\r\n    \"2stors\",\r\n    \"2stort\",\r\n    \"stos2t\",\r\n    \"1stoß\",\r\n    \"4stote\",\r\n    \"2stotr\",\r\n    \"4stou\",\r\n    \"2stow\",\r\n    \"2stoz\",\r\n    \"1s2tö\",\r\n    \"4stöch\",\r\n    \"2s3töl\",\r\n    \"2stön\",\r\n    \"3stör\",\r\n    \"2stöt\",\r\n    \"2stp\",\r\n    \"2stq\",\r\n    \"s2tr\",\r\n    \"2strac\",\r\n    \"4s3trad\",\r\n    \"st4rade\",\r\n    \"stra4fa\",\r\n    \"4s3trag\",\r\n    \"3strah\",\r\n    \"4strahi\",\r\n    \"4strai\",\r\n    \"4strak\",\r\n    \"2s5tral\",\r\n    \"s3trank\",\r\n    \"4strans\",\r\n    \"1strap\",\r\n    \"3stras\",\r\n    \"3straß\",\r\n    \"4straum\",\r\n    \"4sträc\",\r\n    \"4s5träg\",\r\n    \"4sträne\",\r\n    \"2stre.\",\r\n    \"s4trea\",\r\n    \"4stref\",\r\n    \"4streib\",\r\n    \"3st6reif\",\r\n    \"2strep\",\r\n    \"2stret\",\r\n    \"4streuh\",\r\n    \"2strib\",\r\n    \"strie3s4\",\r\n    \"2s4trig\",\r\n    \"1s4trik\",\r\n    \"2s5tris\",\r\n    \"1stro\",\r\n    \"s3troc\",\r\n    \"s3trog\",\r\n    \"3s4troh\",\r\n    \"s4trome\",\r\n    \"4stropf\",\r\n    \"2stros\",\r\n    \"st4ross\",\r\n    \"2ströp\",\r\n    \"1stru\",\r\n    \"2strua\",\r\n    \"2strub\",\r\n    \"s4trud\",\r\n    \"3struk\",\r\n    \"2strun\",\r\n    \"4strup\",\r\n    \"2strut\",\r\n    \"1strü\",\r\n    \"4s4t3s2\",\r\n    \"stsi4d\",\r\n    \"sts4t\",\r\n    \"2st3t4\",\r\n    \"st2u\",\r\n    \"1stub\",\r\n    \"4stuch\",\r\n    \"3s4tud\",\r\n    \"2stue\",\r\n    \"3stuf\",\r\n    \"2stug\",\r\n    \"st3uga\",\r\n    \"3stuh\",\r\n    \"s2t3uk\",\r\n    \"2stumo\",\r\n    \"2stum2s\",\r\n    \"stum4sc\",\r\n    \"2stumt\",\r\n    \"2stun.\",\r\n    \"st3una\",\r\n    \"5stund\",\r\n    \"2stune\",\r\n    \"2stung\",\r\n    \"s2t3uni\",\r\n    \"4stunn\",\r\n    \"2stuns\",\r\n    \"2stunt\",\r\n    \"2stuö\",\r\n    \"stu3ra\",\r\n    \"stu5re\",\r\n    \"2st3url\",\r\n    \"4sturn\",\r\n    \"2st3urt\",\r\n    \"3s2turz\",\r\n    \"2stus\",\r\n    \"1s2tut\",\r\n    \"1stüc\",\r\n    \"4stüch\",\r\n    \"3s4tück\",\r\n    \"3stüh\",\r\n    \"4stür.\",\r\n    \"4stüre\",\r\n    \"3stürz\",\r\n    \"1stüt\",\r\n    \"2stütc\",\r\n    \"2stv\",\r\n    \"2stw\",\r\n    \"stwor2\",\r\n    \"2sty\",\r\n    \"4sty.\",\r\n    \"1s2tyl\",\r\n    \"4styp\",\r\n    \"4stys\",\r\n    \"2st3z2\",\r\n    \"1su\",\r\n    \"su1an\",\r\n    \"3su2b3\",\r\n    \"su4ba\",\r\n    \"4subi\",\r\n    \"su4br\",\r\n    \"3su1c\",\r\n    \"su2cha\",\r\n    \"su2cho\",\r\n    \"3sud\",\r\n    \"su2eb\",\r\n    \"2s1u2f\",\r\n    \"su3fi\",\r\n    \"2s1uh\",\r\n    \"su1is\",\r\n    \"su1it.\",\r\n    \"su2k\",\r\n    \"su3l2i\",\r\n    \"3sulta\",\r\n    \"sum1a\",\r\n    \"su2man\",\r\n    \"su2mar\",\r\n    \"3s2ume\",\r\n    \"su2mei\",\r\n    \"su2mel\",\r\n    \"sument4\",\r\n    \"su6ments\",\r\n    \"su2m1et\",\r\n    \"2s3umf\",\r\n    \"su2m1id\",\r\n    \"su2min\",\r\n    \"3s2umm\",\r\n    \"sum1o2\",\r\n    \"su2mor\",\r\n    \"s2ump\",\r\n    \"s1ums\",\r\n    \"s3umsa\",\r\n    \"2sumse\",\r\n    \"s2umsp\",\r\n    \"2s3umst\",\r\n    \"2s3umwa\",\r\n    \"su2n\",\r\n    \"3sun.\",\r\n    \"2s1una\",\r\n    \"sunder4\",\r\n    \"sun6d5erh\",\r\n    \"su4ne\",\r\n    \"2s1unf\",\r\n    \"6sungena\",\r\n    \"2sungl\",\r\n    \"sung4s\",\r\n    \"4s1uni\",\r\n    \"2s1unm\",\r\n    \"2s1uns\",\r\n    \"s4uns.\",\r\n    \"s4unst\",\r\n    \"2sunt\",\r\n    \"2sunw\",\r\n    \"s4unwa\",\r\n    \"3sup\",\r\n    \"4supd\",\r\n    \"sup3p4\",\r\n    \"su2ra\",\r\n    \"sure4\",\r\n    \"su2rei\",\r\n    \"su2rer\",\r\n    \"3surf\",\r\n    \"2s1urk\",\r\n    \"su2r1o\",\r\n    \"2surs\",\r\n    \"s1urt\",\r\n    \"su2s\",\r\n    \"su3s2a\",\r\n    \"sus1e\",\r\n    \"sus3i\",\r\n    \"s3u2t\",\r\n    \"su4te\",\r\n    \"su3tr\",\r\n    \"3suv\",\r\n    \"suz2\",\r\n    \"1sü\",\r\n    \"2sü4b\",\r\n    \"3süc\",\r\n    \"sü2d1\",\r\n    \"süden4\",\r\n    \"3süf\",\r\n    \"3sün\",\r\n    \"3s2üs\",\r\n    \"3süß\",\r\n    \"4s3v2\",\r\n    \"svoran4\",\r\n    \"2s1w\",\r\n    \"4s3we\",\r\n    \"swe6gers\",\r\n    \"sweh2\",\r\n    \"4swie\",\r\n    \"4swil\",\r\n    \"4swink\",\r\n    \"4swis\",\r\n    \"4swit\",\r\n    \"s3wü\",\r\n    \"1s4y\",\r\n    \"2syl1\",\r\n    \"sy2lo\",\r\n    \"sy2lu\",\r\n    \"sym3\",\r\n    \"sy2n3\",\r\n    \"3synd\",\r\n    \"sy4no\",\r\n    \"3sy4s3\",\r\n    \"2s1z2\",\r\n    \"4s3za\",\r\n    \"4szä\",\r\n    \"4s3zei\",\r\n    \"4szel\",\r\n    \"3s2zena\",\r\n    \"3s2ze3n2e\",\r\n    \"4szent\",\r\n    \"4szer\",\r\n    \"s2zes\",\r\n    \"4szet\",\r\n    \"4szeu\",\r\n    \"3s2zew\",\r\n    \"4s3zie\",\r\n    \"4s3zo\",\r\n    \"s3zs\",\r\n    \"4s3zu\",\r\n    \"4s3zü\",\r\n    \"4szw\",\r\n    \"2ß3a4\",\r\n    \"2ß1ä\",\r\n    \"2ß1b4\",\r\n    \"2ß1c\",\r\n    \"2ß1d2\",\r\n    \"1ße\",\r\n    \"2ß1e2b\",\r\n    \"2ß1ec\",\r\n    \"2ß1ef\",\r\n    \"2ß1e2g\",\r\n    \"2ß1ei\",\r\n    \"2ß1ek\",\r\n    \"ße2la\",\r\n    \"ße2le\",\r\n    \"2ßelek\",\r\n    \"2ß1emp\",\r\n    \"ße4n3a2\",\r\n    \"4ßenerg\",\r\n    \"ße2ni\",\r\n    \"ß1enke\",\r\n    \"ße2no\",\r\n    \"3ß2ente\",\r\n    \"2ßentz\",\r\n    \"2ß1e2p\",\r\n    \"ßer3b\",\r\n    \"ßer2ei\",\r\n    \"ßer2la\",\r\n    \"2ß1er4se\",\r\n    \"ßer3t\",\r\n    \"ß1erw\",\r\n    \"2ß1es2s\",\r\n    \"2ß1est3r\",\r\n    \"2ß1ex\",\r\n    \"2ß1f4\",\r\n    \"2ß3g2\",\r\n    \"ßge2bl\",\r\n    \"2ß1h\",\r\n    \"1ßi\",\r\n    \"ßi2g1a2\",\r\n    \"ßig4s\",\r\n    \"2ß3i2k\",\r\n    \"2ß1il\",\r\n    \"2ß1im\",\r\n    \"2ß1in\",\r\n    \"2ß1j\",\r\n    \"2ß3k4\",\r\n    \"2ß1l\",\r\n    \"ßler3s\",\r\n    \"2ß1m\",\r\n    \"ßmut4\",\r\n    \"2ß3n2\",\r\n    \"2ß3o2\",\r\n    \"ßos2\",\r\n    \"2ß1ö2\",\r\n    \"2ß1p2\",\r\n    \"ß1q\",\r\n    \"2ß3r2\",\r\n    \"ßrö2\",\r\n    \"2ß3s4\",\r\n    \"ßsau4\",\r\n    \"ßsch2\",\r\n    \"ßst2\",\r\n    \"2ß1t\",\r\n    \"ßt1in\",\r\n    \"ß3tü\",\r\n    \"2ß1um\",\r\n    \"ß1unf\",\r\n    \"2ßunt\",\r\n    \"2ß1ü4\",\r\n    \"2ß1v\",\r\n    \"2ß1w\",\r\n    \"2ß3z2\",\r\n    \"1ta\",\r\n    \"3ta.\",\r\n    \"4taa\",\r\n    \"5taan\",\r\n    \"4tab.\",\r\n    \"3taba\",\r\n    \"ta2b3an\",\r\n    \"2t1abb\",\r\n    \"4tabd\",\r\n    \"3tabel\",\r\n    \"2taben\",\r\n    \"2tabf\",\r\n    \"2tabg\",\r\n    \"2tabh\",\r\n    \"2t3a2bit\",\r\n    \"2tabk\",\r\n    \"2tabla\",\r\n    \"4tabm\",\r\n    \"2t3abn\",\r\n    \"2ta4br\",\r\n    \"4tabs\",\r\n    \"t1abst\",\r\n    \"2t3abt\",\r\n    \"3tabu\",\r\n    \"4tabw\",\r\n    \"4tabz\",\r\n    \"2t1ac\",\r\n    \"4tachs\",\r\n    \"3tacu\",\r\n    \"t1ada\",\r\n    \"2tadd\",\r\n    \"ta2der\",\r\n    \"tadi3\",\r\n    \"tadi5o4\",\r\n    \"t1adm\",\r\n    \"ta2dol\",\r\n    \"2t1a2dr\",\r\n    \"ta3d2s\",\r\n    \"4tadt\",\r\n    \"tad4tr\",\r\n    \"ta2er\",\r\n    \"3taf.\",\r\n    \"3tafe\",\r\n    \"4tafet\",\r\n    \"4taff\",\r\n    \"t1afg\",\r\n    \"t1afr\",\r\n    \"3tag\",\r\n    \"ta2ga\",\r\n    \"ta2g1e2i\",\r\n    \"t3agent\",\r\n    \"tage2s\",\r\n    \"4t1agg\",\r\n    \"4ta3gl\",\r\n    \"4t1a2go\",\r\n    \"tag4san\",\r\n    \"tags3c\",\r\n    \"tag4st\",\r\n    \"tah2\",\r\n    \"tahls4t\",\r\n    \"ta3i2k\",\r\n    \"tai2l1\",\r\n    \"ta1ins\",\r\n    \"tai4r\",\r\n    \"ta1ir.\",\r\n    \"ta1i2s\",\r\n    \"2t1a2ka\",\r\n    \"ta3kes\",\r\n    \"2t1akk\",\r\n    \"ta2kro\",\r\n    \"tak4t1o2\",\r\n    \"t2aktu\",\r\n    \"2takz\",\r\n    \"3t2al.\",\r\n    \"ta2la\",\r\n    \"ta3lad\",\r\n    \"ta3lag\",\r\n    \"tal3au\",\r\n    \"3talbr\",\r\n    \"tald4\",\r\n    \"3tale\",\r\n    \"tal2en\",\r\n    \"ta4l3end\",\r\n    \"tal3eng\",\r\n    \"ta4l3ens\",\r\n    \"taler2\",\r\n    \"ta4ler3g\",\r\n    \"ta2let\",\r\n    \"tal2ga\",\r\n    \"tali6ene\",\r\n    \"tal4l3ac\",\r\n    \"tall3ei\",\r\n    \"tal2l1ö4\",\r\n    \"tall3s2\",\r\n    \"2t1alm.\",\r\n    \"3talo\",\r\n    \"ta2lop\",\r\n    \"ta2l1o2r\",\r\n    \"t1alta\",\r\n    \"tal3th\",\r\n    \"talt4r\",\r\n    \"ta2lu\",\r\n    \"2tam\",\r\n    \"3tam.\",\r\n    \"3tame\",\r\n    \"t2amen\",\r\n    \"t1a2mer\",\r\n    \"ta2mi\",\r\n    \"tamm1a\",\r\n    \"tam4m3er\",\r\n    \"t1ampl\",\r\n    \"3tams\",\r\n    \"4t1amt\",\r\n    \"t1a2na\",\r\n    \"tan3ab\",\r\n    \"4tanal\",\r\n    \"ta4nat\",\r\n    \"2t1a2nä\",\r\n    \"2tanb\",\r\n    \"3tanc\",\r\n    \"tan3d4ar\",\r\n    \"tan2d3r\",\r\n    \"tand4st\",\r\n    \"ta4nerf\",\r\n    \"4tanf\",\r\n    \"2t1ang\",\r\n    \"3tang.\",\r\n    \"t3angeh\",\r\n    \"t2ango\",\r\n    \"tan4gra\",\r\n    \"2tanh\",\r\n    \"t2anho\",\r\n    \"t4ani\",\r\n    \"3tanj\",\r\n    \"3tank\",\r\n    \"tan2kl\",\r\n    \"4tankr\",\r\n    \"4t3anl\",\r\n    \"t1anm\",\r\n    \"2t1anna\",\r\n    \"3t2anne\",\r\n    \"t1ano\",\r\n    \"2tanom\",\r\n    \"2tanp\",\r\n    \"t1ans\",\r\n    \"t2ans.\",\r\n    \"4tansi\",\r\n    \"tan4tan\",\r\n    \"t4ante.\",\r\n    \"4tantei\",\r\n    \"2tantr\",\r\n    \"2tanwa\",\r\n    \"2tanwä\",\r\n    \"t2anz.\",\r\n    \"t1anza\",\r\n    \"4tanzei\",\r\n    \"3tanzk\",\r\n    \"3tanzr\",\r\n    \"2t1anzu\",\r\n    \"2tanzü\",\r\n    \"tan2z1w\",\r\n    \"tao2\",\r\n    \"ta3or\",\r\n    \"t4ape\",\r\n    \"ta2pes\",\r\n    \"2tapf\",\r\n    \"ta2pl\",\r\n    \"ta4poka\",\r\n    \"t2appe\",\r\n    \"ta2ra\",\r\n    \"2tarab\",\r\n    \"3tarabb\",\r\n    \"ta3rak\",\r\n    \"3tar5al\",\r\n    \"2taram\",\r\n    \"tar3ap\",\r\n    \"ta3ras\",\r\n    \"t2arau\",\r\n    \"2tarb\",\r\n    \"3tarba\",\r\n    \"3tarbek\",\r\n    \"3tarber\",\r\n    \"3tarbi\",\r\n    \"3tar3bl\",\r\n    \"2tarc\",\r\n    \"3tarchl\",\r\n    \"3tarchr\",\r\n    \"3t2ard\",\r\n    \"ta2rel\",\r\n    \"ta2r1er\",\r\n    \"tar3g\",\r\n    \"ta1r2h\",\r\n    \"3tari\",\r\n    \"2tark\",\r\n    \"3tark4l\",\r\n    \"3t2arko\",\r\n    \"t2arl\",\r\n    \"2t1arm\",\r\n    \"t2armä\",\r\n    \"ta2rom\",\r\n    \"2tarot\",\r\n    \"2tart\",\r\n    \"3t2arta\",\r\n    \"3tartei\",\r\n    \"tar6ter6e\",\r\n    \"3tartex\",\r\n    \"3t2arth\",\r\n    \"t1arti\",\r\n    \"3t4artis\",\r\n    \"tar4to\",\r\n    \"tar2tr\",\r\n    \"3tarty\",\r\n    \"ta2ru\",\r\n    \"t1arz\",\r\n    \"2tarzt\",\r\n    \"3t2as.\",\r\n    \"ta3s2a\",\r\n    \"3tasc\",\r\n    \"4t1asp\",\r\n    \"2t3assi\",\r\n    \"3tast\",\r\n    \"tas4tem\",\r\n    \"tas4to\",\r\n    \"t2asy\",\r\n    \"t4at.\",\r\n    \"ta2ta2b\",\r\n    \"ta2tan\",\r\n    \"3tatb\",\r\n    \"t4ate\",\r\n    \"tat1ei\",\r\n    \"t5a2tel\",\r\n    \"ta2tem\",\r\n    \"3taten\",\r\n    \"ta2t1er\",\r\n    \"2t3atl\",\r\n    \"2tatom\",\r\n    \"2ta2tr\",\r\n    \"3tatsa\",\r\n    \"2tatt\",\r\n    \"tau2b1a\",\r\n    \"3taubh\",\r\n    \"tau2bl\",\r\n    \"tau2b3r\",\r\n    \"tauchs4\",\r\n    \"tauch5sp\",\r\n    \"4taud\",\r\n    \"2t1auf\",\r\n    \"3taufe.\",\r\n    \"4taufk\",\r\n    \"4t3aufl\",\r\n    \"tau3f4li\",\r\n    \"4taufm\",\r\n    \"t3au2f1o\",\r\n    \"4taufp\",\r\n    \"taufs2\",\r\n    \"4taufw\",\r\n    \"3taug\",\r\n    \"4t3auge\",\r\n    \"t1auk\",\r\n    \"3taume\",\r\n    \"4t1ausb\",\r\n    \"3tausc\",\r\n    \"tau6scha\",\r\n    \"tau6schm\",\r\n    \"tau6schr\",\r\n    \"tau6schw\",\r\n    \"2tausd\",\r\n    \"t2aus2e\",\r\n    \"4t1ausf\",\r\n    \"4t3ausg\",\r\n    \"t1ausk\",\r\n    \"4tausl\",\r\n    \"2tausr\",\r\n    \"4t3auss\",\r\n    \"2tausü\",\r\n    \"2t5ausw\",\r\n    \"4t3ausz\",\r\n    \"4tauu\",\r\n    \"3tav\",\r\n    \"4tava\",\r\n    \"ta2van\",\r\n    \"3tax\",\r\n    \"4t1axt\",\r\n    \"3taz\",\r\n    \"1tä\",\r\n    \"2tää\",\r\n    \"4täb\",\r\n    \"tä1c\",\r\n    \"4täd\",\r\n    \"t2äf\",\r\n    \"3täg\",\r\n    \"4tägä\",\r\n    \"4tägy\",\r\n    \"2täh\",\r\n    \"4täll\",\r\n    \"2t1ält\",\r\n    \"4tä2m\",\r\n    \"t1ämt\",\r\n    \"t1ängs\",\r\n    \"3tänz\",\r\n    \"4t1äp\",\r\n    \"2täq\",\r\n    \"tä4reng\",\r\n    \"tä2ru\",\r\n    \"2tärz\",\r\n    \"tä2s\",\r\n    \"t2ät\",\r\n    \"3tätigk\",\r\n    \"4tätt\",\r\n    \"2täug\",\r\n    \"2täuß\",\r\n    \"2täx\",\r\n    \"1tà\",\r\n    \"4t3b4\",\r\n    \"tbauer4\",\r\n    \"tber2e\",\r\n    \"tblocken8\",\r\n    \"tby4t\",\r\n    \"4t1c\",\r\n    \"t3cha\",\r\n    \"t3che\",\r\n    \"tch2i\",\r\n    \"tch3l\",\r\n    \"t3chr\",\r\n    \"t2ch1u\",\r\n    \"tch1w\",\r\n    \"t4ck\",\r\n    \"t3cl\",\r\n    \"tcor2\",\r\n    \"t3cr\",\r\n    \"4t3d2\",\r\n    \"tdar2m1\",\r\n    \"tdun2\",\r\n    \"1te\",\r\n    \"3te.\",\r\n    \"te2a2\",\r\n    \"te3ab\",\r\n    \"tea3c\",\r\n    \"te3ag\",\r\n    \"2teak\",\r\n    \"te3al\",\r\n    \"3team\",\r\n    \"te3an\",\r\n    \"te3ar\",\r\n    \"tea4s\",\r\n    \"3teba\",\r\n    \"t4ebb\",\r\n    \"2t1e2ben\",\r\n    \"t2ech\",\r\n    \"2techd\",\r\n    \"2teche\",\r\n    \"2techk\",\r\n    \"2techm\",\r\n    \"3techn\",\r\n    \"2techt\",\r\n    \"te2chu\",\r\n    \"2teck\",\r\n    \"te3cker\",\r\n    \"te2cki\",\r\n    \"2t1ecu\",\r\n    \"te2dit\",\r\n    \"te1em\",\r\n    \"teen1\",\r\n    \"te2er.\",\r\n    \"te1erw\",\r\n    \"te2es\",\r\n    \"3tefa\",\r\n    \"2teff\",\r\n    \"2t1egg\",\r\n    \"2teh\",\r\n    \"3teha\",\r\n    \"te2hac\",\r\n    \"3tehä\",\r\n    \"3tehi\",\r\n    \"te2him\",\r\n    \"3tehö\",\r\n    \"t1ehr\",\r\n    \"te3hu\",\r\n    \"3tei.\",\r\n    \"3teic\",\r\n    \"tei1fl\",\r\n    \"2teign\",\r\n    \"teik4\",\r\n    \"3t2eil\",\r\n    \"tei6lent\",\r\n    \"teim2\",\r\n    \"2tein\",\r\n    \"teinen4\",\r\n    \"tei6nens\",\r\n    \"tein6hab\",\r\n    \"t3einkü\",\r\n    \"2t1eis.\",\r\n    \"t1eisb\",\r\n    \"te5isch.\",\r\n    \"teit4\",\r\n    \"t1eiw\",\r\n    \"tei3z\",\r\n    \"te2kel\",\r\n    \"3teko\",\r\n    \"tekt4\",\r\n    \"3tel.\",\r\n    \"3te2la\",\r\n    \"tel3ab\",\r\n    \"tel1ac\",\r\n    \"te3lan\",\r\n    \"te4lant\",\r\n    \"tel1au\",\r\n    \"te2lä\",\r\n    \"telb4\",\r\n    \"3telbr\",\r\n    \"3tel3d4\",\r\n    \"tel1ec\",\r\n    \"tel3ehr\",\r\n    \"2telem\",\r\n    \"tel3eng\",\r\n    \"te2ler\",\r\n    \"tele3s\",\r\n    \"te2leu\",\r\n    \"4t3elf.\",\r\n    \"3telg\",\r\n    \"3telh\",\r\n    \"tel1in\",\r\n    \"te2lit\",\r\n    \"3telk\",\r\n    \"tel3le\",\r\n    \"tel6lein\",\r\n    \"tel3li\",\r\n    \"4tellu\",\r\n    \"3teln\",\r\n    \"te2lob\",\r\n    \"te3lom\",\r\n    \"te4lost\",\r\n    \"te2l1ö\",\r\n    \"3telp\",\r\n    \"3tels\",\r\n    \"tel3s2k\",\r\n    \"3telt4\",\r\n    \"tel3ta\",\r\n    \"3telw\",\r\n    \"3tem.\",\r\n    \"3t2ema\",\r\n    \"te2man\",\r\n    \"te2m1ap\",\r\n    \"te2mau\",\r\n    \"2tem2bo\",\r\n    \"te2m1ei\",\r\n    \"te2m1er\",\r\n    \"te2mi\",\r\n    \"tem3i2m\",\r\n    \"tem3ing\",\r\n    \"2temm\",\r\n    \"te2mo\",\r\n    \"tem1o2r\",\r\n    \"3temper\",\r\n    \"2tempf\",\r\n    \"4tempfi\",\r\n    \"tem3s6\",\r\n    \"te2mu\",\r\n    \"te4mun\",\r\n    \"3ten\",\r\n    \"t6en.\",\r\n    \"ten1a2\",\r\n    \"te4nad\",\r\n    \"te4n3an\",\r\n    \"ten3ar\",\r\n    \"te4nas\",\r\n    \"te4nat\",\r\n    \"ten3au\",\r\n    \"te2n3ä\",\r\n    \"ten3da\",\r\n    \"4t3endal\",\r\n    \"tend4an\",\r\n    \"4tendap\",\r\n    \"4t5endf\",\r\n    \"4t1endl\",\r\n    \"t6endo\",\r\n    \"4t5endp\",\r\n    \"ten3d4r\",\r\n    \"te2n1e2b\",\r\n    \"te2nef\",\r\n    \"te2neh\",\r\n    \"ten3ei\",\r\n    \"te3n4ei.\",\r\n    \"tenei4d\",\r\n    \"tene4m\",\r\n    \"tenen1\",\r\n    \"te4n3end\",\r\n    \"te4nene\",\r\n    \"te4neng\",\r\n    \"te4nens\",\r\n    \"4t3energ\",\r\n    \"te4n3ern\",\r\n    \"tenf4\",\r\n    \"4t1eng.\",\r\n    \"teng2a\",\r\n    \"ten4gag\",\r\n    \"4t3engla\",\r\n    \"te2ni\",\r\n    \"te4nil\",\r\n    \"ten1im\",\r\n    \"te4n3in\",\r\n    \"tenk4\",\r\n    \"ten3n2\",\r\n    \"te2nol\",\r\n    \"te2nos\",\r\n    \"te3nö\",\r\n    \"6t3ensem\",\r\n    \"tens2p\",\r\n    \"tens3th\",\r\n    \"t1entb\",\r\n    \"4tentd\",\r\n    \"4t3entl\",\r\n    \"4t3entn\",\r\n    \"t1ents\",\r\n    \"4t5entw\",\r\n    \"4tentz\",\r\n    \"t2enz\",\r\n    \"ten4z3er\",\r\n    \"teo2f\",\r\n    \"2tep.\",\r\n    \"2t1e2pi\",\r\n    \"2teppu\",\r\n    \"tept2\",\r\n    \"3t4er.\",\r\n    \"t4era\",\r\n    \"ter3a2c\",\r\n    \"te2rad\",\r\n    \"te1ral\",\r\n    \"ter3alg\",\r\n    \"te3r4ane\",\r\n    \"te2r3ap\",\r\n    \"tera4s\",\r\n    \"4terbos\",\r\n    \"2t1erbs\",\r\n    \"2t1erbt\",\r\n    \"3terc\",\r\n    \"4t3erde.\",\r\n    \"ter3d2s\",\r\n    \"3tere.\",\r\n    \"te2r1e2b\",\r\n    \"te2rec\",\r\n    \"t3ereig\",\r\n    \"te5rek\",\r\n    \"3tere2m\",\r\n    \"te4rema\",\r\n    \"te4r3end\",\r\n    \"te4rene\",\r\n    \"te4reng\",\r\n    \"te4r3ent\",\r\n    \"teren5th\",\r\n    \"2tereo\",\r\n    \"3terer\",\r\n    \"terer3k\",\r\n    \"terer6ku\",\r\n    \"terer3l\",\r\n    \"te4r3erp\",\r\n    \"te4rers\",\r\n    \"te4rerw\",\r\n    \"3teres\",\r\n    \"t4erfr\",\r\n    \"terg2\",\r\n    \"ter3ga\",\r\n    \"6tergebn\",\r\n    \"t6ergem\",\r\n    \"t6erges\",\r\n    \"t6ergew\",\r\n    \"ter3gl\",\r\n    \"6tergrei\",\r\n    \"t4ergru\",\r\n    \"t6erhall\",\r\n    \"t6erhau\",\r\n    \"t4erhäu\",\r\n    \"t4erhei\",\r\n    \"7t2erhi\",\r\n    \"t2erho\",\r\n    \"6terhöhu\",\r\n    \"t2erhu\",\r\n    \"te3ria\",\r\n    \"4terii\",\r\n    \"ter3iko\",\r\n    \"2teril\",\r\n    \"teri4o\",\r\n    \"te2r3it\",\r\n    \"teri4ta\",\r\n    \"4terklä\",\r\n    \"t4erlä\",\r\n    \"t4erli\",\r\n    \"ter4lös\",\r\n    \"3term\",\r\n    \"t2ern.\",\r\n    \"ter4nar\",\r\n    \"2t6ernc\",\r\n    \"t4ero\",\r\n    \"te1rob\",\r\n    \"ter4obe\",\r\n    \"2teros\",\r\n    \"t1e2r1ö\",\r\n    \"t4erp\",\r\n    \"t4erra\",\r\n    \"ter4re.\",\r\n    \"t4erro\",\r\n    \"t4ers.\",\r\n    \"t2erse\",\r\n    \"t4erst.\",\r\n    \"t6erstad\",\r\n    \"ter6stat\",\r\n    \"t4erstä\",\r\n    \"t4ersti\",\r\n    \"t4erstr\",\r\n    \"t4erstu\",\r\n    \"t4erstü\",\r\n    \"tert2\",\r\n    \"ter3ta\",\r\n    \"ter4trä\",\r\n    \"t4eru2\",\r\n    \"te4r1uf\",\r\n    \"te3rung\",\r\n    \"t4erv\",\r\n    \"4t3erwäh\",\r\n    \"ter3z2a\",\r\n    \"2t1erzb\",\r\n    \"t4erzei\",\r\n    \"4terzeu\",\r\n    \"ter3zw\",\r\n    \"3tes\",\r\n    \"t2es.\",\r\n    \"tesa2k\",\r\n    \"tes2c\",\r\n    \"tes2ka\",\r\n    \"tes4pen\",\r\n    \"te2spr\",\r\n    \"2t1essa\",\r\n    \"tes3tan\",\r\n    \"te3stei\",\r\n    \"tes4tel\",\r\n    \"tester4\",\r\n    \"tes6terg\",\r\n    \"tes6t5erh\",\r\n    \"tes6terk\",\r\n    \"2testn\",\r\n    \"testo3\",\r\n    \"t3est3ri\",\r\n    \"te2su\",\r\n    \"tet2\",\r\n    \"3tet.\",\r\n    \"t1eta\",\r\n    \"te4tabl\",\r\n    \"2te2tap\",\r\n    \"2te2tat\",\r\n    \"3tete\",\r\n    \"teten3\",\r\n    \"2t1e2th\",\r\n    \"te3tho\",\r\n    \"4tetl\",\r\n    \"tet3ti\",\r\n    \"3teuf\",\r\n    \"3teum\",\r\n    \"3te1u2n\",\r\n    \"4teunu\",\r\n    \"2t1eup\",\r\n    \"3teur.\",\r\n    \"te2va\",\r\n    \"te2vi\",\r\n    \"tewa2s\",\r\n    \"3tewo\",\r\n    \"2texam\",\r\n    \"2t1e2xe\",\r\n    \"2t1e2xi\",\r\n    \"4texp\",\r\n    \"tex4ta\",\r\n    \"2t1exz\",\r\n    \"tè2\",\r\n    \"4t3f6\",\r\n    \"4t1g2\",\r\n    \"tga4s3er\",\r\n    \"tga2su\",\r\n    \"t3ge\",\r\n    \"tge4nen3\",\r\n    \"tger2a\",\r\n    \"tger2i\",\r\n    \"tg4r\",\r\n    \"4th.\",\r\n    \"2t1h2a\",\r\n    \"3tha.\",\r\n    \"3t2hag\",\r\n    \"4thak\",\r\n    \"3thal.\",\r\n    \"3thalh\",\r\n    \"t4hali\",\r\n    \"t2hals\",\r\n    \"t2han.\",\r\n    \"t3hand\",\r\n    \"t3hap\",\r\n    \"4t3hau\",\r\n    \"2t1hä\",\r\n    \"3thäi\",\r\n    \"4thäl\",\r\n    \"2thb\",\r\n    \"th2e\",\r\n    \"1the.\",\r\n    \"3t4hea\",\r\n    \"2t1heb\",\r\n    \"2t1hef\",\r\n    \"2t1hei\",\r\n    \"the1in\",\r\n    \"4theit\",\r\n    \"t2hek\",\r\n    \"3thema\",\r\n    \"2themd\",\r\n    \"2themm\",\r\n    \"1then\",\r\n    \"t1henn\",\r\n    \"3theo\",\r\n    \"t1herd\",\r\n    \"thero1\",\r\n    \"t1herr\",\r\n    \"2t1herz\",\r\n    \"4t1hess\",\r\n    \"t2heu\",\r\n    \"2thf\",\r\n    \"1th2i\",\r\n    \"3thi.\",\r\n    \"thic3k4\",\r\n    \"thi3er.\",\r\n    \"2t1hil\",\r\n    \"2t1him\",\r\n    \"2t1hin\",\r\n    \"thi3nu\",\r\n    \"2t1hir\",\r\n    \"2thk\",\r\n    \"2th3l\",\r\n    \"4th3m\",\r\n    \"thmu2\",\r\n    \"2th3n2\",\r\n    \"1tho\",\r\n    \"2t1hob\",\r\n    \"tho3chr\",\r\n    \"t1hof\",\r\n    \"2t1hoh\",\r\n    \"t1holt\",\r\n    \"2tholz\",\r\n    \"t2hon\",\r\n    \"4thops\",\r\n    \"tho1s\",\r\n    \"t1hose\",\r\n    \"t1hot\",\r\n    \"4thote\",\r\n    \"2thou\",\r\n    \"t1hov\",\r\n    \"4thö\",\r\n    \"2thp\",\r\n    \"1th2r2\",\r\n    \"2ths\",\r\n    \"2tht2\",\r\n    \"t1hu\",\r\n    \"2thub\",\r\n    \"2thuh\",\r\n    \"4t3hun\",\r\n    \"2thut\",\r\n    \"2t1hü\",\r\n    \"2thv\",\r\n    \"1ti\",\r\n    \"t4ia\",\r\n    \"ti3ac\",\r\n    \"ti1ag\",\r\n    \"tial2l\",\r\n    \"ti3alo\",\r\n    \"ti1a2m\",\r\n    \"3tib\",\r\n    \"3ticc\",\r\n    \"ti1ce\",\r\n    \"3ticket\",\r\n    \"t2id.\",\r\n    \"2tidee\",\r\n    \"ti4d3en4d\",\r\n    \"ti3dy\",\r\n    \"3tief.\",\r\n    \"4tiefel\",\r\n    \"3tiefl\",\r\n    \"tie2fr\",\r\n    \"2tieg4\",\r\n    \"2tieh\",\r\n    \"ti2e1i\",\r\n    \"ti1el\",\r\n    \"ti2el.\",\r\n    \"tiel3a\",\r\n    \"ti3e4n1\",\r\n    \"tien3s\",\r\n    \"3tier\",\r\n    \"tie4rei\",\r\n    \"tie4reu\",\r\n    \"ti2ern\",\r\n    \"tie3s2t\",\r\n    \"2tieß\",\r\n    \"ti1eu\",\r\n    \"3tif.\",\r\n    \"ti3fe\",\r\n    \"ti1f4r\",\r\n    \"tifter6k\",\r\n    \"3tig\",\r\n    \"ti4gerz\",\r\n    \"ti2git\",\r\n    \"tigs4tr\",\r\n    \"tih2\",\r\n    \"3tij\",\r\n    \"ti2kam\",\r\n    \"ti2kar\",\r\n    \"tiken2\",\r\n    \"ti4kent\",\r\n    \"ti3k4ere\",\r\n    \"ti3kerl\",\r\n    \"ti2kin\",\r\n    \"ti4klu\",\r\n    \"ti2kn\",\r\n    \"ti2kop\",\r\n    \"tik1r\",\r\n    \"ti2kra\",\r\n    \"ti2krä\",\r\n    \"ti4krei\",\r\n    \"tik5t\",\r\n    \"ti2lar\",\r\n    \"til3d\",\r\n    \"ti2lei\",\r\n    \"ti2lel\",\r\n    \"3tilg\",\r\n    \"2tillu\",\r\n    \"ti2lö\",\r\n    \"tilt4\",\r\n    \"ti2lu\",\r\n    \"ti2ma2g\",\r\n    \"tim4man\",\r\n    \"t3immat\",\r\n    \"timmer4\",\r\n    \"tim6merg\",\r\n    \"3timo\",\r\n    \"2timp\",\r\n    \"tim2s\",\r\n    \"3tin.\",\r\n    \"t4ina\",\r\n    \"ti3naf\",\r\n    \"ti3nak\",\r\n    \"ti2n3an\",\r\n    \"t1ind\",\r\n    \"ti5n2e\",\r\n    \"tine1i\",\r\n    \"2t1inf\",\r\n    \"3ting\",\r\n    \"tin2ga\",\r\n    \"ting3l\",\r\n    \"ting3s\",\r\n    \"2t1inh\",\r\n    \"3tinis\",\r\n    \"t1in1it\",\r\n    \"t1inka\",\r\n    \"tin2k1l\",\r\n    \"tin2kn\",\r\n    \"tin2kr\",\r\n    \"t1inku\",\r\n    \"t2inn\",\r\n    \"ti2nor\",\r\n    \"t1ins\",\r\n    \"3tins.\",\r\n    \"t3insa\",\r\n    \"t2insä\",\r\n    \"4t3inse\",\r\n    \"tin4spa\",\r\n    \"tin4sum\",\r\n    \"t1int\",\r\n    \"3tinte.\",\r\n    \"ti3nu\",\r\n    \"tin2um\",\r\n    \"4t1inv\",\r\n    \"3tio\",\r\n    \"ti2osk\",\r\n    \"tioxi3\",\r\n    \"3tip.\",\r\n    \"2tipe\",\r\n    \"ti3p4l\",\r\n    \"3tipp\",\r\n    \"3tips\",\r\n    \"ti4que.\",\r\n    \"3tirad\",\r\n    \"ti1rh\",\r\n    \"ti4ron\",\r\n    \"3t2isc\",\r\n    \"ti6schei\",\r\n    \"ti4schu\",\r\n    \"tisch3w\",\r\n    \"ti2sei\",\r\n    \"tis2el\",\r\n    \"ti3sk\",\r\n    \"2t1isl\",\r\n    \"t1iso\",\r\n    \"ti2sp\",\r\n    \"t1isr\",\r\n    \"tiss4\",\r\n    \"ti3s2th\",\r\n    \"tis3ti\",\r\n    \"ti1s4tr\",\r\n    \"ti2s1u\",\r\n    \"t1it2a\",\r\n    \"ti2tal\",\r\n    \"3ti3te\",\r\n    \"ti1th\",\r\n    \"3titi\",\r\n    \"2ti3tu\",\r\n    \"3tiu\",\r\n    \"tium4s\",\r\n    \"3tiv\",\r\n    \"ti2van\",\r\n    \"ti2vel\",\r\n    \"ti4vene\",\r\n    \"tiver2\",\r\n    \"ti4verh\",\r\n    \"ti4verk\",\r\n    \"ti4verl\",\r\n    \"ti2v1o\",\r\n    \"ti4v3r\",\r\n    \"ti2za\",\r\n    \"ti2zir\",\r\n    \"2t1j\",\r\n    \"4t3k4\",\r\n    \"4t1l2\",\r\n    \"tlan2g\",\r\n    \"tl4e\",\r\n    \"t2lef\",\r\n    \"tlei6der\",\r\n    \"tle2ra\",\r\n    \"6t3li\",\r\n    \"tlings5\",\r\n    \"tlit1\",\r\n    \"t3lo\",\r\n    \"t5lö\",\r\n    \"tlung4\",\r\n    \"4t1m4\",\r\n    \"tmal2\",\r\n    \"tma2st\",\r\n    \"tmen8schl\",\r\n    \"tmen6t5\",\r\n    \"tments4\",\r\n    \"t3mo\",\r\n    \"tmo4des\",\r\n    \"4t3n4\",\r\n    \"t5na\",\r\n    \"tnes2\",\r\n    \"1to\",\r\n    \"3to.\",\r\n    \"to4as\",\r\n    \"to5at\",\r\n    \"t2oba\",\r\n    \"4tobj\",\r\n    \"tob2l\",\r\n    \"t1obs\",\r\n    \"3tobt\",\r\n    \"to1c\",\r\n    \"t3ochs\",\r\n    \"3tocht\",\r\n    \"to6ck5ent\",\r\n    \"3t4od\",\r\n    \"tod1er2\",\r\n    \"to4dun\",\r\n    \"tof4fa\",\r\n    \"tof6f5ent\",\r\n    \"tof4f3er\",\r\n    \"2toffi\",\r\n    \"toff3s\",\r\n    \"3tog\",\r\n    \"2t3ohr\",\r\n    \"3toi\",\r\n    \"4toi.\",\r\n    \"toi4r\",\r\n    \"4toiz\",\r\n    \"5toj\",\r\n    \"3tok4\",\r\n    \"3tol\",\r\n    \"to3le\",\r\n    \"4tolp\",\r\n    \"4tolz\",\r\n    \"tomar4b\",\r\n    \"to4mene\",\r\n    \"3tomi\",\r\n    \"to2min\",\r\n    \"3tomo\",\r\n    \"to2m1u\",\r\n    \"to4mun\",\r\n    \"to2nan\",\r\n    \"ton3au\",\r\n    \"tond2\",\r\n    \"to2n2eh\",\r\n    \"toner6ke\",\r\n    \"to2nob\",\r\n    \"2tony\",\r\n    \"3too\",\r\n    \"3top.\",\r\n    \"to2pad\",\r\n    \"to2pak\",\r\n    \"to2pan\",\r\n    \"to3pas\",\r\n    \"to2pat\",\r\n    \"top1hi\",\r\n    \"3topo\",\r\n    \"2to4pt\",\r\n    \"3tor\",\r\n    \"t4or.\",\r\n    \"tora2g\",\r\n    \"to4rän\",\r\n    \"4torc\",\r\n    \"t1ord\",\r\n    \"t2ordi\",\r\n    \"4t3ordn\",\r\n    \"t4ore\",\r\n    \"to2rei\",\r\n    \"to2rel\",\r\n    \"to2rem\",\r\n    \"to6renna\",\r\n    \"tor4fan\",\r\n    \"t1or3g\",\r\n    \"4torga\",\r\n    \"t5orient\",\r\n    \"torin4s\",\r\n    \"tor3int\",\r\n    \"5tork\",\r\n    \"to2rö\",\r\n    \"t4ors\",\r\n    \"4t1ort.\",\r\n    \"tor3t2a\",\r\n    \"t1orth\",\r\n    \"4tortn\",\r\n    \"4tort2s\",\r\n    \"to4ru\",\r\n    \"to3rü\",\r\n    \"to4rüb\",\r\n    \"4tory\",\r\n    \"to3sc\",\r\n    \"to3s2e\",\r\n    \"to3s2h\",\r\n    \"to4ska\",\r\n    \"to3s2p\",\r\n    \"4toss\",\r\n    \"3to1st2\",\r\n    \"4toß\",\r\n    \"to1ßu\",\r\n    \"to2tä\",\r\n    \"3tote\",\r\n    \"to2tho\",\r\n    \"3totr\",\r\n    \"tots2\",\r\n    \"5t2ou\",\r\n    \"touil2\",\r\n    \"to3un\",\r\n    \"3tow\",\r\n    \"to1x\",\r\n    \"3toz\",\r\n    \"1tö\",\r\n    \"3töch\",\r\n    \"4töck\",\r\n    \"2t1ö2d\",\r\n    \"2tö2f\",\r\n    \"4t1ök\",\r\n    \"2töl.\",\r\n    \"3tön\",\r\n    \"t2ör\",\r\n    \"t1öst\",\r\n    \"3töt\",\r\n    \"2t3p4\",\r\n    \"tpf4\",\r\n    \"tpi2n\",\r\n    \"2t1q\",\r\n    \"1t2r4\",\r\n    \"2tr.\",\r\n    \"5tra.\",\r\n    \"3trac\",\r\n    \"tra3cha\",\r\n    \"tra3chl\",\r\n    \"2t3rad.\",\r\n    \"2trade\",\r\n    \"tra4dem\",\r\n    \"4t3radie\",\r\n    \"tra4fah\",\r\n    \"tra4far\",\r\n    \"t4rag\",\r\n    \"3trahi\",\r\n    \"4trahl\",\r\n    \"2trahm\",\r\n    \"5t4rai\",\r\n    \"3trak\",\r\n    \"4t3rake\",\r\n    \"t4rakt\",\r\n    \"3tral\",\r\n    \"tral3l\",\r\n    \"3t4ran.\",\r\n    \"4trand\",\r\n    \"4trang\",\r\n    \"t3rann\",\r\n    \"5t4rans\",\r\n    \"tra2st\",\r\n    \"4traß\",\r\n    \"4traub.\",\r\n    \"4trauc\",\r\n    \"t4raue\",\r\n    \"t4rauf\",\r\n    \"2traup\",\r\n    \"4trauß\",\r\n    \"5träc\",\r\n    \"2träd\",\r\n    \"3träg\",\r\n    \"3träne\",\r\n    \"4träng\",\r\n    \"4träs\",\r\n    \"4träß\",\r\n    \"2träuc\",\r\n    \"4träus\",\r\n    \"4träuß\",\r\n    \"4t5re.\",\r\n    \"2trea\",\r\n    \"t3reak\",\r\n    \"4treb\",\r\n    \"tre2br\",\r\n    \"4trec\",\r\n    \"t3rech\",\r\n    \"t4reck\",\r\n    \"5treck.\",\r\n    \"tre5cke\",\r\n    \"2t3red\",\r\n    \"3tref\",\r\n    \"4trefe\",\r\n    \"5treff\",\r\n    \"4trefl\",\r\n    \"4trefo\",\r\n    \"4treg\",\r\n    \"t3reh\",\r\n    \"t4rei.\",\r\n    \"3t4reib\",\r\n    \"4treic\",\r\n    \"4treif\",\r\n    \"2t3reig\",\r\n    \"2t3reih\",\r\n    \"2treim\",\r\n    \"4t3rein\",\r\n    \"2t3reis\",\r\n    \"tre7isch.\",\r\n    \"4treit\",\r\n    \"t3reiz\",\r\n    \"2trek\",\r\n    \"4t3rel\",\r\n    \"t4rem\",\r\n    \"t4ren.\",\r\n    \"3trend\",\r\n    \"4trendi\",\r\n    \"3trennu\",\r\n    \"t3rent\",\r\n    \"2trepe\",\r\n    \"2t3repo\",\r\n    \"3trepp\",\r\n    \"t3repr\",\r\n    \"t4rer\",\r\n    \"5t4res.\",\r\n    \"tre2ta\",\r\n    \"t4rete\",\r\n    \"tret3r\",\r\n    \"2t3rett\",\r\n    \"3treuh\",\r\n    \"4t3rev\",\r\n    \"t4rex\",\r\n    \"4trez\",\r\n    \"5t4ré\",\r\n    \"2t3rh\",\r\n    \"3tri\",\r\n    \"t4rib\",\r\n    \"4tric\",\r\n    \"t4rick\",\r\n    \"t4rid2\",\r\n    \"5trieb\",\r\n    \"trie3fr\",\r\n    \"tri4ena\",\r\n    \"tri2er\",\r\n    \"tri4ers\",\r\n    \"trie1s\",\r\n    \"4trig.\",\r\n    \"5trigg\",\r\n    \"tri3gl\",\r\n    \"t4rik\",\r\n    \"tri4ke.\",\r\n    \"tri4kes\",\r\n    \"5triko\",\r\n    \"4t3rind\",\r\n    \"4tring\",\r\n    \"tri3ni\",\r\n    \"4t3rinn\",\r\n    \"t4rip\",\r\n    \"4tript\",\r\n    \"4t3riv\",\r\n    \"tri2x\",\r\n    \"trizi1\",\r\n    \"5tro.\",\r\n    \"tro3b4\",\r\n    \"4trock.\",\r\n    \"3troe\",\r\n    \"tro4kes\",\r\n    \"trol4la\",\r\n    \"6trom.\",\r\n    \"tro4men\",\r\n    \"tro2mi\",\r\n    \"4tromk\",\r\n    \"4troms\",\r\n    \"4tromv\",\r\n    \"3tron\",\r\n    \"tro3na\",\r\n    \"t4rop\",\r\n    \"tro1pe\",\r\n    \"3tropf\",\r\n    \"5tros.\",\r\n    \"tro5sm\",\r\n    \"3trost\",\r\n    \"t1rot.\",\r\n    \"2trout\",\r\n    \"3troy\",\r\n    \"4t3röc\",\r\n    \"2tröh\",\r\n    \"6tröm\",\r\n    \"3tröp\",\r\n    \"3trös\",\r\n    \"4t3röss\",\r\n    \"3tröt\",\r\n    \"3trua\",\r\n    \"3trub\",\r\n    \"2t3ruc\",\r\n    \"4truf\",\r\n    \"4truk\",\r\n    \"trum2\",\r\n    \"t3rumä\",\r\n    \"trums1\",\r\n    \"t3rund\",\r\n    \"3trunk\",\r\n    \"5t4rup\",\r\n    \"t3russ\",\r\n    \"2trut1\",\r\n    \"tru2th\",\r\n    \"4truw\",\r\n    \"trü1be\",\r\n    \"trü1bu\",\r\n    \"2t3rüc\",\r\n    \"trücker6\",\r\n    \"t4rüg\",\r\n    \"3trümm\",\r\n    \"try1\",\r\n    \"2ts\",\r\n    \"4ts.\",\r\n    \"ts3ab\",\r\n    \"t4sachs\",\r\n    \"t2s1a2d\",\r\n    \"ts1ahn\",\r\n    \"t2sall\",\r\n    \"t2salt\",\r\n    \"t4samp\",\r\n    \"t4s1amt\",\r\n    \"t2san\",\r\n    \"ts3ane\",\r\n    \"tsa2r\",\r\n    \"ts3are\",\r\n    \"ts3ari\",\r\n    \"t2s1a2s3\",\r\n    \"t2sau\",\r\n    \"ts2av\",\r\n    \"t2säh\",\r\n    \"ts1än\",\r\n    \"ts1äus\",\r\n    \"t4scham\",\r\n    \"t6schart\",\r\n    \"t3sche\",\r\n    \"t4schef\",\r\n    \"t3schl\",\r\n    \"tsch4li\",\r\n    \"t4schro\",\r\n    \"t3schü\",\r\n    \"ts4cor\",\r\n    \"t2s1e2b\",\r\n    \"tse2e\",\r\n    \"t2sef\",\r\n    \"tse4he.\",\r\n    \"ts2eil\",\r\n    \"t3seme\",\r\n    \"ts1eng\",\r\n    \"ts2ens\",\r\n    \"t2s1ent\",\r\n    \"t2s1ep\",\r\n    \"t2s1er\",\r\n    \"t6s5essen\",\r\n    \"tse2t\",\r\n    \"ts1eta\",\r\n    \"t2s1eti\",\r\n    \"t2s1e2v\",\r\n    \"t2sex\",\r\n    \"t3sexi\",\r\n    \"ts3he\",\r\n    \"t2s1i2d\",\r\n    \"t2s3i2k\",\r\n    \"t2sim\",\r\n    \"tsing4\",\r\n    \"t2sini\",\r\n    \"ts1ir\",\r\n    \"4tsk\",\r\n    \"t3skal\",\r\n    \"ts4kele\",\r\n    \"tski2\",\r\n    \"t4s3ko\",\r\n    \"t1slal\",\r\n    \"ts1off\",\r\n    \"t2s1op\",\r\n    \"tso2r\",\r\n    \"ts1orc\",\r\n    \"t2s1ori\",\r\n    \"ts3ort.\",\r\n    \"t2sö\",\r\n    \"t2spac\",\r\n    \"t2spal\",\r\n    \"ts1pas\",\r\n    \"t2spat\",\r\n    \"ts3pate\",\r\n    \"t2spä\",\r\n    \"t3sped\",\r\n    \"t3spei\",\r\n    \"t3s2pek\",\r\n    \"ts4pend\",\r\n    \"t2sph\",\r\n    \"t3s2pi\",\r\n    \"t4s3pic\",\r\n    \"t4spins\",\r\n    \"ts3ple\",\r\n    \"t2spo\",\r\n    \"t3s2pon\",\r\n    \"t3s2por\",\r\n    \"t2spro\",\r\n    \"ts2pul\",\r\n    \"ts2put\",\r\n    \"ts3s4\",\r\n    \"4t1st4\",\r\n    \"t4stabe\",\r\n    \"t2staf\",\r\n    \"t4stag\",\r\n    \"ts3tak\",\r\n    \"t4stale\",\r\n    \"t4s3tanz\",\r\n    \"t4stas\",\r\n    \"t4stat.\",\r\n    \"t4s3täti\",\r\n    \"t2stea\",\r\n    \"t3stein\",\r\n    \"ts4terb\",\r\n    \"t3s4tern\",\r\n    \"t3s4tero\",\r\n    \"t4sth\",\r\n    \"t3stif\",\r\n    \"t3stim\",\r\n    \"t4stit\",\r\n    \"t4stoch\",\r\n    \"t4stoi\",\r\n    \"ts4tol\",\r\n    \"t4ston\",\r\n    \"t3strec\",\r\n    \"t4stren\",\r\n    \"t4strie\",\r\n    \"ts2tu\",\r\n    \"t5stub\",\r\n    \"ts4tüm\",\r\n    \"t4sty\",\r\n    \"ts1u\",\r\n    \"t2su.\",\r\n    \"5tsubi\",\r\n    \"t2sumg\",\r\n    \"t2sums\",\r\n    \"t2sumv\",\r\n    \"t2sumz\",\r\n    \"t2s3un\",\r\n    \"tswa2s\",\r\n    \"t3sy\",\r\n    \"4t1t\",\r\n    \"tt1ab\",\r\n    \"tt2ac\",\r\n    \"tt3achs\",\r\n    \"tt1ad\",\r\n    \"tt2ag\",\r\n    \"tta6g5ess\",\r\n    \"t4t1ah\",\r\n    \"tta2ke\",\r\n    \"tt2al\",\r\n    \"t4tan4a\",\r\n    \"t2tanm\",\r\n    \"tt2ant\",\r\n    \"t4t1ap\",\r\n    \"tt1art\",\r\n    \"tt3atr\",\r\n    \"tt1äh\",\r\n    \"tt1ebe\",\r\n    \"tt1eif\",\r\n    \"tt1ein\",\r\n    \"t2t1eis\",\r\n    \"tte4l1a2\",\r\n    \"tte4l3e4b\",\r\n    \"tte4len\",\r\n    \"tte4lin\",\r\n    \"ttel1o\",\r\n    \"ttels4t\",\r\n    \"ttel5ste\",\r\n    \"t2temu\",\r\n    \"tte4na\",\r\n    \"tten6sem\",\r\n    \"t4tentb\",\r\n    \"tten3te\",\r\n    \"t4tentf\",\r\n    \"t4tents\",\r\n    \"tten3z\",\r\n    \"t2teo\",\r\n    \"tt4ere\",\r\n    \"tt3erfo\",\r\n    \"tte4rik\",\r\n    \"tte2ro\",\r\n    \"tt2erö\",\r\n    \"tt4es1\",\r\n    \"tte4s3a2\",\r\n    \"tte4s3ä2\",\r\n    \"tte2so\",\r\n    \"ttest4r\",\r\n    \"tt2häu\",\r\n    \"tt1hi\",\r\n    \"t2t1ho\",\r\n    \"t2ti4d\",\r\n    \"t4t3igi\",\r\n    \"t2tins\",\r\n    \"tt2int\",\r\n    \"t2tiso\",\r\n    \"t6t3la\",\r\n    \"t4torg\",\r\n    \"t2trou\",\r\n    \"tt3rü\",\r\n    \"ttschi4\",\r\n    \"tts1eh\",\r\n    \"tt2sen\",\r\n    \"tts1p\",\r\n    \"tt2spe\",\r\n    \"tt2spr\",\r\n    \"tt4s3tät\",\r\n    \"tt2sum\",\r\n    \"tt3s2z\",\r\n    \"tt5t2\",\r\n    \"tt1u2f\",\r\n    \"t3tü\",\r\n    \"tt3z2\",\r\n    \"1tu\",\r\n    \"3tua\",\r\n    \"tu4ale\",\r\n    \"tu1alm\",\r\n    \"tu1alv\",\r\n    \"tu3ant\",\r\n    \"2tub2\",\r\n    \"tuba3b\",\r\n    \"3tuc\",\r\n    \"tu2chi\",\r\n    \"tu1cho\",\r\n    \"2tud\",\r\n    \"tudie4n3\",\r\n    \"3tue\",\r\n    \"tu2ere\",\r\n    \"2tuf\",\r\n    \"tuf2e\",\r\n    \"tu3fen\",\r\n    \"t3u2fer\",\r\n    \"3tuff\",\r\n    \"tu2gan\",\r\n    \"4tuh\",\r\n    \"tuh4ler\",\r\n    \"tu1ist\",\r\n    \"tu2kr\",\r\n    \"tul2i\",\r\n    \"3tum.\",\r\n    \"tum2b5l\",\r\n    \"3tume\",\r\n    \"4t3umf\",\r\n    \"2t3umg\",\r\n    \"2t1umh\",\r\n    \"2t3umk\",\r\n    \"2tuml\",\r\n    \"3t2umo\",\r\n    \"2t3umr\",\r\n    \"4t3umsat\",\r\n    \"2t1umsc\",\r\n    \"tum2si\",\r\n    \"tum2so\",\r\n    \"tum4s5tr\",\r\n    \"2t3umt\",\r\n    \"2t1umw\",\r\n    \"2t3umz\",\r\n    \"3tun.\",\r\n    \"2t1una\",\r\n    \"2t1und\",\r\n    \"tund2e\",\r\n    \"tun2en\",\r\n    \"2t3unf\",\r\n    \"3tung\",\r\n    \"t3unga\",\r\n    \"tung4s5\",\r\n    \"2tunif\",\r\n    \"2tu2nio\",\r\n    \"2tuniv\",\r\n    \"2t1unm\",\r\n    \"3tunn\",\r\n    \"t1u2no\",\r\n    \"t3uns\",\r\n    \"3tuns.\",\r\n    \"4t3unt\",\r\n    \"2t1unv\",\r\n    \"2t1up.\",\r\n    \"t1upg\",\r\n    \"tu2r1ag\",\r\n    \"tu2ran\",\r\n    \"turan4l\",\r\n    \"tu2ras\",\r\n    \"tu2rau\",\r\n    \"tu2rä\",\r\n    \"tur1c\",\r\n    \"tu2r1e2b\",\r\n    \"tu2rei\",\r\n    \"tur3eis\",\r\n    \"tu4rene\",\r\n    \"tu2r1er\",\r\n    \"tu4res\",\r\n    \"tu2re4t\",\r\n    \"tu2r3e2v\",\r\n    \"tur3f4\",\r\n    \"tur3g2\",\r\n    \"tur1in1\",\r\n    \"tur4mun\",\r\n    \"3turn\",\r\n    \"tu2r3o\",\r\n    \"tu4ru\",\r\n    \"3tus\",\r\n    \"tu2sa\",\r\n    \"tu4schl\",\r\n    \"tu2se\",\r\n    \"tu2so\",\r\n    \"tu3t2a\",\r\n    \"tuto5\",\r\n    \"tuto3re\",\r\n    \"2tü\",\r\n    \"4tüb\",\r\n    \"tü3ber.\",\r\n    \"3tüch\",\r\n    \"tück2s\",\r\n    \"3tüf\",\r\n    \"4tüh\",\r\n    \"3tüm\",\r\n    \"3tür.\",\r\n    \"tür1c\",\r\n    \"3türe\",\r\n    \"3türg\",\r\n    \"3tür3s\",\r\n    \"3türw\",\r\n    \"4türz\",\r\n    \"3tütc\",\r\n    \"3tüte\",\r\n    \"4tütz\",\r\n    \"4t1v2\",\r\n    \"t3vo\",\r\n    \"tvoran4\",\r\n    \"4t3w4\",\r\n    \"t5wa2\",\r\n    \"twi4e\",\r\n    \"t4wist\",\r\n    \"1ty\",\r\n    \"2t1ya\",\r\n    \"3typ\",\r\n    \"ty2p1a\",\r\n    \"ty1s2\",\r\n    \"2t1z\",\r\n    \"t2za2\",\r\n    \"tz1ag\",\r\n    \"tz3ar\",\r\n    \"tz1au\",\r\n    \"t2z1ä\",\r\n    \"t3zäh\",\r\n    \"tz1ec\",\r\n    \"t2z1e2d\",\r\n    \"tz1ehr\",\r\n    \"t2z1eie\",\r\n    \"t4z1eis\",\r\n    \"tze2m\",\r\n    \"tz1emi\",\r\n    \"tze4n1\",\r\n    \"tz2ene\",\r\n    \"tzen5s4t\",\r\n    \"tzen3ta\",\r\n    \"t4zentg\",\r\n    \"t4zentl\",\r\n    \"t4zents\",\r\n    \"tze4reb\",\r\n    \"tzer6gre\",\r\n    \"tz1erw\",\r\n    \"tz2er3z\",\r\n    \"tz3erzi\",\r\n    \"tze2s3\",\r\n    \"tz1e2t\",\r\n    \"t2z1i2d\",\r\n    \"tzi4m\",\r\n    \"tz1imi\",\r\n    \"tz1int\",\r\n    \"tz1inv\",\r\n    \"t2z3om\",\r\n    \"t2zop\",\r\n    \"tz2th\",\r\n    \"tz4tin\",\r\n    \"tzu2gu\",\r\n    \"t2zuni\",\r\n    \"tzwan4d3\",\r\n    \"tz1wä\",\r\n    \"tz1wi\",\r\n    \"t3zwie\",\r\n    \"tz1wu\",\r\n    \"2ua\",\r\n    \"u3a2b\",\r\n    \"u3a2c\",\r\n    \"ua2dan\",\r\n    \"uad4r\",\r\n    \"ua2g\",\r\n    \"u1al.\",\r\n    \"u1a2l1a\",\r\n    \"u1a2l1ä\",\r\n    \"u1alb\",\r\n    \"u1ald\",\r\n    \"u3aleb\",\r\n    \"u3a4lent\",\r\n    \"u3aler2\",\r\n    \"ua4lerg\",\r\n    \"ual3erk\",\r\n    \"u3a2let\",\r\n    \"u1alf\",\r\n    \"u1alg\",\r\n    \"u1alh\",\r\n    \"u3a2lid\",\r\n    \"u1aln\",\r\n    \"ua2l1o2\",\r\n    \"u1alp\",\r\n    \"u1alr\",\r\n    \"u1als\",\r\n    \"u1al5t4\",\r\n    \"ua2lu\",\r\n    \"u1alw\",\r\n    \"u1alz\",\r\n    \"u1am\",\r\n    \"uan2a\",\r\n    \"u1ans\",\r\n    \"u3ar.\",\r\n    \"uara2b\",\r\n    \"u1ars\",\r\n    \"uar4t3an\",\r\n    \"ua3sa\",\r\n    \"uasi1\",\r\n    \"ua2th\",\r\n    \"uat2i\",\r\n    \"uat2o\",\r\n    \"u3au\",\r\n    \"u1ay\",\r\n    \"u1äm\",\r\n    \"uä2s\",\r\n    \"u1äu\",\r\n    \"2u1b\",\r\n    \"u2barb\",\r\n    \"ubb4l\",\r\n    \"ube2be\",\r\n    \"ube2e\",\r\n    \"u2b1ehe\",\r\n    \"u4b3eins\",\r\n    \"u2b1e2m\",\r\n    \"ube4n1a\",\r\n    \"uben3o\",\r\n    \"ub2er\",\r\n    \"u4b3erde\",\r\n    \"ubert4\",\r\n    \"ub4es\",\r\n    \"ub1eul\",\r\n    \"u3bit\",\r\n    \"ub2l\",\r\n    \"ub3läu\",\r\n    \"ub3lic\",\r\n    \"ub3lu\",\r\n    \"ub4lut\",\r\n    \"u2bob\",\r\n    \"u2bop\",\r\n    \"u2boz\",\r\n    \"u2b3rit\",\r\n    \"ub4rü\",\r\n    \"ub2san\",\r\n    \"ubsau2\",\r\n    \"ub4s3che\",\r\n    \"ub2s1o\",\r\n    \"ub2sp\",\r\n    \"ubst2\",\r\n    \"ub3t2h\",\r\n    \"4uc\",\r\n    \"uc1c\",\r\n    \"uch1a\",\r\n    \"u1cha.\",\r\n    \"uch1ä\",\r\n    \"u1che\",\r\n    \"uch1ec\",\r\n    \"u2ched\",\r\n    \"uch1ei\",\r\n    \"ucherin8t\",\r\n    \"u3ches\",\r\n    \"u1chi\",\r\n    \"uch3im\",\r\n    \"uch1in\",\r\n    \"uch3l\",\r\n    \"uch3m\",\r\n    \"uch3n\",\r\n    \"uch1op\",\r\n    \"u2ch3r\",\r\n    \"uch4sel\",\r\n    \"uch2so\",\r\n    \"uch2sp\",\r\n    \"uch2ta\",\r\n    \"uch3tan\",\r\n    \"uch6t5erf\",\r\n    \"uch6t5ert\",\r\n    \"u1chu\",\r\n    \"uch3ü\",\r\n    \"uch1w\",\r\n    \"u1ci\",\r\n    \"uck3elf\",\r\n    \"u2ckem\",\r\n    \"u4ckent\",\r\n    \"uck2er\",\r\n    \"ucker8geb\",\r\n    \"u2ck3i\",\r\n    \"uck4sti\",\r\n    \"u1cl\",\r\n    \"2u1d\",\r\n    \"u3d4a\",\r\n    \"uda3d\",\r\n    \"ud2e\",\r\n    \"ude3i4\",\r\n    \"udein7\",\r\n    \"ude2n1\",\r\n    \"uden3e\",\r\n    \"uden3s2\",\r\n    \"udert4\",\r\n    \"udes2\",\r\n    \"udi3en\",\r\n    \"uditi4\",\r\n    \"ud2o\",\r\n    \"u3dob\",\r\n    \"u2d3on\",\r\n    \"ud3ra\",\r\n    \"u3dru\",\r\n    \"4u1e\",\r\n    \"ueb4l\",\r\n    \"ue1ch\",\r\n    \"ue2ck\",\r\n    \"u2ed\",\r\n    \"ue2en4\",\r\n    \"u2eg\",\r\n    \"u2eh\",\r\n    \"ue2ke\",\r\n    \"u4ela\",\r\n    \"ue2lek\",\r\n    \"ueli4\",\r\n    \"uel2la\",\r\n    \"u3eln\",\r\n    \"ue2mi\",\r\n    \"uen1\",\r\n    \"u3en.\",\r\n    \"ue4n3a2\",\r\n    \"ue2nä\",\r\n    \"u3end\",\r\n    \"uene2\",\r\n    \"ue2neb\",\r\n    \"ue2ner\",\r\n    \"uen4gag\",\r\n    \"uenge2\",\r\n    \"uenge4m\",\r\n    \"uengene7\",\r\n    \"uenge4s\",\r\n    \"uen2gl\",\r\n    \"u3e2ni\",\r\n    \"uenk4\",\r\n    \"ue2no\",\r\n    \"uen6zene\",\r\n    \"uen2zu\",\r\n    \"u2ep\",\r\n    \"ue2r3a2\",\r\n    \"uera4t\",\r\n    \"ue2r1ä\",\r\n    \"uerb2\",\r\n    \"uer6baut\",\r\n    \"uer3d2\",\r\n    \"uere2\",\r\n    \"ue2rec\",\r\n    \"u5ereinn\",\r\n    \"uer3eis\",\r\n    \"uer3ela\",\r\n    \"u3eremp\",\r\n    \"u3e4r3ent\",\r\n    \"ue3r4erb\",\r\n    \"u3ererf\",\r\n    \"ue4rer4g\",\r\n    \"uerer4h\",\r\n    \"uerer4k\",\r\n    \"uerer4m\",\r\n    \"ue6rersc\",\r\n    \"uerer6sp\",\r\n    \"ue6rerst\",\r\n    \"uer3esk\",\r\n    \"ue2re4t\",\r\n    \"u3erex\",\r\n    \"uer3g2\",\r\n    \"uer4geb\",\r\n    \"u3erh\",\r\n    \"ueri2d\",\r\n    \"ue2r1i4m\",\r\n    \"u3erin4t\",\r\n    \"u3erl.\",\r\n    \"u3ern\",\r\n    \"uer4nan\",\r\n    \"uer4nar\",\r\n    \"uer4ne\",\r\n    \"uern3s4t\",\r\n    \"ue2r3o4\",\r\n    \"uer2ö\",\r\n    \"u3errü\",\r\n    \"uer3sc\",\r\n    \"uerst6\",\r\n    \"uer3t2\",\r\n    \"u3eruh\",\r\n    \"u3erum\",\r\n    \"u3erunf\",\r\n    \"u3erunt\",\r\n    \"uer3z2\",\r\n    \"ue2ta\",\r\n    \"ue4tek\",\r\n    \"ue2tik\",\r\n    \"uety2\",\r\n    \"u2ev\",\r\n    \"ue2x1\",\r\n    \"uf1ab\",\r\n    \"u3fac\",\r\n    \"ufa2ck\",\r\n    \"u3fah\",\r\n    \"u3fal\",\r\n    \"ufall4\",\r\n    \"u3fam\",\r\n    \"ufa2n\",\r\n    \"uf3ane\",\r\n    \"u2f3a2r\",\r\n    \"u3fas\",\r\n    \"uf1aß\",\r\n    \"ufa2t\",\r\n    \"uf1au\",\r\n    \"u2f1än\",\r\n    \"u2f1äs\",\r\n    \"u2f1ä2ß\",\r\n    \"u2f1ei\",\r\n    \"ufel4s3a\",\r\n    \"u2f1em\",\r\n    \"4ufen\",\r\n    \"u3fen.\",\r\n    \"u2fent\",\r\n    \"u2ferf\",\r\n    \"u2f1erh\",\r\n    \"u4ferla\",\r\n    \"u4ferle\",\r\n    \"u4ferne\",\r\n    \"u2f1et\",\r\n    \"2uff\",\r\n    \"uf3fe\",\r\n    \"uff4l\",\r\n    \"uf2fro\",\r\n    \"u2f1id\",\r\n    \"u2fim\",\r\n    \"u2f1ins\",\r\n    \"uf3l\",\r\n    \"u2fob\",\r\n    \"ufo2r\",\r\n    \"uf1ori\",\r\n    \"uf3r\",\r\n    \"uf5sä\",\r\n    \"uf2spo\",\r\n    \"uf4stab\",\r\n    \"2uft\",\r\n    \"ufta2b\",\r\n    \"uft1eb\",\r\n    \"uft3erd\",\r\n    \"uft3er4g\",\r\n    \"ufter4l\",\r\n    \"uft3s4\",\r\n    \"u2fum\",\r\n    \"2u1g\",\r\n    \"ug2abe\",\r\n    \"u4gabte\",\r\n    \"ug1a2d\",\r\n    \"ug1ak\",\r\n    \"u2gana\",\r\n    \"u2ganb\",\r\n    \"u2gani\",\r\n    \"u2g1ans\",\r\n    \"u2gant\",\r\n    \"ug1ap\",\r\n    \"u2g1ar\",\r\n    \"uga2s\",\r\n    \"ug1au\",\r\n    \"ug3d2\",\r\n    \"u3ge.\",\r\n    \"u2g1ec\",\r\n    \"ug1e2i\",\r\n    \"u2geig\",\r\n    \"u2gein\",\r\n    \"uge4lob\",\r\n    \"ug1emi\",\r\n    \"ugene2\",\r\n    \"ugen3s2\",\r\n    \"u2g1erf\",\r\n    \"u2g1erl\",\r\n    \"u2gerr\",\r\n    \"u2gerv\",\r\n    \"u3ges.\",\r\n    \"u2g1esk\",\r\n    \"ug2et\",\r\n    \"ugg2\",\r\n    \"ugge4st\",\r\n    \"ug2gl\",\r\n    \"ugg4t\",\r\n    \"ug3hu\",\r\n    \"u2g1i2d\",\r\n    \"u2gim\",\r\n    \"ug1in\",\r\n    \"u2g1l\",\r\n    \"u4glä\",\r\n    \"u6gleitb\",\r\n    \"u6gleitu\",\r\n    \"u4glic\",\r\n    \"u4glis\",\r\n    \"ug3liz\",\r\n    \"u4g3lo\",\r\n    \"u4glu\",\r\n    \"u4g3n\",\r\n    \"ugo3\",\r\n    \"u2go4b\",\r\n    \"ug3oc\",\r\n    \"u3gon\",\r\n    \"ugo4p\",\r\n    \"ug1o4r\",\r\n    \"u3gos\",\r\n    \"u2gö\",\r\n    \"u2g3rä\",\r\n    \"u2greg\",\r\n    \"u4g3reis\",\r\n    \"u2gres\",\r\n    \"u2g3rie\",\r\n    \"ug3ro\",\r\n    \"u2grou\",\r\n    \"ug3rüs\",\r\n    \"ug3span\",\r\n    \"ug4spe\",\r\n    \"ugs4por\",\r\n    \"ug4spr\",\r\n    \"ug4spu\",\r\n    \"ugst2\",\r\n    \"ug3sta\",\r\n    \"ug3stä\",\r\n    \"ugs4to\",\r\n    \"ug3s4tr\",\r\n    \"ug3stu\",\r\n    \"ug4stur\",\r\n    \"ug3s4tü\",\r\n    \"u2gum\",\r\n    \"ugu3te\",\r\n    \"u2gü\",\r\n    \"u1h\",\r\n    \"uh2a\",\r\n    \"2u3he\",\r\n    \"uhe3a2\",\r\n    \"uhe1e2\",\r\n    \"uhe1s\",\r\n    \"2uhi\",\r\n    \"2uhl\",\r\n    \"uh1la\",\r\n    \"uh2lar\",\r\n    \"uh1lä\",\r\n    \"uh4l3ent\",\r\n    \"uhl3erb\",\r\n    \"uh2li\",\r\n    \"uhl2ö\",\r\n    \"2uhm\",\r\n    \"uhme2\",\r\n    \"uhr1a\",\r\n    \"uhrei4s\",\r\n    \"uh2r3er3\",\r\n    \"2uh3ri\",\r\n    \"uh4rin\",\r\n    \"uh2r3o\",\r\n    \"uh2ru\",\r\n    \"uh4rü\",\r\n    \"uhs4\",\r\n    \"uh3t2\",\r\n    \"u2hu\",\r\n    \"2uhü\",\r\n    \"uh1w\",\r\n    \"2ui\",\r\n    \"ui2a\",\r\n    \"ui1ch\",\r\n    \"ui2che\",\r\n    \"ui4cker\",\r\n    \"u1idd\",\r\n    \"u1ie\",\r\n    \"ui1em\",\r\n    \"u3ig\",\r\n    \"u4ige\",\r\n    \"uil4les\",\r\n    \"u1im\",\r\n    \"u3in.\",\r\n    \"u3isch.\",\r\n    \"u3ischs\",\r\n    \"uis2e\",\r\n    \"uisi4n\",\r\n    \"uis3t\",\r\n    \"uit3s\",\r\n    \"u1j\",\r\n    \"uji3\",\r\n    \"uk2a\",\r\n    \"ukä2\",\r\n    \"uk1äh\",\r\n    \"u3käu\",\r\n    \"u1k2e\",\r\n    \"uke2n1\",\r\n    \"u1ki\",\r\n    \"u1k2l\",\r\n    \"ukle1\",\r\n    \"uk4n\",\r\n    \"u2k1ob\",\r\n    \"uko2m1\",\r\n    \"ukom3a\",\r\n    \"uk2ö\",\r\n    \"u1k4r\",\r\n    \"uk2ta\",\r\n    \"uk2t1el\",\r\n    \"uk4tent\",\r\n    \"uk2t1er\",\r\n    \"uk2tin\",\r\n    \"uk4t3o4ri\",\r\n    \"uk4t3r\",\r\n    \"uk2tum\",\r\n    \"u1ku\",\r\n    \"uku2s\",\r\n    \"uk2ü\",\r\n    \"u1l\",\r\n    \"ul1am\",\r\n    \"ulan2e\",\r\n    \"ul2ar\",\r\n    \"ula2s\",\r\n    \"ul1äm\",\r\n    \"ulb4l\",\r\n    \"ul4dan\",\r\n    \"ul2dr\",\r\n    \"uld2se\",\r\n    \"2ule\",\r\n    \"u2l1el\",\r\n    \"ul1emb\",\r\n    \"ule4n\",\r\n    \"ul1er2h\",\r\n    \"ules3t\",\r\n    \"ule2t\",\r\n    \"ul1eta\",\r\n    \"2ul3f4\",\r\n    \"ulg4\",\r\n    \"2uli\",\r\n    \"ul1id\",\r\n    \"uli2k\",\r\n    \"ul1ins\",\r\n    \"uli1p\",\r\n    \"ul3ka\",\r\n    \"ul2kn\",\r\n    \"ull1au\",\r\n    \"ul3len\",\r\n    \"ul3l2i\",\r\n    \"ul2lo\",\r\n    \"ull3s2\",\r\n    \"ulm2e\",\r\n    \"ulni2\",\r\n    \"ulo2i\",\r\n    \"u2lop\",\r\n    \"u2l1or\",\r\n    \"ulp1h\",\r\n    \"ul2pha\",\r\n    \"ul2sa\",\r\n    \"ul4sam\",\r\n    \"ul2s1ec\",\r\n    \"ul2sei\",\r\n    \"ul2ser\",\r\n    \"uls2th\",\r\n    \"ul2sum\",\r\n    \"4ult2a\",\r\n    \"ul3tan\",\r\n    \"ult3ar\",\r\n    \"ul2tau\",\r\n    \"ulter4m\",\r\n    \"ul3ti\",\r\n    \"ul4tri\",\r\n    \"ult3s\",\r\n    \"u2lü\",\r\n    \"ul2vr\",\r\n    \"ulz2w\",\r\n    \"2uma.\",\r\n    \"u2maa3\",\r\n    \"u2mab\",\r\n    \"u2m1ad\",\r\n    \"u2m1a2k\",\r\n    \"um1all\",\r\n    \"um1ang\",\r\n    \"um1anz\",\r\n    \"u2m1ap\",\r\n    \"um1ar\",\r\n    \"u2marc\",\r\n    \"u2marm\",\r\n    \"u2mart\",\r\n    \"u2matl\",\r\n    \"u2matm\",\r\n    \"um1aus\",\r\n    \"u2maut\",\r\n    \"u2m1äh\",\r\n    \"1umd2\",\r\n    \"u3me.\",\r\n    \"u2m1ef\",\r\n    \"u2m1ein\",\r\n    \"ume2n1e\",\r\n    \"um5engel\",\r\n    \"umer2a\",\r\n    \"u2m1erf\",\r\n    \"um1erg\",\r\n    \"u3merk\",\r\n    \"u2m1erl\",\r\n    \"um1erw\",\r\n    \"umes2t\",\r\n    \"1umf\",\r\n    \"4umfi\",\r\n    \"1umg\",\r\n    \"um1ind\",\r\n    \"um1inh\",\r\n    \"um1ir\",\r\n    \"umi2t\",\r\n    \"um1ite\",\r\n    \"1umk\",\r\n    \"1uml\",\r\n    \"2umme\",\r\n    \"um2mei\",\r\n    \"um3mi\",\r\n    \"um1ob\",\r\n    \"u3mol\",\r\n    \"um3ot\",\r\n    \"ump2fa\",\r\n    \"ump4fin\",\r\n    \"umpf4li\",\r\n    \"um2pho\",\r\n    \"1umr\",\r\n    \"um4s3an\",\r\n    \"1umsat\",\r\n    \"um4s1er\",\r\n    \"um2sim\",\r\n    \"um4sk\",\r\n    \"um2s1pe\",\r\n    \"um2sum\",\r\n    \"um3t2\",\r\n    \"u2mum\",\r\n    \"u2m1u2r\",\r\n    \"1umz\",\r\n    \"un1\",\r\n    \"4un.\",\r\n    \"2una.\",\r\n    \"1unab\",\r\n    \"un2a3br\",\r\n    \"un2ag\",\r\n    \"un2al\",\r\n    \"u3n2am\",\r\n    \"u2n3an\",\r\n    \"u2nap\",\r\n    \"u2narb\",\r\n    \"2un2a1s4\",\r\n    \"un3at\",\r\n    \"un2är\",\r\n    \"2und.\",\r\n    \"un2da\",\r\n    \"unda2b\",\r\n    \"un2dän\",\r\n    \"1undd\",\r\n    \"2unde\",\r\n    \"un3de.\",\r\n    \"underer6\",\r\n    \"und3erf\",\r\n    \"und3erö\",\r\n    \"underten8\",\r\n    \"under8tend\",\r\n    \"und3erz\",\r\n    \"un2dex\",\r\n    \"1undf\",\r\n    \"2undg\",\r\n    \"un2did\",\r\n    \"un2dim\",\r\n    \"1undn\",\r\n    \"undo2b\",\r\n    \"un2dop\",\r\n    \"un2dor\",\r\n    \"4un2d3r\",\r\n    \"und3s\",\r\n    \"4unds.\",\r\n    \"2undsc\",\r\n    \"un2d1um\",\r\n    \"undü4\",\r\n    \"1undv\",\r\n    \"1undz\",\r\n    \"u3ne2\",\r\n    \"un3eid\",\r\n    \"un3ein\",\r\n    \"un2emi\",\r\n    \"une4n1\",\r\n    \"unen2t\",\r\n    \"une3re\",\r\n    \"une3ri\",\r\n    \"u4nerk\",\r\n    \"u4n3erz.\",\r\n    \"un2es4\",\r\n    \"unf2\",\r\n    \"un3fa\",\r\n    \"unft4s\",\r\n    \"un2gab\",\r\n    \"un2gam\",\r\n    \"un2gat\",\r\n    \"3ungena\",\r\n    \"unger4e\",\r\n    \"1unget\",\r\n    \"1ungew\",\r\n    \"ung5h\",\r\n    \"1ungl\",\r\n    \"un2glu\",\r\n    \"un2go\",\r\n    \"un2gr\",\r\n    \"ung3ri\",\r\n    \"ungs3\",\r\n    \"ung4sa\",\r\n    \"ungs5tr\",\r\n    \"u3nic\",\r\n    \"un2id\",\r\n    \"un3ide\",\r\n    \"4unie\",\r\n    \"3u2nif\",\r\n    \"uni3k4\",\r\n    \"un2im\",\r\n    \"1unio\",\r\n    \"un2ir\",\r\n    \"un3iro\",\r\n    \"un3isl\",\r\n    \"u3n2it\",\r\n    \"1u2niv\",\r\n    \"2unk\",\r\n    \"un2k1a2\",\r\n    \"un3ker\",\r\n    \"un2k1es\",\r\n    \"un2ket\",\r\n    \"un2kne\",\r\n    \"un2ko2p\",\r\n    \"un2kro\",\r\n    \"unk3s2\",\r\n    \"unk4tit\",\r\n    \"unk2tr\",\r\n    \"unlö2\",\r\n    \"unna2\",\r\n    \"un4n1ad\",\r\n    \"unn2e\",\r\n    \"unne4n\",\r\n    \"u2nob\",\r\n    \"uno4r\",\r\n    \"un2os\",\r\n    \"1unr\",\r\n    \"uns2\",\r\n    \"2uns.\",\r\n    \"unsch5el\",\r\n    \"un3se\",\r\n    \"1un3si\",\r\n    \"un3sk\",\r\n    \"un4ski\",\r\n    \"un3sp\",\r\n    \"unsta4g\",\r\n    \"unste4c\",\r\n    \"uns4t1r\",\r\n    \"4unsy\",\r\n    \"4unsz\",\r\n    \"1unt\",\r\n    \"un3ta\",\r\n    \"un3te\",\r\n    \"unte4ri\",\r\n    \"4unti\",\r\n    \"un3tr\",\r\n    \"unt3s\",\r\n    \"2untu\",\r\n    \"3unty\",\r\n    \"2u2nu\",\r\n    \"u3nuc\",\r\n    \"unvol2\",\r\n    \"unvoll3\",\r\n    \"1unw\",\r\n    \"4unwä\",\r\n    \"3unwe\",\r\n    \"u2ny\",\r\n    \"2unz\",\r\n    \"un3z2a\",\r\n    \"unz2e\",\r\n    \"2uo\",\r\n    \"u1o2b\",\r\n    \"u3of\",\r\n    \"u1or\",\r\n    \"u3or.\",\r\n    \"uo2r3a\",\r\n    \"uor3c\",\r\n    \"u3oret\",\r\n    \"uo2ris\",\r\n    \"u3ors\",\r\n    \"uor5t\",\r\n    \"uos2\",\r\n    \"u1os.\",\r\n    \"uote2\",\r\n    \"u1ox\",\r\n    \"uö2d\",\r\n    \"u1ök\",\r\n    \"u1pa\",\r\n    \"3upd\",\r\n    \"u1pe2\",\r\n    \"uper1\",\r\n    \"uperer4\",\r\n    \"up2fa\",\r\n    \"u2pfe2\",\r\n    \"u2pfi\",\r\n    \"up2fu\",\r\n    \"u3p4i\",\r\n    \"up4lu\",\r\n    \"u3po\",\r\n    \"2upp\",\r\n    \"up2pl\",\r\n    \"u1pr\",\r\n    \"upra3\",\r\n    \"u2p3ras\",\r\n    \"up4t3a2\",\r\n    \"upten1\",\r\n    \"up4tene\",\r\n    \"upt3erf\",\r\n    \"upt3erg\",\r\n    \"upt3erk\",\r\n    \"upt3ers\",\r\n    \"up4tin\",\r\n    \"up4t1o\",\r\n    \"up4tr\",\r\n    \"u1q\",\r\n    \"4ur.\",\r\n    \"u1ra\",\r\n    \"u2rab\",\r\n    \"u3raba\",\r\n    \"ura2be\",\r\n    \"u2r1akt\",\r\n    \"u2ral4t\",\r\n    \"u2r1am\",\r\n    \"ura4na\",\r\n    \"u3rand\",\r\n    \"uran6fän\",\r\n    \"ur1ang\",\r\n    \"uran4ge\",\r\n    \"ur2anh\",\r\n    \"uran5s\",\r\n    \"ur1anz\",\r\n    \"ur3ap\",\r\n    \"u2r3ar\",\r\n    \"ura4ri\",\r\n    \"u3rasc\",\r\n    \"ur1asp\",\r\n    \"ura4str\",\r\n    \"ur4ate\",\r\n    \"u2r1att\",\r\n    \"ur1au\",\r\n    \"2u1rä\",\r\n    \"ur1äl\",\r\n    \"ur1ä2m\",\r\n    \"ur1än\",\r\n    \"ur3b2a\",\r\n    \"2urc\",\r\n    \"urch1\",\r\n    \"urcht3e\",\r\n    \"urd2\",\r\n    \"ur3da\",\r\n    \"ur3di\",\r\n    \"ure1e\",\r\n    \"ur1eff\",\r\n    \"ur1eig\",\r\n    \"u2rele\",\r\n    \"ure2n\",\r\n    \"ure4na\",\r\n    \"u4ren4se\",\r\n    \"u4rentn\",\r\n    \"u2r1ep\",\r\n    \"urer3h\",\r\n    \"urer3k\",\r\n    \"ur2ert\",\r\n    \"u2rerw\",\r\n    \"ur1eta\",\r\n    \"ur2e3th\",\r\n    \"ure3u\",\r\n    \"2urf\",\r\n    \"ur2f3l\",\r\n    \"ur2fro\",\r\n    \"urf4spr\",\r\n    \"urf3t\",\r\n    \"ur6gense\",\r\n    \"urg3inn\",\r\n    \"urg1l\",\r\n    \"ur2gla\",\r\n    \"ur2gri\",\r\n    \"urgros4\",\r\n    \"urg1s4\",\r\n    \"uri2c\",\r\n    \"ur1ide\",\r\n    \"uri3en\",\r\n    \"u2r1ind\",\r\n    \"urin6sek\",\r\n    \"urin8stin\",\r\n    \"u2ri2so\",\r\n    \"ur3ku\",\r\n    \"ur3l\",\r\n    \"ur4matt\",\r\n    \"ur2m1au\",\r\n    \"urm2ei\",\r\n    \"ur4mern\",\r\n    \"urmet1\",\r\n    \"ur2mum\",\r\n    \"ur2mun\",\r\n    \"ur3n2e\",\r\n    \"2u1ro\",\r\n    \"urob2l\",\r\n    \"ur1off\",\r\n    \"uroh2\",\r\n    \"uro1s4\",\r\n    \"urost2\",\r\n    \"2u1rö\",\r\n    \"ur3p4\",\r\n    \"2urr\",\r\n    \"ur3re\",\r\n    \"ur2rh\",\r\n    \"3ursac\",\r\n    \"ur2san\",\r\n    \"ursau4\",\r\n    \"ur2s1er\",\r\n    \"ur4s1of\",\r\n    \"ur2spa\",\r\n    \"ur3sze\",\r\n    \"urt2\",\r\n    \"2urta\",\r\n    \"ur2tai\",\r\n    \"urt3ein\",\r\n    \"ur2tro\",\r\n    \"urts2c\",\r\n    \"u3ru\",\r\n    \"uruf4\",\r\n    \"urü2\",\r\n    \"ur2z1a2\",\r\n    \"ur2zä\",\r\n    \"ur2z1ec\",\r\n    \"ur2zep\",\r\n    \"ur2zi\",\r\n    \"ur2z1op\",\r\n    \"urzt4\",\r\n    \"ur2z1w\",\r\n    \"2us\",\r\n    \"us3a2b\",\r\n    \"usa2gi\",\r\n    \"u4s1amb\",\r\n    \"u4samt\",\r\n    \"u2sang\",\r\n    \"us2ann\",\r\n    \"us3ark\",\r\n    \"usa2s3\",\r\n    \"us1ast\",\r\n    \"u2säh\",\r\n    \"u2s1äs\",\r\n    \"u4schab\",\r\n    \"u4schak\",\r\n    \"u3sche.\",\r\n    \"u4schef\",\r\n    \"usch5eic\",\r\n    \"u4sch3eu\",\r\n    \"u3schi\",\r\n    \"usch3mü\",\r\n    \"u3schu\",\r\n    \"usch5wer\",\r\n    \"u3s2e3b\",\r\n    \"u2s1ec\",\r\n    \"use2ei\",\r\n    \"u2s1ei\",\r\n    \"u4sen4se\",\r\n    \"u4sentl\",\r\n    \"u3sep\",\r\n    \"use4rec\",\r\n    \"u2s1erl\",\r\n    \"u2serp\",\r\n    \"us1erw\",\r\n    \"u2s1ese\",\r\n    \"u2sex\",\r\n    \"u2sid\",\r\n    \"usi3er.\",\r\n    \"usi5ers.\",\r\n    \"u3sik\",\r\n    \"usi4kat\",\r\n    \"us1inn\",\r\n    \"us3kl\",\r\n    \"us3oc\",\r\n    \"us1oh\",\r\n    \"u3sol\",\r\n    \"u2sop\",\r\n    \"us1orc\",\r\n    \"us1ou\",\r\n    \"u2spac\",\r\n    \"us3part\",\r\n    \"u2s1pas\",\r\n    \"u3spec\",\r\n    \"u3spek\",\r\n    \"u2sph\",\r\n    \"us1pic\",\r\n    \"u3spit\",\r\n    \"u3s4piz\",\r\n    \"u2spo\",\r\n    \"us2por\",\r\n    \"u2spu\",\r\n    \"usrich7\",\r\n    \"us2s1ad\",\r\n    \"us2s3eb\",\r\n    \"usse4g\",\r\n    \"usse4n\",\r\n    \"us2sep\",\r\n    \"us5ser.\",\r\n    \"uss3erf\",\r\n    \"usser4z\",\r\n    \"us4sesp\",\r\n    \"us2sez\",\r\n    \"uss3k\",\r\n    \"us2sof\",\r\n    \"us2sum\",\r\n    \"u1stad\",\r\n    \"u1stal\",\r\n    \"us3tau\",\r\n    \"us4tein\",\r\n    \"u1stel\",\r\n    \"ust3erl\",\r\n    \"us2th\",\r\n    \"us3ther\",\r\n    \"us3tin\",\r\n    \"us3tr\",\r\n    \"us4tras\",\r\n    \"us6tris\",\r\n    \"u1stu\",\r\n    \"u2stun\",\r\n    \"u2stur\",\r\n    \"u2sumd\",\r\n    \"u2sumg\",\r\n    \"u2sumz\",\r\n    \"u3sur\",\r\n    \"3usus\",\r\n    \"u2sü\",\r\n    \"2uß\",\r\n    \"uß1u\",\r\n    \"2u1t\",\r\n    \"4ut.\",\r\n    \"u3taf\",\r\n    \"u2t1alt\",\r\n    \"u4t1a2m\",\r\n    \"ut2ans\",\r\n    \"u2t1ap\",\r\n    \"u2t1ar\",\r\n    \"uta2s\",\r\n    \"u2taut\",\r\n    \"ut1äh\",\r\n    \"u2tär\",\r\n    \"ut3c\",\r\n    \"ut1e2d\",\r\n    \"u3teh\",\r\n    \"ut1ei.\",\r\n    \"ut1eie\",\r\n    \"ut1ein\",\r\n    \"u3tek\",\r\n    \"ut1ela\",\r\n    \"u3tem\",\r\n    \"ute2n1\",\r\n    \"uten2a\",\r\n    \"u2tent\",\r\n    \"u4tentf\",\r\n    \"utera2\",\r\n    \"ute4ral\",\r\n    \"ute5r4er\",\r\n    \"ute6ring\",\r\n    \"uter3k\",\r\n    \"ute4ros\",\r\n    \"ut2es\",\r\n    \"ut2et\",\r\n    \"u2t2ev\",\r\n    \"u2t1ex\",\r\n    \"utfi2\",\r\n    \"ut3hal\",\r\n    \"ut3hei\",\r\n    \"ut1hel\",\r\n    \"u2t1hi\",\r\n    \"u2t1ho\",\r\n    \"u2thu\",\r\n    \"u2t1id\",\r\n    \"u4tigel\",\r\n    \"uti2vi\",\r\n    \"utli4n\",\r\n    \"uto3c\",\r\n    \"u5to3m\",\r\n    \"uto1p\",\r\n    \"uto3pa\",\r\n    \"u2tops\",\r\n    \"utor2a\",\r\n    \"u4tord\",\r\n    \"uto2re\",\r\n    \"uto4rin\",\r\n    \"uto3s2\",\r\n    \"4utou\",\r\n    \"u2töl\",\r\n    \"4utr\",\r\n    \"ut3rea\",\r\n    \"u2trou\",\r\n    \"ut3rü\",\r\n    \"4uts\",\r\n    \"utsau2\",\r\n    \"ut2säu\",\r\n    \"ut4schl\",\r\n    \"ut4schm\",\r\n    \"ut4scho\",\r\n    \"ut4schö\",\r\n    \"ut3ser\",\r\n    \"ut3s2k\",\r\n    \"uts2p\",\r\n    \"ut3sta\",\r\n    \"utt4er\",\r\n    \"ut5t2l\",\r\n    \"utts2\",\r\n    \"utu2b\",\r\n    \"u2tum\",\r\n    \"utu4n\",\r\n    \"u2t1une\",\r\n    \"utu4re\",\r\n    \"utu3ro\",\r\n    \"utu5ru\",\r\n    \"u3tü\",\r\n    \"u6tz\",\r\n    \"ut2zeh\",\r\n    \"utz3eng\",\r\n    \"utz2er\",\r\n    \"ut2zet\",\r\n    \"ut2z1in\",\r\n    \"ut2zis\",\r\n    \"ut2zö\",\r\n    \"ut2z1w\",\r\n    \"2u1u4\",\r\n    \"uufe2\",\r\n    \"uum1\",\r\n    \"uuma4\",\r\n    \"uume2\",\r\n    \"u1ü2\",\r\n    \"2u1v4\",\r\n    \"u2ve.\",\r\n    \"uve3rä\",\r\n    \"u1w\",\r\n    \"2u1x\",\r\n    \"ux2e\",\r\n    \"ux2o\",\r\n    \"ux3oe\",\r\n    \"ux3t4\",\r\n    \"u1y\",\r\n    \"u2yo\",\r\n    \"2u1z\",\r\n    \"uze2\",\r\n    \"u2z1ec\",\r\n    \"u2z1ene\",\r\n    \"uz2er\",\r\n    \"uzo2f\",\r\n    \"uz3ot\",\r\n    \"uz1we\",\r\n    \"uz3z2\",\r\n    \"1üb\",\r\n    \"üb1ä\",\r\n    \"2übc\",\r\n    \"2übd\",\r\n    \"übe2\",\r\n    \"übe3c\",\r\n    \"übe3le\",\r\n    \"übe4na\",\r\n    \"übe3ne\",\r\n    \"über1\",\r\n    \"ü4bet\",\r\n    \"üb3l\",\r\n    \"üb5r\",\r\n    \"üb2s3t\",\r\n    \"2üc\",\r\n    \"ü1che\",\r\n    \"üch3l\",\r\n    \"üch2s1c\",\r\n    \"ücht4e\",\r\n    \"ü3cke4n\",\r\n    \"ück1er\",\r\n    \"ück3eri\",\r\n    \"ücker6ke\",\r\n    \"ü4ckers\",\r\n    \"ü2ckin\",\r\n    \"ü2ckum\",\r\n    \"ü4d3a4\",\r\n    \"üde2c\",\r\n    \"üde2l\",\r\n    \"ü3den.\",\r\n    \"üden2g\",\r\n    \"ü3d2ens\",\r\n    \"üd3o4\",\r\n    \"üd3r\",\r\n    \"üd3s2\",\r\n    \"üd3t4\",\r\n    \"üdu2\",\r\n    \"üe2\",\r\n    \"üeb3\",\r\n    \"ü1ei\",\r\n    \"2üf\",\r\n    \"ü2f1a\",\r\n    \"ü2f1ä\",\r\n    \"ü2f1ei\",\r\n    \"ü2fent\",\r\n    \"üfer2\",\r\n    \"ü2f1erg\",\r\n    \"üf2fl\",\r\n    \"ü2f1i\",\r\n    \"üf3l\",\r\n    \"ü2fo\",\r\n    \"ü2fum\",\r\n    \"ü1g\",\r\n    \"üg2e\",\r\n    \"üge2l1a2\",\r\n    \"üge2lä\",\r\n    \"üge4lec\",\r\n    \"üge6lei6s\",\r\n    \"üge2lo\",\r\n    \"ügen3s\",\r\n    \"ü2g3l\",\r\n    \"ü2gn\",\r\n    \"üg3s2\",\r\n    \"üg4s3t\",\r\n    \"üh3a2\",\r\n    \"ü1he\",\r\n    \"ü2h1ei\",\r\n    \"ü2h3e4m\",\r\n    \"ü3hem.\",\r\n    \"ü2h1eng\",\r\n    \"ü2h1ent\",\r\n    \"ü2h1erf\",\r\n    \"ü2h1er2k\",\r\n    \"ü2h1er2z\",\r\n    \"ü2hex\",\r\n    \"üh1i4\",\r\n    \"ühla2\",\r\n    \"üh1lä\",\r\n    \"üh2lel\",\r\n    \"ühl2er\",\r\n    \"üh2lö\",\r\n    \"ühl4sk\",\r\n    \"ühl4sta\",\r\n    \"ühl4sti\",\r\n    \"üh3mo\",\r\n    \"üh3ne\",\r\n    \"ühn2s\",\r\n    \"üh1o2\",\r\n    \"üh3r2e\",\r\n    \"ühr3ei.\",\r\n    \"ühre2n1\",\r\n    \"ühren3s4\",\r\n    \"üh1ro\",\r\n    \"ühr3ta\",\r\n    \"üh1s\",\r\n    \"ühs2p\",\r\n    \"üh3t\",\r\n    \"üht2a\",\r\n    \"üht4r\",\r\n    \"ü1hu\",\r\n    \"üh1w\",\r\n    \"ü1k2\",\r\n    \"ül1a\",\r\n    \"ül2c\",\r\n    \"ü3l2e\",\r\n    \"ü4l3ef\",\r\n    \"üle2r3a2\",\r\n    \"ül2l1a2\",\r\n    \"ül2l1ei\",\r\n    \"üll2er\",\r\n    \"ül2lid\",\r\n    \"ül2lo\",\r\n    \"ül2lö\",\r\n    \"ülls2\",\r\n    \"ü2lö\",\r\n    \"ü1lu\",\r\n    \"ü2ma\",\r\n    \"ü2ment\",\r\n    \"üme2ra\",\r\n    \"ü2m1id\",\r\n    \"ü2m1in\",\r\n    \"ü2m1u\",\r\n    \"2ün\",\r\n    \"ü4n3a2\",\r\n    \"ün2da\",\r\n    \"ün2dr\",\r\n    \"ünd3s\",\r\n    \"ü2n1erd\",\r\n    \"ünf1\",\r\n    \"ünf3li\",\r\n    \"ün2g3l\",\r\n    \"ün2s\",\r\n    \"ün3sc\",\r\n    \"ün3se\",\r\n    \"ün3sp\",\r\n    \"ün3sta\",\r\n    \"ünster3\",\r\n    \"ün3str\",\r\n    \"ün2za\",\r\n    \"ün2z1i\",\r\n    \"ünzu2\",\r\n    \"ün2zun\",\r\n    \"ün2zw\",\r\n    \"ü1pe\",\r\n    \"üpf3l\",\r\n    \"ü1pi\",\r\n    \"üp2pl\",\r\n    \"2ür\",\r\n    \"ür1a\",\r\n    \"ü2r1ei\",\r\n    \"ü2r1e2l\",\r\n    \"ür2f1er\",\r\n    \"ür2fl\",\r\n    \"ür2fr\",\r\n    \"ür4g3en4g\",\r\n    \"ürge4ra\",\r\n    \"ürk2e\",\r\n    \"ü3r2o3\",\r\n    \"ürom2\",\r\n    \"üror2\",\r\n    \"ürr2\",\r\n    \"ür2s\",\r\n    \"ür3sc\",\r\n    \"ür3se\",\r\n    \"ür3si\",\r\n    \"ür3sp\",\r\n    \"ür3sta\",\r\n    \"ürte2l3\",\r\n    \"ürt2h\",\r\n    \"ür2z1in\",\r\n    \"ür2zö\",\r\n    \"ür2z1w\",\r\n    \"üs2a\",\r\n    \"ü2schl\",\r\n    \"ü3s2e\",\r\n    \"üse1e2\",\r\n    \"üse3l2\",\r\n    \"üse4n\",\r\n    \"üse3r4\",\r\n    \"üse1s\",\r\n    \"üs4s3a\",\r\n    \"üs2s1c\",\r\n    \"üss2e\",\r\n    \"üs4s3o\",\r\n    \"üs2st\",\r\n    \"üst3a\",\r\n    \"üste2n\",\r\n    \"2ü1ß\",\r\n    \"2üt\",\r\n    \"ü2t1al\",\r\n    \"üte3m\",\r\n    \"üte4n\",\r\n    \"üten3s\",\r\n    \"ütent4\",\r\n    \"üten3z2\",\r\n    \"üte2ra\",\r\n    \"üte2r1e\",\r\n    \"üterich6\",\r\n    \"üter3n\",\r\n    \"ü2t1h\",\r\n    \"ü2t3r\",\r\n    \"üt2se\",\r\n    \"üt2st\",\r\n    \"ütte4n\",\r\n    \"üt2tr\",\r\n    \"üt3zen\",\r\n    \"üt2zw\",\r\n    \"ü1v\",\r\n    \"ü1z\",\r\n    \"3va.\",\r\n    \"2v1ab\",\r\n    \"vab4r\",\r\n    \"va1c\",\r\n    \"va1f4\",\r\n    \"va3g\",\r\n    \"vag2a\",\r\n    \"va4gh\",\r\n    \"va2la\",\r\n    \"2valu\",\r\n    \"v2an.\",\r\n    \"2vanb\",\r\n    \"2vang\",\r\n    \"v2ans\",\r\n    \"2varb\",\r\n    \"v1arm\",\r\n    \"vas2\",\r\n    \"2v1ass\",\r\n    \"va1st\",\r\n    \"v4at\",\r\n    \"va2t1a4\",\r\n    \"va6tag\",\r\n    \"va4tan\",\r\n    \"va2tei\",\r\n    \"va4t3eng\",\r\n    \"va4tess\",\r\n    \"va2t3h\",\r\n    \"va4tid\",\r\n    \"vati3k2\",\r\n    \"va4tim\",\r\n    \"va4t1in\",\r\n    \"vati8ons.\",\r\n    \"va4tord\",\r\n    \"va4t3r\",\r\n    \"vat3s4\",\r\n    \"va2t1u\",\r\n    \"2v1au\",\r\n    \"2v1b\",\r\n    \"2v1c\",\r\n    \"2v1d2\",\r\n    \"1ve2\",\r\n    \"ve3an\",\r\n    \"ve3ar\",\r\n    \"veau3\",\r\n    \"veau1s\",\r\n    \"ve3b4\",\r\n    \"ve3d\",\r\n    \"ve3fa\",\r\n    \"ve3g\",\r\n    \"ve3h2\",\r\n    \"2veig\",\r\n    \"v2eil\",\r\n    \"2vein\",\r\n    \"veit2\",\r\n    \"veits3\",\r\n    \"ve3la\",\r\n    \"2velan\",\r\n    \"vel2ar\",\r\n    \"ve4l1au\",\r\n    \"v1ele\",\r\n    \"ve3lei\",\r\n    \"ve3l2i\",\r\n    \"ve3lo\",\r\n    \"vel2o1p\",\r\n    \"ve3ma\",\r\n    \"ve3me\",\r\n    \"2v1emp\",\r\n    \"2vemu\",\r\n    \"ve3nal\",\r\n    \"ve4nas\",\r\n    \"ven2c\",\r\n    \"ve3ne\",\r\n    \"ve3ni\",\r\n    \"ve4nin\",\r\n    \"ve3nö\",\r\n    \"ven6t3ag\",\r\n    \"vent4sk\",\r\n    \"2veo\",\r\n    \"ve3of\",\r\n    \"ve4pi\",\r\n    \"ver1\",\r\n    \"ver3a\",\r\n    \"ve3rad\",\r\n    \"2veral\",\r\n    \"ve3rand\",\r\n    \"ve3r4ane\",\r\n    \"vera4s\",\r\n    \"ver6bart\",\r\n    \"ver3b2l\",\r\n    \"ver3d2\",\r\n    \"vere2\",\r\n    \"verf4\",\r\n    \"ver3g4\",\r\n    \"ve3ri\",\r\n    \"ve4rin\",\r\n    \"ver3k\",\r\n    \"vern2\",\r\n    \"ver4sep\",\r\n    \"vert4\",\r\n    \"ver5te\",\r\n    \"ver3u4\",\r\n    \"ve3rus\",\r\n    \"ves1\",\r\n    \"ve3sa\",\r\n    \"2ve3s2c\",\r\n    \"2ve3s2e\",\r\n    \"ves3ti\",\r\n    \"ve3ta\",\r\n    \"vete1\",\r\n    \"vete3r\",\r\n    \"ve3ti\",\r\n    \"ve3tr\",\r\n    \"ve3t2s\",\r\n    \"2veü\",\r\n    \"ve3v\",\r\n    \"ve3w\",\r\n    \"2v1f4\",\r\n    \"2v1g\",\r\n    \"2v1h\",\r\n    \"vi1an\",\r\n    \"vi3ar\",\r\n    \"vi4a3t\",\r\n    \"vi2ä\",\r\n    \"vi2c\",\r\n    \"vi3de\",\r\n    \"vid3s2t\",\r\n    \"3vie\",\r\n    \"vie2h1a\",\r\n    \"vi2el\",\r\n    \"viela2\",\r\n    \"viele2\",\r\n    \"vi2er\",\r\n    \"vie4rec\",\r\n    \"vie2w1\",\r\n    \"vig2\",\r\n    \"2vii\",\r\n    \"v2il\",\r\n    \"vi2l1a\",\r\n    \"vi2lä\",\r\n    \"vi4l1e2h\",\r\n    \"vi2lei\",\r\n    \"viler4\",\r\n    \"vi4lers\",\r\n    \"vi2l1in\",\r\n    \"vi2ma2\",\r\n    \"vi4na\",\r\n    \"vin3d\",\r\n    \"ving3\",\r\n    \"vings4\",\r\n    \"v1ins\",\r\n    \"vi3sa\",\r\n    \"vise4\",\r\n    \"vi3s2i\",\r\n    \"vi3s2o\",\r\n    \"vi2sp\",\r\n    \"vis2u\",\r\n    \"viv2\",\r\n    \"viz2\",\r\n    \"vize5\",\r\n    \"2v1k\",\r\n    \"2v1l4\",\r\n    \"v3le\",\r\n    \"v2lie\",\r\n    \"2v1m\",\r\n    \"vm2e\",\r\n    \"2v1n2\",\r\n    \"1vo\",\r\n    \"2v1ob\",\r\n    \"vo2be\",\r\n    \"vob4l\",\r\n    \"voge2l3\",\r\n    \"vo2gu\",\r\n    \"vol2a\",\r\n    \"vol4l1a\",\r\n    \"vollen6\",\r\n    \"vol6lend\",\r\n    \"vol6ler6t\",\r\n    \"vol2li\",\r\n    \"2v1op\",\r\n    \"vo2r1\",\r\n    \"vo4r3a\",\r\n    \"voran8schl\",\r\n    \"vor3g\",\r\n    \"vo3ri\",\r\n    \"vo4rie\",\r\n    \"vo5rig\",\r\n    \"vorm2\",\r\n    \"vormen4\",\r\n    \"vor3o\",\r\n    \"vort4\",\r\n    \"vot2a\",\r\n    \"voy1\",\r\n    \"vö2c\",\r\n    \"2v1p\",\r\n    \"vr2\",\r\n    \"v1ra\",\r\n    \"v2ree\",\r\n    \"3v2ri\",\r\n    \"2vs\",\r\n    \"vs2c\",\r\n    \"vs2e\",\r\n    \"vs2p\",\r\n    \"v1sta\",\r\n    \"v1steu\",\r\n    \"v3s2z\",\r\n    \"2v1t\",\r\n    \"vue3\",\r\n    \"vu2enu\",\r\n    \"vu2et\",\r\n    \"2vumf\",\r\n    \"2vumg\",\r\n    \"2vumk\",\r\n    \"v1ü\",\r\n    \"2v1v\",\r\n    \"2v1w\",\r\n    \"2v1z\",\r\n    \"w2a\",\r\n    \"1waa\",\r\n    \"wab2bl\",\r\n    \"wa3che\",\r\n    \"wach8stub\",\r\n    \"wach4t4r\",\r\n    \"1wack\",\r\n    \"waffe2\",\r\n    \"waffel3\",\r\n    \"1wag\",\r\n    \"wa5ge\",\r\n    \"3wage4n\",\r\n    \"wa2g3n\",\r\n    \"wa3go\",\r\n    \"1wah\",\r\n    \"wahl5ent\",\r\n    \"wah4ler\",\r\n    \"wah2l1i\",\r\n    \"1wal\",\r\n    \"wa2lar\",\r\n    \"2walb\",\r\n    \"wal4d3a\",\r\n    \"wal4din\",\r\n    \"wal2dr\",\r\n    \"wa2les\",\r\n    \"wa3li\",\r\n    \"wal2m1\",\r\n    \"wals2\",\r\n    \"walt1a\",\r\n    \"wal6tere\",\r\n    \"wal6terl\",\r\n    \"wal4to\",\r\n    \"wal4tur\",\r\n    \"3walz\",\r\n    \"wa3na\",\r\n    \"wan2d1a2\",\r\n    \"wandels6\",\r\n    \"wan2dr\",\r\n    \"w3anf\",\r\n    \"2wang\",\r\n    \"wan3g2e\",\r\n    \"wang4s\",\r\n    \"1wann\",\r\n    \"wan6z5en6d\",\r\n    \"wan4zer\",\r\n    \"wa2p\",\r\n    \"1war2e\",\r\n    \"ware1i\",\r\n    \"wa5ren\",\r\n    \"1warn\",\r\n    \"war4ni\",\r\n    \"wart4e\",\r\n    \"war2th\",\r\n    \"war2za\",\r\n    \"1was\",\r\n    \"wa3sa\",\r\n    \"was2c\",\r\n    \"wa4scha\",\r\n    \"wa3sche\",\r\n    \"wa4sch3l\",\r\n    \"wa4schw\",\r\n    \"wa3se\",\r\n    \"wa3sh\",\r\n    \"was3s\",\r\n    \"wass4e2\",\r\n    \"wa3su\",\r\n    \"w2ä\",\r\n    \"1wäh\",\r\n    \"1wäl\",\r\n    \"2wäng\",\r\n    \"1wäs\",\r\n    \"wäs2c\",\r\n    \"wäss4e\",\r\n    \"2w3äu\",\r\n    \"2w1b2\",\r\n    \"wbu2\",\r\n    \"2w1c\",\r\n    \"2w1d\",\r\n    \"we2a\",\r\n    \"we2b1a\",\r\n    \"webe1i\",\r\n    \"we2b3l\",\r\n    \"we2bo\",\r\n    \"we2b3r\",\r\n    \"webs2c\",\r\n    \"we3cke.\",\r\n    \"we5cken.\",\r\n    \"we3ckes\",\r\n    \"we2e2\",\r\n    \"weed3\",\r\n    \"we2fl\",\r\n    \"1weg\",\r\n    \"we2g1a\",\r\n    \"we4g1ei\",\r\n    \"weg5ersc\",\r\n    \"we4g3l\",\r\n    \"we4gn\",\r\n    \"we2g1o2\",\r\n    \"we4g3r\",\r\n    \"weg3s2\",\r\n    \"wegs4t\",\r\n    \"1weh\",\r\n    \"weh4r3er4\",\r\n    \"wei2bl\",\r\n    \"weib4r\",\r\n    \"2weie\",\r\n    \"weifel6d\",\r\n    \"wei4fre\",\r\n    \"wei2gr\",\r\n    \"weigs4\",\r\n    \"wei3k4\",\r\n    \"3weil\",\r\n    \"weinsau6\",\r\n    \"wei3sc\",\r\n    \"weis6sel\",\r\n    \"weis6spi\",\r\n    \"wei2t1r\",\r\n    \"wei5ze\",\r\n    \"wel5le4\",\r\n    \"wel6schl\",\r\n    \"wel6schr\",\r\n    \"wel2t1\",\r\n    \"wel4t3a2\",\r\n    \"welte4\",\r\n    \"wel6t5en6d\",\r\n    \"wel4th\",\r\n    \"welt3i\",\r\n    \"wel4to\",\r\n    \"wel6t3r\",\r\n    \"wen3a2\",\r\n    \"wendes4\",\r\n    \"wen2gl\",\r\n    \"we3n2i\",\r\n    \"wen2ka\",\r\n    \"wen4kla\",\r\n    \"wen4k3ri\",\r\n    \"we2r3a2\",\r\n    \"wer5be\",\r\n    \"werbe3i\",\r\n    \"wer2bl\",\r\n    \"werb2s\",\r\n    \"1werbu\",\r\n    \"wer3d2\",\r\n    \"5werdens\",\r\n    \"1werdu\",\r\n    \"werer2\",\r\n    \"wer2fl\",\r\n    \"2werg\",\r\n    \"wer2ga\",\r\n    \"wer6gels\",\r\n    \"wer2g3o\",\r\n    \"wer2gr\",\r\n    \"werin2\",\r\n    \"we3rins\",\r\n    \"we2ri4o\",\r\n    \"1werk.\",\r\n    \"wer2k1a\",\r\n    \"1werke\",\r\n    \"wer2ki\",\r\n    \"wer2k3l\",\r\n    \"wer2kn\",\r\n    \"wer2k3o\",\r\n    \"wer4k3re\",\r\n    \"wer2ku\",\r\n    \"we2rö\",\r\n    \"wer2s\",\r\n    \"wer3sp\",\r\n    \"wer2t1a\",\r\n    \"wer2tä\",\r\n    \"wert3ei\",\r\n    \"wer6teig\",\r\n    \"wer6t5erm\",\r\n    \"wer2th\",\r\n    \"wer4tin\",\r\n    \"wer4t1o2\",\r\n    \"wer4tre\",\r\n    \"wer6t3ri\",\r\n    \"wer4tum\",\r\n    \"1wes2e\",\r\n    \"we2sp\",\r\n    \"we4st\",\r\n    \"wes4t1a\",\r\n    \"weste2\",\r\n    \"west3ei\",\r\n    \"wes6ten6d\",\r\n    \"wes4tex\",\r\n    \"wes2ti\",\r\n    \"wes4t1o2\",\r\n    \"wes4t3r\",\r\n    \"wes4tu\",\r\n    \"1wet\",\r\n    \"2wets\",\r\n    \"wett3s\",\r\n    \"2w3ey\",\r\n    \"2w1f\",\r\n    \"2w1g\",\r\n    \"whi4\",\r\n    \"w3ho\",\r\n    \"w2i\",\r\n    \"wicht4s\",\r\n    \"wi1cka\",\r\n    \"1wid\",\r\n    \"wi2e\",\r\n    \"2wieb\",\r\n    \"1wied\",\r\n    \"wie3l\",\r\n    \"wie3n2e\",\r\n    \"wik2\",\r\n    \"1wild\",\r\n    \"wim2ma\",\r\n    \"wim6ment\",\r\n    \"wim4m3u\",\r\n    \"win2a\",\r\n    \"win4d3e4c\",\r\n    \"win3del\",\r\n    \"win6d5erz\",\r\n    \"1win2d3r\",\r\n    \"2wing\",\r\n    \"win2g3r\",\r\n    \"win2kl\",\r\n    \"win8n7er8sc\",\r\n    \"win2no\",\r\n    \"win3s\",\r\n    \"wint2\",\r\n    \"1wi4r\",\r\n    \"wire3\",\r\n    \"wi5s2e\",\r\n    \"wi2sp\",\r\n    \"1wiss\",\r\n    \"wiss4z\",\r\n    \"wi3th\",\r\n    \"1witz.\",\r\n    \"1witzl\",\r\n    \"wiz2\",\r\n    \"2w1k\",\r\n    \"2w1l\",\r\n    \"2w1m\",\r\n    \"2wn\",\r\n    \"wns2a\",\r\n    \"wn3sh\",\r\n    \"1wo1c\",\r\n    \"wo2cha\",\r\n    \"woch2e4\",\r\n    \"1woh\",\r\n    \"woh4lei\",\r\n    \"woh4na\",\r\n    \"1wolf\",\r\n    \"wolf2s3\",\r\n    \"wol2la\",\r\n    \"wol4ler\",\r\n    \"wor3a\",\r\n    \"wor3d\",\r\n    \"wo4r3i\",\r\n    \"worn2\",\r\n    \"wort1a\",\r\n    \"wor4tel\",\r\n    \"wor6terh\",\r\n    \"wor4t3r\",\r\n    \"wort3s2\",\r\n    \"wo4r3u\",\r\n    \"wor3ü\",\r\n    \"3wos\",\r\n    \"wot2\",\r\n    \"1wöc\",\r\n    \"wöl2fo\",\r\n    \"wört2h\",\r\n    \"2w1p\",\r\n    \"w2r\",\r\n    \"w3re\",\r\n    \"w3ro\",\r\n    \"2w1s\",\r\n    \"ws2e\",\r\n    \"w3s2h\",\r\n    \"w3s2k\",\r\n    \"ws2t\",\r\n    \"w4s1u\",\r\n    \"2w1t\",\r\n    \"wti2\",\r\n    \"w2u\",\r\n    \"1wuc\",\r\n    \"wuch4sc\",\r\n    \"wuch4st\",\r\n    \"w3u2f\",\r\n    \"wul2\",\r\n    \"wul3se\",\r\n    \"wund4e\",\r\n    \"wung3r\",\r\n    \"wungs4\",\r\n    \"wun2s\",\r\n    \"wunsch5l\",\r\n    \"4wur.\",\r\n    \"wur2fa\",\r\n    \"wur2f1o\",\r\n    \"wur2fr\",\r\n    \"wur2s\",\r\n    \"1wurst\",\r\n    \"wus2\",\r\n    \"wus3te\",\r\n    \"1wu4t1\",\r\n    \"1wüh\",\r\n    \"wül2\",\r\n    \"wün3\",\r\n    \"1würf\",\r\n    \"1würst\",\r\n    \"2w1w\",\r\n    \"2w1z\",\r\n    \"x1a\",\r\n    \"1xa.\",\r\n    \"2xa2b\",\r\n    \"1x2ac\",\r\n    \"1x2ad\",\r\n    \"1xae\",\r\n    \"xa1fl\",\r\n    \"1x2a3g2\",\r\n    \"2xal\",\r\n    \"xal2l\",\r\n    \"xa2m\",\r\n    \"1xane\",\r\n    \"1xani\",\r\n    \"x2an3t2\",\r\n    \"x2anz\",\r\n    \"xa2r\",\r\n    \"1x2as\",\r\n    \"xa2z\",\r\n    \"2x1b4\",\r\n    \"x1ce\",\r\n    \"x1ch\",\r\n    \"x1cl\",\r\n    \"4x1d\",\r\n    \"xda4\",\r\n    \"xdy2\",\r\n    \"1xe\",\r\n    \"3xe.\",\r\n    \"2x1e4g\",\r\n    \"2xek\",\r\n    \"xe2l\",\r\n    \"3xel.\",\r\n    \"x1ele\",\r\n    \"xe3lei\",\r\n    \"x1em\",\r\n    \"3x2em.\",\r\n    \"2xemp\",\r\n    \"x2ems\",\r\n    \"x2en\",\r\n    \"3xen.\",\r\n    \"xen3s2\",\r\n    \"3x2er.\",\r\n    \"x2ere\",\r\n    \"2x1erl\",\r\n    \"xer2la\",\r\n    \"x2ern\",\r\n    \"xers2\",\r\n    \"x2ers.\",\r\n    \"3xes\",\r\n    \"2x1eu\",\r\n    \"2x1ex\",\r\n    \"2x1f\",\r\n    \"2x1g\",\r\n    \"2x1h\",\r\n    \"xi1c\",\r\n    \"xich2\",\r\n    \"2xid\",\r\n    \"xi2dan\",\r\n    \"xide2\",\r\n    \"xi2dei\",\r\n    \"xi2d3em\",\r\n    \"x1i2do\",\r\n    \"3x2ie\",\r\n    \"xie3l\",\r\n    \"xi3g\",\r\n    \"xi2ler\",\r\n    \"xili3a\",\r\n    \"xi2lo\",\r\n    \"xi2l1u\",\r\n    \"xim2\",\r\n    \"xin3s2\",\r\n    \"x2is\",\r\n    \"xi2sa\",\r\n    \"xi2s1e\",\r\n    \"xi2sp\",\r\n    \"xis3s2\",\r\n    \"xis3t\",\r\n    \"xis4tä\",\r\n    \"xi2su\",\r\n    \"3xit\",\r\n    \"xi3te\",\r\n    \"x1i4tu\",\r\n    \"xive4\",\r\n    \"x1j\",\r\n    \"4x1k2\",\r\n    \"xkal2\",\r\n    \"4x2l2\",\r\n    \"x3lä\",\r\n    \"x3le\",\r\n    \"2x1m\",\r\n    \"2x1n\",\r\n    \"2xod\",\r\n    \"2xoe4\",\r\n    \"x1o2r\",\r\n    \"xos2\",\r\n    \"2x1ö2\",\r\n    \"4x1p\",\r\n    \"xpor6ter\",\r\n    \"xpor4t3r\",\r\n    \"x1q\",\r\n    \"x1r\",\r\n    \"2x3s2\",\r\n    \"4x1t\",\r\n    \"xt1a\",\r\n    \"xta2b3\",\r\n    \"x3tan\",\r\n    \"xt2ant\",\r\n    \"x3tas\",\r\n    \"x2t1ä\",\r\n    \"x3tät\",\r\n    \"xtblo4\",\r\n    \"xtblock5\",\r\n    \"x2t1e2d\",\r\n    \"xt1ein\",\r\n    \"x2t1el\",\r\n    \"x4tent\",\r\n    \"x2t1er2f\",\r\n    \"x2t1ev\",\r\n    \"xtfi2\",\r\n    \"x2t1h\",\r\n    \"x2t1id\",\r\n    \"xti2la\",\r\n    \"x2til2l\",\r\n    \"x2t1o4\",\r\n    \"x4tor\",\r\n    \"xtra3b4\",\r\n    \"x2t3ran\",\r\n    \"x2trau\",\r\n    \"xt3rec\",\r\n    \"xt3s2\",\r\n    \"x2t1um\",\r\n    \"x2t1un\",\r\n    \"1xu\",\r\n    \"xu1a\",\r\n    \"xu2n\",\r\n    \"2xunt\",\r\n    \"xu2s3\",\r\n    \"xusa2\",\r\n    \"xuss4\",\r\n    \"2xv\",\r\n    \"2x1w\",\r\n    \"3xy.\",\r\n    \"x1z\",\r\n    \"2y1ab\",\r\n    \"1ya2c\",\r\n    \"y2ach\",\r\n    \"ya1h\",\r\n    \"y1al.\",\r\n    \"yan2g\",\r\n    \"y1ank\",\r\n    \"ya1q\",\r\n    \"ya3ra\",\r\n    \"yas2\",\r\n    \"yas3t\",\r\n    \"y1ät\",\r\n    \"y1b\",\r\n    \"ybe2r\",\r\n    \"y1c\",\r\n    \"y2chi\",\r\n    \"y3chis\",\r\n    \"ych3n\",\r\n    \"y1d\",\r\n    \"yd2o\",\r\n    \"ydri2\",\r\n    \"ydrid3\",\r\n    \"ydro3\",\r\n    \"y1e\",\r\n    \"y2ec\",\r\n    \"ye2d\",\r\n    \"y2ef\",\r\n    \"y2el2\",\r\n    \"yen4n\",\r\n    \"yera2\",\r\n    \"y2ere\",\r\n    \"yer2n1\",\r\n    \"y2es\",\r\n    \"y4es.\",\r\n    \"yes2p\",\r\n    \"ye2th\",\r\n    \"y1f2\",\r\n    \"y1g\",\r\n    \"ygi2\",\r\n    \"ygie3\",\r\n    \"yg2l\",\r\n    \"y1h\",\r\n    \"y3ho\",\r\n    \"yhr2\",\r\n    \"2y1i4\",\r\n    \"y1j\",\r\n    \"y1k2\",\r\n    \"yke3n\",\r\n    \"yk4l\",\r\n    \"yk3s2\",\r\n    \"yl1a2\",\r\n    \"yl2a3g\",\r\n    \"y1l2ak\",\r\n    \"yla4l\",\r\n    \"y2lam\",\r\n    \"yl3ane\",\r\n    \"y1lant\",\r\n    \"yl4ante\",\r\n    \"yl4anti\",\r\n    \"yl2as\",\r\n    \"ylau2\",\r\n    \"yl3c\",\r\n    \"yle2\",\r\n    \"y2le.\",\r\n    \"yl1em\",\r\n    \"y2l1es3\",\r\n    \"y2l1e4t\",\r\n    \"yli4n\",\r\n    \"ylo1i2\",\r\n    \"yloid3\",\r\n    \"yloni1\",\r\n    \"yl2op\",\r\n    \"yl1ora\",\r\n    \"yl3s2\",\r\n    \"yl5t\",\r\n    \"ym2a\",\r\n    \"ym4an\",\r\n    \"ym4ar\",\r\n    \"ym4as\",\r\n    \"ym4e\",\r\n    \"ymp4\",\r\n    \"ym2pha\",\r\n    \"ympi1e\",\r\n    \"ynä4r\",\r\n    \"yn2eu\",\r\n    \"ynk2\",\r\n    \"y2n1o2\",\r\n    \"yno4t\",\r\n    \"yn2oz\",\r\n    \"yn3t2\",\r\n    \"yob2\",\r\n    \"y2od\",\r\n    \"yoga3\",\r\n    \"yom2\",\r\n    \"yon2a\",\r\n    \"y1ont\",\r\n    \"yo2pe\",\r\n    \"yo1s\",\r\n    \"y2ost\",\r\n    \"y1ou\",\r\n    \"2y1p\",\r\n    \"ypa2b3\",\r\n    \"ypa2n\",\r\n    \"yp2e2\",\r\n    \"ype4r3o2\",\r\n    \"y2pf\",\r\n    \"y2p1i2d\",\r\n    \"y2p1in\",\r\n    \"y2plo\",\r\n    \"y3po3\",\r\n    \"y4p3s\",\r\n    \"yp3th\",\r\n    \"ypu2\",\r\n    \"y2p1um\",\r\n    \"y1q\",\r\n    \"y1r\",\r\n    \"y3r2e\",\r\n    \"y3ri\",\r\n    \"yri1e\",\r\n    \"yri3en\",\r\n    \"y3ro\",\r\n    \"yros3t\",\r\n    \"yrr2\",\r\n    \"2ys\",\r\n    \"ys2an\",\r\n    \"ysch4\",\r\n    \"ys2e1\",\r\n    \"ysein2\",\r\n    \"y4s3l\",\r\n    \"ysme3\",\r\n    \"ys2po\",\r\n    \"ys1pr\",\r\n    \"yst2e\",\r\n    \"yst2h\",\r\n    \"ys2the\",\r\n    \"ys3to\",\r\n    \"ys3tr\",\r\n    \"ys4tra\",\r\n    \"y4stro\",\r\n    \"y3s2ty\",\r\n    \"ysu2\",\r\n    \"y2s1ur\",\r\n    \"y3s2z\",\r\n    \"y1t\",\r\n    \"y2te.\",\r\n    \"y2tes\",\r\n    \"yt2h\",\r\n    \"ythe1\",\r\n    \"y3to1\",\r\n    \"ytos2\",\r\n    \"y4t3r\",\r\n    \"yu2r\",\r\n    \"yur2e3\",\r\n    \"y1v\",\r\n    \"y1w\",\r\n    \"y1y\",\r\n    \"y1z2\",\r\n    \"yze3r2i\",\r\n    \"2z1a2b\",\r\n    \"zab3l\",\r\n    \"za1c\",\r\n    \"2z1ach\",\r\n    \"zach2s\",\r\n    \"2z1a2d\",\r\n    \"2z1af\",\r\n    \"za3gr\",\r\n    \"3z2ah\",\r\n    \"zah3len\",\r\n    \"zah4ner4\",\r\n    \"z1ak\",\r\n    \"4z3akk\",\r\n    \"2z1al\",\r\n    \"4z3ald\",\r\n    \"3zali\",\r\n    \"2z1a2m\",\r\n    \"z1a2n\",\r\n    \"4z3a4n4a\",\r\n    \"2z3anb\",\r\n    \"za3ne\",\r\n    \"2z3anf\",\r\n    \"2z3angs\",\r\n    \"3z2ank\",\r\n    \"zan2ka\",\r\n    \"z3anl\",\r\n    \"2z3anr\",\r\n    \"zanti1\",\r\n    \"za4pf\",\r\n    \"z1aq\",\r\n    \"z1ar\",\r\n    \"3zar.\",\r\n    \"2zarb\",\r\n    \"za3re\",\r\n    \"2zarm\",\r\n    \"3z2aro\",\r\n    \"z2arr\",\r\n    \"zar2t1r\",\r\n    \"2z1as\",\r\n    \"za2sc\",\r\n    \"zast4\",\r\n    \"z3at\",\r\n    \"zat2e\",\r\n    \"za2to\",\r\n    \"3zaub\",\r\n    \"2z1au2f\",\r\n    \"2z3aug\",\r\n    \"3zaun\",\r\n    \"z3aur\",\r\n    \"2z1aut\",\r\n    \"zä2\",\r\n    \"2z1äc\",\r\n    \"z2äh\",\r\n    \"zä3hi\",\r\n    \"3zähn\",\r\n    \"2z1äm\",\r\n    \"z1än\",\r\n    \"z1äp\",\r\n    \"z1är\",\r\n    \"2z1äus\",\r\n    \"2zäuß\",\r\n    \"4z3b4\",\r\n    \"zber2e\",\r\n    \"zbü1b\",\r\n    \"zbübe3\",\r\n    \"2z3c\",\r\n    \"2z3d2\",\r\n    \"zdan2\",\r\n    \"zdä1\",\r\n    \"zdi1st\",\r\n    \"3ze.\",\r\n    \"2zea\",\r\n    \"2z1e2ben\",\r\n    \"ze1c\",\r\n    \"2z1e2cho\",\r\n    \"ze1e2\",\r\n    \"zeeu3\",\r\n    \"2z1eff\",\r\n    \"z1e2ga\",\r\n    \"zehe4\",\r\n    \"zehen1\",\r\n    \"zeh2l\",\r\n    \"ze3ho\",\r\n    \"zei1f4\",\r\n    \"zeik4\",\r\n    \"zeil2\",\r\n    \"zei3la\",\r\n    \"zeile4\",\r\n    \"2z1ein\",\r\n    \"ze3in.\",\r\n    \"z2e1ind\",\r\n    \"zei4ne\",\r\n    \"4z3einh\",\r\n    \"ze3inse\",\r\n    \"ze2i1s4\",\r\n    \"zei3sk\",\r\n    \"3zeit\",\r\n    \"zei2t1a\",\r\n    \"zei4t3er\",\r\n    \"zei4to\",\r\n    \"zei2tr\",\r\n    \"zeit3ri\",\r\n    \"zek4\",\r\n    \"ze2l1a\",\r\n    \"zela2d\",\r\n    \"zel3a2n\",\r\n    \"ze2l1ä\",\r\n    \"zel3d4\",\r\n    \"4ze2lek\",\r\n    \"4zelem\",\r\n    \"ze2len\",\r\n    \"ze2l1er\",\r\n    \"ze2l1in\",\r\n    \"2z1e2lit\",\r\n    \"zel3la\",\r\n    \"zel4lab\",\r\n    \"zel4l3ac\",\r\n    \"zel4lar\",\r\n    \"zel6lein\",\r\n    \"zel6ler6t\",\r\n    \"zeller6z\",\r\n    \"zell3s2\",\r\n    \"zelm4\",\r\n    \"ze2l1o\",\r\n    \"zels2\",\r\n    \"zel3sa\",\r\n    \"zel3sz\",\r\n    \"zel2ti\",\r\n    \"zembe2\",\r\n    \"2z1emp\",\r\n    \"5zen.\",\r\n    \"ze4n1ac\",\r\n    \"ze4nas\",\r\n    \"zen3au\",\r\n    \"ze2nä\",\r\n    \"ze3n2em\",\r\n    \"zenen1\",\r\n    \"4zenge.\",\r\n    \"z4engl\",\r\n    \"2zengp\",\r\n    \"2zeni\",\r\n    \"ze2nid\",\r\n    \"zenk2\",\r\n    \"zen3n\",\r\n    \"ze2n3o\",\r\n    \"ze4not\",\r\n    \"4zen4sem\",\r\n    \"zen4ser\",\r\n    \"zens2p\",\r\n    \"z2entn\",\r\n    \"z1ents\",\r\n    \"2zentw\",\r\n    \"2zentz\",\r\n    \"zen4z3er\",\r\n    \"zen2zw\",\r\n    \"zeo4r\",\r\n    \"3z2er.\",\r\n    \"ze2rad\",\r\n    \"ze1ral\",\r\n    \"ze2rat\",\r\n    \"z2ere\",\r\n    \"ze5rek\",\r\n    \"zer2em\",\r\n    \"z2erfe\",\r\n    \"z3erfül\",\r\n    \"2z1ergä\",\r\n    \"4z3ergeb\",\r\n    \"z4erges\",\r\n    \"z4ergl\",\r\n    \"zer4gon\",\r\n    \"4z1ergu\",\r\n    \"3z2erhe\",\r\n    \"2z3erhö\",\r\n    \"zerin6te\",\r\n    \"z2erko\",\r\n    \"3zerl.\",\r\n    \"zer4lau\",\r\n    \"zer4le.\",\r\n    \"4zerleb\",\r\n    \"zer4len\",\r\n    \"2zerlö\",\r\n    \"3z2ern\",\r\n    \"zer4nan\",\r\n    \"zer4n3e4b\",\r\n    \"zer4nei\",\r\n    \"2z1erö\",\r\n    \"zer2öf\",\r\n    \"2z1erq\",\r\n    \"4z3erreg\",\r\n    \"zers2\",\r\n    \"z2ers.\",\r\n    \"2z1er4sa\",\r\n    \"zerta2\",\r\n    \"zer4t3ag\",\r\n    \"zert4an\",\r\n    \"zer6teng\",\r\n    \"zer6tere\",\r\n    \"zer6terl\",\r\n    \"zer4tin\",\r\n    \"zer2to\",\r\n    \"6z5ertrag\",\r\n    \"zer6trau\",\r\n    \"z1erwe\",\r\n    \"4zerwei\",\r\n    \"z1erz\",\r\n    \"zer2ze\",\r\n    \"3z2es.\",\r\n    \"ze2sä\",\r\n    \"ze3sch\",\r\n    \"zes1e\",\r\n    \"ze2sp\",\r\n    \"ze4spo\",\r\n    \"zes2sa\",\r\n    \"zessen4\",\r\n    \"zes6s5end\",\r\n    \"zes6sent\",\r\n    \"zes4ser4\",\r\n    \"zes2sp\",\r\n    \"zes2st\",\r\n    \"ze1sta\",\r\n    \"ze3stau\",\r\n    \"ze1str\",\r\n    \"z2et.\",\r\n    \"2zeta\",\r\n    \"2ze2th\",\r\n    \"ze2tr\",\r\n    \"2zetts\",\r\n    \"zeu4gem\",\r\n    \"zeu2g3r\",\r\n    \"2z1eul\",\r\n    \"ze1ur\",\r\n    \"2z1e2x1\",\r\n    \"4z3f4\",\r\n    \"zfeue2\",\r\n    \"2z3g4\",\r\n    \"zger2a\",\r\n    \"zger4s3\",\r\n    \"2z1h2\",\r\n    \"z2hen\",\r\n    \"zhir3\",\r\n    \"zi3alo\",\r\n    \"zi2ar\",\r\n    \"zich2o\",\r\n    \"zi2dei\",\r\n    \"zie4ler\",\r\n    \"zie2l1i\",\r\n    \"zien3s\",\r\n    \"zi1erh\",\r\n    \"zi1es\",\r\n    \"zi3ess\",\r\n    \"zig4s\",\r\n    \"z2il\",\r\n    \"zil2e\",\r\n    \"2zimp\",\r\n    \"zim4t3\",\r\n    \"2z1ind\",\r\n    \"zin2e\",\r\n    \"zin3ei\",\r\n    \"2z1inf\",\r\n    \"z1inh\",\r\n    \"zi4n3in\",\r\n    \"zin1it\",\r\n    \"2z1inj\",\r\n    \"zin4na\",\r\n    \"zin4o\",\r\n    \"zin2sa\",\r\n    \"zin4ser\",\r\n    \"4zinsuf\",\r\n    \"2zint\",\r\n    \"zi2o3\",\r\n    \"zirk2\",\r\n    \"zirk6s\",\r\n    \"z1iso\",\r\n    \"zi2sp\",\r\n    \"zisse4\",\r\n    \"zi3s2z\",\r\n    \"zi1th\",\r\n    \"zithe2\",\r\n    \"zi4t1o2\",\r\n    \"zit2u\",\r\n    \"ziv2\",\r\n    \"2z1j\",\r\n    \"4z1k4\",\r\n    \"2z1l2\",\r\n    \"zlei3ti\",\r\n    \"zle1s\",\r\n    \"z3ly\",\r\n    \"2z3m2\",\r\n    \"zme2e\",\r\n    \"2z3n2\",\r\n    \"z3oas\",\r\n    \"2z1ob\",\r\n    \"2z1of\",\r\n    \"zo2gl\",\r\n    \"zog4s3\",\r\n    \"2z1oh\",\r\n    \"zol2la\",\r\n    \"zoller4\",\r\n    \"zol6lerl\",\r\n    \"zol6lert\",\r\n    \"zonal2\",\r\n    \"zon3au\",\r\n    \"zon5s4\",\r\n    \"zon4t3er\",\r\n    \"zo2o\",\r\n    \"2zope\",\r\n    \"2z1o2r\",\r\n    \"zo3re\",\r\n    \"3z2orn\",\r\n    \"zor4ne\",\r\n    \"2z1osz\",\r\n    \"2z1ou\",\r\n    \"2z1o2z\",\r\n    \"2zö2f\",\r\n    \"2z1ök\",\r\n    \"z1öl\",\r\n    \"2zöl.\",\r\n    \"3z2öll\",\r\n    \"2zöls\",\r\n    \"2zön\",\r\n    \"4z3p4\",\r\n    \"2z1q\",\r\n    \"4z3r2\",\r\n    \"2z1s4\",\r\n    \"z3sa\",\r\n    \"zsau2\",\r\n    \"z3sh\",\r\n    \"z3sk\",\r\n    \"zspor2\",\r\n    \"4zst2\",\r\n    \"z3sz\",\r\n    \"2z1t\",\r\n    \"zta2n\",\r\n    \"zt3ane\",\r\n    \"z2t1au\",\r\n    \"z4tehe\",\r\n    \"ztein1\",\r\n    \"zt3eins\",\r\n    \"zt2el\",\r\n    \"zte3ma\",\r\n    \"z4t1ent\",\r\n    \"z4t1erz\",\r\n    \"zte3str\",\r\n    \"zt2et\",\r\n    \"zt1he\",\r\n    \"z3them\",\r\n    \"z3t2her\",\r\n    \"zt1hi\",\r\n    \"zt3ho\",\r\n    \"z3thr\",\r\n    \"z3thy\",\r\n    \"z3ti\",\r\n    \"zt3rec\",\r\n    \"zt3ric\",\r\n    \"zt3s2\",\r\n    \"z3tü\",\r\n    \"zu1\",\r\n    \"zu3a\",\r\n    \"zub4\",\r\n    \"3zuc\",\r\n    \"zuch2e\",\r\n    \"zucht3r\",\r\n    \"zud4\",\r\n    \"zudi4\",\r\n    \"zu2el\",\r\n    \"zu3e2r1\",\r\n    \"zue2t\",\r\n    \"zu3f4\",\r\n    \"zug2em\",\r\n    \"zu4gent\",\r\n    \"zug2i\",\r\n    \"zu3gl\",\r\n    \"zu4gla\",\r\n    \"zu4glö\",\r\n    \"zu2go\",\r\n    \"2z1uhr\",\r\n    \"zu3hu\",\r\n    \"zui2\",\r\n    \"zu3k\",\r\n    \"zul2\",\r\n    \"2z1um.\",\r\n    \"zum2a\",\r\n    \"2z1umb\",\r\n    \"zumen2\",\r\n    \"2zumf\",\r\n    \"2zumg\",\r\n    \"zum2i\",\r\n    \"2zumk\",\r\n    \"2zuml\",\r\n    \"2zumr\",\r\n    \"2z1ums\",\r\n    \"zum2u\",\r\n    \"2zunab\",\r\n    \"zun2e\",\r\n    \"2z1unem\",\r\n    \"zunf4\",\r\n    \"zung4\",\r\n    \"4zunget\",\r\n    \"2zungl\",\r\n    \"z1uni\",\r\n    \"2zu2nio\",\r\n    \"2zuniv\",\r\n    \"2zunr\",\r\n    \"2z1uns\",\r\n    \"2zunt\",\r\n    \"zuo2\",\r\n    \"zup2fi\",\r\n    \"zu3pl\",\r\n    \"zu3r2a\",\r\n    \"2z1urk\",\r\n    \"2z1url\",\r\n    \"2z1urn\",\r\n    \"2z1urs\",\r\n    \"2z1urt\",\r\n    \"zu3s4\",\r\n    \"zusch4\",\r\n    \"zu5t2\",\r\n    \"zut4r\",\r\n    \"zut4u\",\r\n    \"zut3z\",\r\n    \"zuz2\",\r\n    \"2zü4b\",\r\n    \"3züc\",\r\n    \"zür1c\",\r\n    \"2z1v\",\r\n    \"zw2\",\r\n    \"z1wac\",\r\n    \"2zwag\",\r\n    \"4zwah\",\r\n    \"4zwap\",\r\n    \"z1war\",\r\n    \"2zwa2s\",\r\n    \"2zwäs\",\r\n    \"2z1wed\",\r\n    \"2zweg\",\r\n    \"2zweh\",\r\n    \"z2weig\",\r\n    \"2zweil\",\r\n    \"zweiter6\",\r\n    \"2z1wel\",\r\n    \"2z1wen\",\r\n    \"2z1wer\",\r\n    \"2z1wes\",\r\n    \"z2wic\",\r\n    \"zwi4e\",\r\n    \"3zwing\",\r\n    \"2zwirt\",\r\n    \"z2wisc\",\r\n    \"2zwiss\",\r\n    \"z2wit\",\r\n    \"2z1wo\",\r\n    \"z1wör\",\r\n    \"z1wur\",\r\n    \"2z1wü\",\r\n    \"zy1an.\",\r\n    \"zy2le\",\r\n    \"2z1z\",\r\n    \"z3z2a\",\r\n    \"zza3b4\",\r\n    \"z4z3al\",\r\n    \"zz4at\",\r\n    \"z2z1id\",\r\n    \"z2z1in1\",\r\n    \"zzi1s4\",\r\n    \"zz2ö\",\r\n    \"zzug4s\",\r\n    \"\"\r\n  ];\r\n\r\n  var endinput;\r\n\r\n  ////// Local Variables:\r\n  ////// mode: tex\r\n  ////// coding: utf-8\r\n  ////// End:\r\n\r\n  return {\r\n    patterns: patterns,\r\n    exceptions: hyphenation\r\n  };\r\n});\r\n","/*!\n * in-view 0.6.1 - Get notified when a DOM element enters or exits the viewport.\n * Copyright (c) 2016 Cam Wiegert <cam@camwiegert.com> - https://camwiegert.github.io/in-view\n * License: MIT\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.inView=e():t.inView=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}var i=n(2),o=r(i);t.exports=o[\"default\"]},function(t,e){function n(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}t.exports=n},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(9),o=r(i),u=n(3),f=r(u),s=n(4),c=function(){if(\"undefined\"!=typeof window){var t=100,e=[\"scroll\",\"resize\",\"load\"],n={history:[]},r={offset:{},threshold:0,test:s.inViewport},i=(0,o[\"default\"])(function(){n.history.forEach(function(t){n[t].check()})},t);e.forEach(function(t){return addEventListener(t,i)}),window.MutationObserver&&addEventListener(\"DOMContentLoaded\",function(){new MutationObserver(i).observe(document.body,{attributes:!0,childList:!0,subtree:!0})});var u=function(t){if(\"string\"==typeof t){var e=[].slice.call(document.querySelectorAll(t));return n.history.indexOf(t)>-1?n[t].elements=e:(n[t]=(0,f[\"default\"])(e,r),n.history.push(t)),n[t]}};return u.offset=function(t){if(void 0===t)return r.offset;var e=function(t){return\"number\"==typeof t};return[\"top\",\"right\",\"bottom\",\"left\"].forEach(e(t)?function(e){return r.offset[e]=t}:function(n){return e(t[n])?r.offset[n]=t[n]:null}),r.offset},u.threshold=function(t){return\"number\"==typeof t&&t>=0&&t<=1?r.threshold=t:r.threshold},u.test=function(t){return\"function\"==typeof t?r.test=t:r.test},u.is=function(t){return r.test(t,r)},u.offset(0),u}};e[\"default\"]=c()},function(t,e){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e,r){n(this,t),this.options=r,this.elements=e,this.current=[],this.handlers={enter:[],exit:[]},this.singles={enter:[],exit:[]}}return r(t,[{key:\"check\",value:function(){var t=this;return this.elements.forEach(function(e){var n=t.options.test(e,t.options),r=t.current.indexOf(e),i=r>-1,o=n&&!i,u=!n&&i;o&&(t.current.push(e),t.emit(\"enter\",e)),u&&(t.current.splice(r,1),t.emit(\"exit\",e))}),this}},{key:\"on\",value:function(t,e){return this.handlers[t].push(e),this}},{key:\"once\",value:function(t,e){return this.singles[t].unshift(e),this}},{key:\"emit\",value:function(t,e){for(;this.singles[t].length;)this.singles[t].pop()(e);for(var n=this.handlers[t].length;--n>-1;)this.handlers[t][n](e);return this}}]),t}();e[\"default\"]=function(t,e){return new i(t,e)}},function(t,e){\"use strict\";function n(t,e){var n=t.getBoundingClientRect(),r=n.top,i=n.right,o=n.bottom,u=n.left,f=n.width,s=n.height,c={t:o,r:window.innerWidth-u,b:window.innerHeight-r,l:i},a={x:e.threshold*f,y:e.threshold*s};return c.t>e.offset.top+a.y&&c.r>e.offset.right+a.x&&c.b>e.offset.bottom+a.y&&c.l>e.offset.left+a.x}Object.defineProperty(e,\"__esModule\",{value:!0}),e.inViewport=n},function(t,e){(function(e){var n=\"object\"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(e,function(){return this}())},function(t,e,n){var r=n(5),i=\"object\"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function(\"return this\")();t.exports=o},function(t,e,n){function r(t,e,n){function r(e){var n=x,r=m;return x=m=void 0,E=e,w=t.apply(r,n)}function a(t){return E=t,j=setTimeout(h,e),M?r(t):w}function l(t){var n=t-O,r=t-E,i=e-n;return _?c(i,g-r):i}function d(t){var n=t-O,r=t-E;return void 0===O||n>=e||n<0||_&&r>=g}function h(){var t=o();return d(t)?p(t):void(j=setTimeout(h,l(t)))}function p(t){return j=void 0,T&&x?r(t):(x=m=void 0,w)}function v(){void 0!==j&&clearTimeout(j),E=0,x=O=m=j=void 0}function y(){return void 0===j?w:p(o())}function b(){var t=o(),n=d(t);if(x=arguments,m=this,O=t,n){if(void 0===j)return a(O);if(_)return j=setTimeout(h,e),r(O)}return void 0===j&&(j=setTimeout(h,e)),w}var x,m,g,w,j,O,E=0,M=!1,_=!1,T=!0;if(\"function\"!=typeof t)throw new TypeError(f);return e=u(e)||0,i(n)&&(M=!!n.leading,_=\"maxWait\"in n,g=_?s(u(n.maxWait)||0,e):g,T=\"trailing\"in n?!!n.trailing:T),b.cancel=v,b.flush=y,b}var i=n(1),o=n(8),u=n(10),f=\"Expected a function\",s=Math.max,c=Math.min;t.exports=r},function(t,e,n){var r=n(6),i=function(){return r.Date.now()};t.exports=i},function(t,e,n){function r(t,e,n){var r=!0,f=!0;if(\"function\"!=typeof t)throw new TypeError(u);return o(n)&&(r=\"leading\"in n?!!n.leading:r,f=\"trailing\"in n?!!n.trailing:f),i(t,e,{leading:r,maxWait:e,trailing:f})}var i=n(7),o=n(1),u=\"Expected a function\";t.exports=r},function(t,e){function n(t){return t}t.exports=n}])});","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/*! lozad.js - v1.16.0 - 2020-09-06\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){\"use strict\";\n/**\n   * Detect IE browser\n   * @const {boolean}\n   * @private\n   */var g=\"undefined\"!=typeof document&&document.documentMode,f={rootMargin:\"0px\",threshold:0,load:function(t){if(\"picture\"===t.nodeName.toLowerCase()){var e=t.querySelector(\"img\"),r=!1;null===e&&(e=document.createElement(\"img\"),r=!0),g&&t.getAttribute(\"data-iesrc\")&&(e.src=t.getAttribute(\"data-iesrc\")),t.getAttribute(\"data-alt\")&&(e.alt=t.getAttribute(\"data-alt\")),r&&t.append(e)}if(\"video\"===t.nodeName.toLowerCase()&&!t.getAttribute(\"data-src\")&&t.children){for(var a=t.children,o=void 0,i=0;i<=a.length-1;i++)(o=a[i].getAttribute(\"data-src\"))&&(a[i].src=o);t.load()}t.getAttribute(\"data-poster\")&&(t.poster=t.getAttribute(\"data-poster\")),t.getAttribute(\"data-src\")&&(t.src=t.getAttribute(\"data-src\")),t.getAttribute(\"data-srcset\")&&t.setAttribute(\"srcset\",t.getAttribute(\"data-srcset\"));var n=\",\";if(t.getAttribute(\"data-background-delimiter\")&&(n=t.getAttribute(\"data-background-delimiter\")),t.getAttribute(\"data-background-image\"))t.style.backgroundImage=\"url('\"+t.getAttribute(\"data-background-image\").split(n).join(\"'),url('\")+\"')\";else if(t.getAttribute(\"data-background-image-set\")){var d=t.getAttribute(\"data-background-image-set\").split(n),u=d[0].substr(0,d[0].indexOf(\" \"))||d[0];// Substring before ... 1x\nu=-1===u.indexOf(\"url(\")?\"url(\"+u+\")\":u,1===d.length?t.style.backgroundImage=u:t.setAttribute(\"style\",(t.getAttribute(\"style\")||\"\")+\"background-image: \"+u+\"; background-image: -webkit-image-set(\"+d+\"); background-image: image-set(\"+d+\")\")}t.getAttribute(\"data-toggle-class\")&&t.classList.toggle(t.getAttribute(\"data-toggle-class\"))},loaded:function(){}};function A(t){t.setAttribute(\"data-loaded\",!0)}var m=function(t){return\"true\"===t.getAttribute(\"data-loaded\")},v=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:document;return t instanceof Element?[t]:t instanceof NodeList?t:e.querySelectorAll(t)};return function(){var r,a,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:\".lozad\",t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=Object.assign({},f,t),i=e.root,n=e.rootMargin,d=e.threshold,u=e.load,g=e.loaded,s=void 0;\"undefined\"!=typeof window&&window.IntersectionObserver&&(s=new IntersectionObserver((r=u,a=g,function(t,e){t.forEach(function(t){(0<t.intersectionRatio||t.isIntersecting)&&(e.unobserve(t.target),m(t.target)||(r(t.target),A(t.target),a(t.target)))})}),{root:i,rootMargin:n,threshold:d}));for(var c,l=v(o,i),b=0;b<l.length;b++)(c=l[b]).getAttribute(\"data-placeholder-background\")&&(c.style.background=c.getAttribute(\"data-placeholder-background\"));return{observe:function(){for(var t=v(o,i),e=0;e<t.length;e++)m(t[e])||(s?s.observe(t[e]):(u(t[e]),A(t[e]),g(t[e])))},triggerLoad:function(t){m(t)||(u(t),A(t),g(t))},observer:s}}});\n","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays:\n            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n                '_'\n            ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone:\n                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone:\n                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                    '_'\n                ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bnBd = moment.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n                '_'\n            ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays:\n            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n                '_'\n            ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex =\n            /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone:\n                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                    '_'\n                ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n                '_'\n            ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = {\n            format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n                '_'\n            ),\n            standalone:\n                'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n                    '_'\n                ),\n        },\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex =\n            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex:\n            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex:\n            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays:\n            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n                '_'\n            ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                    ? 'тан'\n                    : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays:\n            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl:\n            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n                '_'\n            ),\n        monthsGenitiveEl:\n            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n                '_'\n            ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays:\n            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n                '_'\n            ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort:\n            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n                '_'\n            ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n                '_'\n            ),\n        weekdays:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast =\n            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n                ' '\n            ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort:\n            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n                '_'\n            ),\n        weekdays:\n            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n                '_'\n            ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex =\n            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort:\n            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone:\n                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                    '_'\n                ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone:\n                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                    '_'\n                ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort:\n            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort:\n            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse:\n            /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    var hi = moment.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone:\n                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex:\n            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex:\n            /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone:\n                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt  : https://github.com/passatgt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings =\n        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone:\n                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays:\n            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n                '_'\n            ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone:\n                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                    '_'\n                ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(\n                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n                    function ($0, $1, $2) {\n                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                    }\n                );\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort:\n            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n                '_'\n            ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort:\n            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays:\n            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n                '_'\n            ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n            ? forms(key)[1]\n            : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone:\n                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                    '_'\n                ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone:\n                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                    '_'\n                ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays:\n            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort:\n            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n                '_'\n            ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n                '_'\n            ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort:\n            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays:\n            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n                '_'\n            ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dager',\n            w: 'en uke',\n            ww: '%d uker',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex =\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex =\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone:\n                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                    '_'\n                ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n                '_'\n            ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative =\n            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n                '_'\n            ),\n        monthsSubjective =\n            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n                '_'\n            ),\n        monthsParse = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays:\n            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate,\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort:\n            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone:\n                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                    '_'\n                ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone:\n                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                    '_'\n                ),\n        },\n        weekdays: {\n            standalone:\n                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                    '_'\n                ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex:\n            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex:\n            /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            w: 'неделя',\n            ww: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort:\n            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays:\n            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n                '_'\n            ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays:\n            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n                '_'\n            ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months =\n            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n                '_'\n            ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једног минута'],\n            mm: ['минут', 'минута', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            d: ['један дан', 'једног дана'],\n            dd: ['дан', 'дана', 'дана'],\n            M: ['један месец', 'једног месеца'],\n            MM: ['месец', 'месеца', 'месеци'],\n            y: ['једну годину', 'једне године'],\n            yy: ['годину', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'једна година';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'годину') {\n                return number + ' година';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort:\n            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: translator.translate,\n            dd: translator.translate,\n            M: translator.translate,\n            MM: translator.translate,\n            y: translator.translate,\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            d: ['jedan dan', 'jednog dana'],\n            dd: ['dan', 'dana', 'dana'],\n            M: ['jedan mesec', 'jednog meseca'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            y: ['jednu godinu', 'jedne godine'],\n            yy: ['godinu', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'jedna godina';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'godinu') {\n                return number + ' godina';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: translator.translate,\n            dd: translator.translate,\n            M: translator.translate,\n            MM: translator.translate,\n            y: translator.translate,\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays:\n            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n                '_'\n            ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                        ? ':a'\n                        : b === 2\n                        ? ':a'\n                        : b === 3\n                        ? ':e'\n                        : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays:\n            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n                '_'\n            ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort:\n            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n                '_'\n            ),\n        weekdays:\n            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n                '_'\n            ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort:\n            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n                '_'\n            ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone:\n                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort:\n            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'waQ'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'nem'\n                : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'wen'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'ben'\n                : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort:\n            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n            ? format[key][0]\n            : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort:\n            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n                '_'\n            ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n                '_'\n            ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n                '_'\n            ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative:\n                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                        '_'\n                    ),\n                accusative:\n                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                        '_'\n                    ),\n                genitive:\n                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                        '_'\n                    ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n            ? 'genitive'\n            : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone:\n                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays:\n            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n                '_'\n            ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort:\n            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort:\n            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n                '_'\n            ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","module.exports = function eventify(subject) {\n  validateSubject(subject);\n\n  var eventsStorage = createEventsStorage(subject);\n  subject.on = eventsStorage.on;\n  subject.off = eventsStorage.off;\n  subject.fire = eventsStorage.fire;\n  return subject;\n};\n\nfunction createEventsStorage(subject) {\n  // Store all event listeners to this hash. Key is event name, value is array\n  // of callback records.\n  //\n  // A callback record consists of callback function and its optional context:\n  // { 'eventName' => [{callback: function, ctx: object}] }\n  var registeredEvents = Object.create(null);\n\n  return {\n    on: function (eventName, callback, ctx) {\n      if (typeof callback !== 'function') {\n        throw new Error('callback is expected to be a function');\n      }\n      var handlers = registeredEvents[eventName];\n      if (!handlers) {\n        handlers = registeredEvents[eventName] = [];\n      }\n      handlers.push({callback: callback, ctx: ctx});\n\n      return subject;\n    },\n\n    off: function (eventName, callback) {\n      var wantToRemoveAll = (typeof eventName === 'undefined');\n      if (wantToRemoveAll) {\n        // Killing old events storage should be enough in this case:\n        registeredEvents = Object.create(null);\n        return subject;\n      }\n\n      if (registeredEvents[eventName]) {\n        var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n        if (deleteAllCallbacksForEvent) {\n          delete registeredEvents[eventName];\n        } else {\n          var callbacks = registeredEvents[eventName];\n          for (var i = 0; i < callbacks.length; ++i) {\n            if (callbacks[i].callback === callback) {\n              callbacks.splice(i, 1);\n            }\n          }\n        }\n      }\n\n      return subject;\n    },\n\n    fire: function (eventName) {\n      var callbacks = registeredEvents[eventName];\n      if (!callbacks) {\n        return subject;\n      }\n\n      var fireArguments;\n      if (arguments.length > 1) {\n        fireArguments = Array.prototype.splice.call(arguments, 1);\n      }\n      for(var i = 0; i < callbacks.length; ++i) {\n        var callbackInfo = callbacks[i];\n        callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n      }\n\n      return subject;\n    }\n  };\n}\n\nfunction validateSubject(subject) {\n  if (!subject) {\n    throw new Error('Eventify cannot use falsy object as events subject');\n  }\n  var reservedWords = ['on', 'fire', 'off'];\n  for (var i = 0; i < reservedWords.length; ++i) {\n    if (subject.hasOwnProperty(reservedWords[i])) {\n      throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n    }\n  }\n}\n","'use strict';\n/**\n * Allows to drag and zoom svg elements\n */\nvar wheel = require('wheel');\nvar animate = require('amator');\nvar eventify = require('ngraph.events');\nvar kinetic = require('./lib/kinetic.js');\nvar createTextSelectionInterceptor = require('./lib/createTextSelectionInterceptor.js');\nvar domTextSelectionInterceptor = createTextSelectionInterceptor();\nvar fakeTextSelectorInterceptor = createTextSelectionInterceptor(true);\nvar Transform = require('./lib/transform.js');\nvar makeSvgController = require('./lib/svgController.js');\nvar makeDomController = require('./lib/domController.js');\n\nvar defaultZoomSpeed = 1;\nvar defaultDoubleTapZoomSpeed = 1.75;\nvar doubleTapSpeedInMS = 300;\nvar clickEventTimeInMS = 200;\n\nmodule.exports = createPanZoom;\n\n/**\n * Creates a new instance of panzoom, so that an object can be panned and zoomed\n *\n * @param {DOMElement} domElement where panzoom should be attached.\n * @param {Object} options that configure behavior.\n */\nfunction createPanZoom(domElement, options) {\n  options = options || {};\n\n  var panController = options.controller;\n\n  if (!panController) {\n    if (makeSvgController.canAttach(domElement)) {\n      panController = makeSvgController(domElement, options);\n    } else if (makeDomController.canAttach(domElement)) {\n      panController = makeDomController(domElement, options);\n    }\n  }\n\n  if (!panController) {\n    throw new Error(\n      'Cannot create panzoom for the current type of dom element'\n    );\n  }\n  var owner = panController.getOwner();\n  // just to avoid GC pressure, every time we do intermediate transform\n  // we return this object. For internal use only. Never give it back to the consumer of this library\n  var storedCTMResult = { x: 0, y: 0 };\n\n  var isDirty = false;\n  var transform = new Transform();\n\n  if (panController.initTransform) {\n    panController.initTransform(transform);\n  }\n\n  var filterKey = typeof options.filterKey === 'function' ? options.filterKey : noop;\n  // TODO: likely need to unite pinchSpeed with zoomSpeed\n  var pinchSpeed = typeof options.pinchSpeed === 'number' ? options.pinchSpeed : 1;\n  var bounds = options.bounds;\n  var maxZoom = typeof options.maxZoom === 'number' ? options.maxZoom : Number.POSITIVE_INFINITY;\n  var minZoom = typeof options.minZoom === 'number' ? options.minZoom : 0;\n\n  var boundsPadding = typeof options.boundsPadding === 'number' ? options.boundsPadding : 0.05;\n  var zoomDoubleClickSpeed = typeof options.zoomDoubleClickSpeed === 'number' ? options.zoomDoubleClickSpeed : defaultDoubleTapZoomSpeed;\n  var beforeWheel = options.beforeWheel || noop;\n  var beforeMouseDown = options.beforeMouseDown || noop;\n  var speed = typeof options.zoomSpeed === 'number' ? options.zoomSpeed : defaultZoomSpeed;\n  var transformOrigin = parseTransformOrigin(options.transformOrigin);\n  var textSelection = options.enableTextSelection ? fakeTextSelectorInterceptor : domTextSelectionInterceptor;\n\n  validateBounds(bounds);\n\n  if (options.autocenter) {\n    autocenter();\n  }\n\n  var frameAnimation;\n  var lastTouchEndTime = 0;\n  var lastTouchStartTime = 0;\n  var pendingClickEventTimeout = 0;\n  var lastMouseDownedEvent = null;\n  var lastMouseDownTime = new Date();\n  var lastSingleFingerOffset;\n  var touchInProgress = false;\n\n  // We only need to fire panstart when actual move happens\n  var panstartFired = false;\n\n  // cache mouse coordinates here\n  var mouseX;\n  var mouseY;\n\n  // Where the first click has happened, so that we can differentiate\n  // between pan and click\n  var clickX;\n  var clickY;\n\n  var pinchZoomLength;\n\n  var smoothScroll;\n  if ('smoothScroll' in options && !options.smoothScroll) {\n    // If user explicitly asked us not to use smooth scrolling, we obey\n    smoothScroll = rigidScroll();\n  } else {\n    // otherwise we use forward smoothScroll settings to kinetic API\n    // which makes scroll smoothing.\n    smoothScroll = kinetic(getPoint, scroll, options.smoothScroll);\n  }\n\n  var moveByAnimation;\n  var zoomToAnimation;\n\n  var multiTouch;\n  var paused = false;\n\n  listenForEvents();\n\n  var api = {\n    dispose: dispose,\n    moveBy: internalMoveBy,\n    moveTo: moveTo,\n    smoothMoveTo: smoothMoveTo, \n    centerOn: centerOn,\n    zoomTo: publicZoomTo,\n    zoomAbs: zoomAbs,\n    smoothZoom: smoothZoom,\n    smoothZoomAbs: smoothZoomAbs,\n    showRectangle: showRectangle,\n\n    pause: pause,\n    resume: resume,\n    isPaused: isPaused,\n\n    getTransform: getTransformModel,\n\n    getMinZoom: getMinZoom,\n    setMinZoom: setMinZoom,\n\n    getMaxZoom: getMaxZoom,\n    setMaxZoom: setMaxZoom,\n\n    getTransformOrigin: getTransformOrigin,\n    setTransformOrigin: setTransformOrigin,\n\n    getZoomSpeed: getZoomSpeed,\n    setZoomSpeed: setZoomSpeed\n  };\n\n  eventify(api);\n  \n  var initialX = typeof options.initialX === 'number' ? options.initialX : transform.x;\n  var initialY = typeof options.initialY === 'number' ? options.initialY : transform.y;\n  var initialZoom = typeof options.initialZoom === 'number' ? options.initialZoom : transform.scale;\n\n  if(initialX != transform.x || initialY != transform.y || initialZoom != transform.scale){\n    zoomAbs(initialX, initialY, initialZoom);\n  }\n\n  return api;\n\n  function pause() {\n    releaseEvents();\n    paused = true;\n  }\n\n  function resume() {\n    if (paused) {\n      listenForEvents();\n      paused = false;\n    }\n  }\n\n  function isPaused() {\n    return paused;\n  }\n\n  function showRectangle(rect) {\n    // TODO: this duplicates autocenter. I think autocenter should go.\n    var clientRect = owner.getBoundingClientRect();\n    var size = transformToScreen(clientRect.width, clientRect.height);\n\n    var rectWidth = rect.right - rect.left;\n    var rectHeight = rect.bottom - rect.top;\n    if (!Number.isFinite(rectWidth) || !Number.isFinite(rectHeight)) {\n      throw new Error('Invalid rectangle');\n    }\n\n    var dw = size.x / rectWidth;\n    var dh = size.y / rectHeight;\n    var scale = Math.min(dw, dh);\n    transform.x = -(rect.left + rectWidth / 2) * scale + size.x / 2;\n    transform.y = -(rect.top + rectHeight / 2) * scale + size.y / 2;\n    transform.scale = scale;\n  }\n\n  function transformToScreen(x, y) {\n    if (panController.getScreenCTM) {\n      var parentCTM = panController.getScreenCTM();\n      var parentScaleX = parentCTM.a;\n      var parentScaleY = parentCTM.d;\n      var parentOffsetX = parentCTM.e;\n      var parentOffsetY = parentCTM.f;\n      storedCTMResult.x = x * parentScaleX - parentOffsetX;\n      storedCTMResult.y = y * parentScaleY - parentOffsetY;\n    } else {\n      storedCTMResult.x = x;\n      storedCTMResult.y = y;\n    }\n\n    return storedCTMResult;\n  }\n\n  function autocenter() {\n    var w; // width of the parent\n    var h; // height of the parent\n    var left = 0;\n    var top = 0;\n    var sceneBoundingBox = getBoundingBox();\n    if (sceneBoundingBox) {\n      // If we have bounding box - use it.\n      left = sceneBoundingBox.left;\n      top = sceneBoundingBox.top;\n      w = sceneBoundingBox.right - sceneBoundingBox.left;\n      h = sceneBoundingBox.bottom - sceneBoundingBox.top;\n    } else {\n      // otherwise just use whatever space we have\n      var ownerRect = owner.getBoundingClientRect();\n      w = ownerRect.width;\n      h = ownerRect.height;\n    }\n    var bbox = panController.getBBox();\n    if (bbox.width === 0 || bbox.height === 0) {\n      // we probably do not have any elements in the SVG\n      // just bail out;\n      return;\n    }\n    var dh = h / bbox.height;\n    var dw = w / bbox.width;\n    var scale = Math.min(dw, dh);\n    transform.x = -(bbox.left + bbox.width / 2) * scale + w / 2 + left;\n    transform.y = -(bbox.top + bbox.height / 2) * scale + h / 2 + top;\n    transform.scale = scale;\n  }\n\n  function getTransformModel() {\n    // TODO: should this be read only?\n    return transform;\n  }\n\n  function getMinZoom() {\n    return minZoom;\n  }\n\n  function setMinZoom(newMinZoom) {\n    minZoom = newMinZoom;\n  }\n\n  function getMaxZoom() {\n    return maxZoom;\n  }\n\n  function setMaxZoom(newMaxZoom) {\n    maxZoom = newMaxZoom;\n  }\n\n  function getTransformOrigin() {\n    return transformOrigin;\n  }\n\n  function setTransformOrigin(newTransformOrigin) {\n    transformOrigin = parseTransformOrigin(newTransformOrigin);\n  }\n\n  function getZoomSpeed() {\n    return speed;\n  }\n\n  function setZoomSpeed(newSpeed) {\n    if (!Number.isFinite(newSpeed)) {\n      throw new Error('Zoom speed should be a number');\n    }\n    speed = newSpeed;\n  }\n\n  function getPoint() {\n    return {\n      x: transform.x,\n      y: transform.y\n    };\n  }\n\n  function moveTo(x, y) {\n    transform.x = x;\n    transform.y = y;\n\n    keepTransformInsideBounds();\n\n    triggerEvent('pan');\n    makeDirty();\n  }\n\n  function moveBy(dx, dy) {\n    moveTo(transform.x + dx, transform.y + dy);\n  }\n\n  function keepTransformInsideBounds() {\n    var boundingBox = getBoundingBox();\n    if (!boundingBox) return;\n\n    var adjusted = false;\n    var clientRect = getClientRect();\n\n    var diff = boundingBox.left - clientRect.right;\n    if (diff > 0) {\n      transform.x += diff;\n      adjusted = true;\n    }\n    // check the other side:\n    diff = boundingBox.right - clientRect.left;\n    if (diff < 0) {\n      transform.x += diff;\n      adjusted = true;\n    }\n\n    // y axis:\n    diff = boundingBox.top - clientRect.bottom;\n    if (diff > 0) {\n      // we adjust transform, so that it matches exactly our bounding box:\n      // transform.y = boundingBox.top - (boundingBox.height + boundingBox.y) * transform.scale =>\n      // transform.y = boundingBox.top - (clientRect.bottom - transform.y) =>\n      // transform.y = diff + transform.y =>\n      transform.y += diff;\n      adjusted = true;\n    }\n\n    diff = boundingBox.bottom - clientRect.top;\n    if (diff < 0) {\n      transform.y += diff;\n      adjusted = true;\n    }\n    return adjusted;\n  }\n\n  /**\n   * Returns bounding box that should be used to restrict scene movement.\n   */\n  function getBoundingBox() {\n    if (!bounds) return; // client does not want to restrict movement\n\n    if (typeof bounds === 'boolean') {\n      // for boolean type we use parent container bounds\n      var ownerRect = owner.getBoundingClientRect();\n      var sceneWidth = ownerRect.width;\n      var sceneHeight = ownerRect.height;\n\n      return {\n        left: sceneWidth * boundsPadding,\n        top: sceneHeight * boundsPadding,\n        right: sceneWidth * (1 - boundsPadding),\n        bottom: sceneHeight * (1 - boundsPadding)\n      };\n    }\n\n    return bounds;\n  }\n\n  function getClientRect() {\n    var bbox = panController.getBBox();\n    var leftTop = client(bbox.left, bbox.top);\n\n    return {\n      left: leftTop.x,\n      top: leftTop.y,\n      right: bbox.width * transform.scale + leftTop.x,\n      bottom: bbox.height * transform.scale + leftTop.y\n    };\n  }\n\n  function client(x, y) {\n    return {\n      x: x * transform.scale + transform.x,\n      y: y * transform.scale + transform.y\n    };\n  }\n\n  function makeDirty() {\n    isDirty = true;\n    frameAnimation = window.requestAnimationFrame(frame);\n  }\n\n  function zoomByRatio(clientX, clientY, ratio) {\n    if (isNaN(clientX) || isNaN(clientY) || isNaN(ratio)) {\n      throw new Error('zoom requires valid numbers');\n    }\n\n    var newScale = transform.scale * ratio;\n\n    if (newScale < minZoom) {\n      if (transform.scale === minZoom) return;\n\n      ratio = minZoom / transform.scale;\n    }\n    if (newScale > maxZoom) {\n      if (transform.scale === maxZoom) return;\n\n      ratio = maxZoom / transform.scale;\n    }\n\n    var size = transformToScreen(clientX, clientY);\n\n    transform.x = size.x - ratio * (size.x - transform.x);\n    transform.y = size.y - ratio * (size.y - transform.y);\n\n    // TODO: https://github.com/anvaka/panzoom/issues/112\n    if (bounds && boundsPadding === 1 && minZoom === 1) {\n      transform.scale *= ratio;\n      keepTransformInsideBounds();\n    } else {\n      var transformAdjusted = keepTransformInsideBounds();\n      if (!transformAdjusted) transform.scale *= ratio;\n    }\n\n    triggerEvent('zoom');\n\n    makeDirty();\n  }\n\n  function zoomAbs(clientX, clientY, zoomLevel) {\n    var ratio = zoomLevel / transform.scale;\n    zoomByRatio(clientX, clientY, ratio);\n  }\n\n  function centerOn(ui) {\n    var parent = ui.ownerSVGElement;\n    if (!parent)\n      throw new Error('ui element is required to be within the scene');\n\n    // TODO: should i use controller's screen CTM?\n    var clientRect = ui.getBoundingClientRect();\n    var cx = clientRect.left + clientRect.width / 2;\n    var cy = clientRect.top + clientRect.height / 2;\n\n    var container = parent.getBoundingClientRect();\n    var dx = container.width / 2 - cx;\n    var dy = container.height / 2 - cy;\n\n    internalMoveBy(dx, dy, true);\n  }\n\n  function smoothMoveTo(x, y){\n    internalMoveBy(x - transform.x, y - transform.y, true);\n  }\n\n  function internalMoveBy(dx, dy, smooth) {\n    if (!smooth) {\n      return moveBy(dx, dy);\n    }\n\n    if (moveByAnimation) moveByAnimation.cancel();\n\n    var from = { x: 0, y: 0 };\n    var to = { x: dx, y: dy };\n    var lastX = 0;\n    var lastY = 0;\n\n    moveByAnimation = animate(from, to, {\n      step: function (v) {\n        moveBy(v.x - lastX, v.y - lastY);\n\n        lastX = v.x;\n        lastY = v.y;\n      }\n    });\n  }\n\n  function scroll(x, y) {\n    cancelZoomAnimation();\n    moveTo(x, y);\n  }\n\n  function dispose() {\n    releaseEvents();\n  }\n\n  function listenForEvents() {\n    owner.addEventListener('mousedown', onMouseDown, { passive: false });\n    owner.addEventListener('dblclick', onDoubleClick, { passive: false });\n    owner.addEventListener('touchstart', onTouch, { passive: false });\n    owner.addEventListener('keydown', onKeyDown, { passive: false });\n\n    // Need to listen on the owner container, so that we are not limited\n    // by the size of the scrollable domElement\n    wheel.addWheelListener(owner, onMouseWheel, { passive: false });\n\n    makeDirty();\n  }\n\n  function releaseEvents() {\n    wheel.removeWheelListener(owner, onMouseWheel);\n    owner.removeEventListener('mousedown', onMouseDown);\n    owner.removeEventListener('keydown', onKeyDown);\n    owner.removeEventListener('dblclick', onDoubleClick);\n    owner.removeEventListener('touchstart', onTouch);\n\n    if (frameAnimation) {\n      window.cancelAnimationFrame(frameAnimation);\n      frameAnimation = 0;\n    }\n\n    smoothScroll.cancel();\n\n    releaseDocumentMouse();\n    releaseTouches();\n    textSelection.release();\n\n    triggerPanEnd();\n  }\n\n  function frame() {\n    if (isDirty) applyTransform();\n  }\n\n  function applyTransform() {\n    isDirty = false;\n\n    // TODO: Should I allow to cancel this?\n    panController.applyTransform(transform);\n\n    triggerEvent('transform');\n    frameAnimation = 0;\n  }\n\n  function onKeyDown(e) {\n    var x = 0,\n      y = 0,\n      z = 0;\n    if (e.keyCode === 38) {\n      y = 1; // up\n    } else if (e.keyCode === 40) {\n      y = -1; // down\n    } else if (e.keyCode === 37) {\n      x = 1; // left\n    } else if (e.keyCode === 39) {\n      x = -1; // right\n    } else if (e.keyCode === 189 || e.keyCode === 109) {\n      // DASH or SUBTRACT\n      z = 1; // `-` -  zoom out\n    } else if (e.keyCode === 187 || e.keyCode === 107) {\n      // EQUAL SIGN or ADD\n      z = -1; // `=` - zoom in (equal sign on US layout is under `+`)\n    }\n\n    if (filterKey(e, x, y, z)) {\n      // They don't want us to handle the key: https://github.com/anvaka/panzoom/issues/45\n      return;\n    }\n\n    if (x || y) {\n      e.preventDefault();\n      e.stopPropagation();\n\n      var clientRect = owner.getBoundingClientRect();\n      // movement speed should be the same in both X and Y direction:\n      var offset = Math.min(clientRect.width, clientRect.height);\n      var moveSpeedRatio = 0.05;\n      var dx = offset * moveSpeedRatio * x;\n      var dy = offset * moveSpeedRatio * y;\n\n      // TODO: currently we do not animate this. It could be better to have animation\n      internalMoveBy(dx, dy);\n    }\n\n    if (z) {\n      var scaleMultiplier = getScaleMultiplier(z * 100);\n      var offset = transformOrigin ? getTransformOriginOffset() : midPoint();\n      publicZoomTo(offset.x, offset.y, scaleMultiplier);\n    }\n  }\n\n  function midPoint() {\n    var ownerRect = owner.getBoundingClientRect();\n    return {\n      x: ownerRect.width / 2,\n      y: ownerRect.height / 2\n    };\n  }\n\n  function onTouch(e) {\n    // let them override the touch behavior\n    beforeTouch(e);\n    clearPendingClickEventTimeout();\n\n    if (e.touches.length === 1) {\n      return handleSingleFingerTouch(e, e.touches[0]);\n    } else if (e.touches.length === 2) {\n      // handleTouchMove() will care about pinch zoom.\n      pinchZoomLength = getPinchZoomLength(e.touches[0], e.touches[1]);\n      multiTouch = true;\n      startTouchListenerIfNeeded();\n    }\n  }\n\n  function beforeTouch(e) {\n    // TODO: Need to unify this filtering names. E.g. use `beforeTouch`\n    if (options.onTouch && !options.onTouch(e)) {\n      // if they return `false` from onTouch, we don't want to stop\n      // events propagation. Fixes https://github.com/anvaka/panzoom/issues/12\n      return;\n    }\n\n    e.stopPropagation();\n    e.preventDefault();\n  }\n\n  function beforeDoubleClick(e) {\n    clearPendingClickEventTimeout();\n\n    // TODO: Need to unify this filtering names. E.g. use `beforeDoubleClick``\n    if (options.onDoubleClick && !options.onDoubleClick(e)) {\n      // if they return `false` from onTouch, we don't want to stop\n      // events propagation. Fixes https://github.com/anvaka/panzoom/issues/46\n      return;\n    }\n\n    e.preventDefault();\n    e.stopPropagation();\n  }\n\n  function handleSingleFingerTouch(e) {\n    lastTouchStartTime = new Date();\n    var touch = e.touches[0];\n    var offset = getOffsetXY(touch);\n    lastSingleFingerOffset = offset;\n    var point = transformToScreen(offset.x, offset.y);\n    mouseX = point.x;\n    mouseY = point.y;\n    clickX = mouseX;\n    clickY = mouseY;\n\n    smoothScroll.cancel();\n    startTouchListenerIfNeeded();\n  }\n\n  function startTouchListenerIfNeeded() {\n    if (touchInProgress) {\n      // no need to do anything, as we already listen to events;\n      return;\n    }\n\n    touchInProgress = true;\n    document.addEventListener('touchmove', handleTouchMove);\n    document.addEventListener('touchend', handleTouchEnd);\n    document.addEventListener('touchcancel', handleTouchEnd);\n  }\n\n  function handleTouchMove(e) {\n    if (e.touches.length === 1) {\n      e.stopPropagation();\n      var touch = e.touches[0];\n\n      var offset = getOffsetXY(touch);\n      var point = transformToScreen(offset.x, offset.y);\n\n      var dx = point.x - mouseX;\n      var dy = point.y - mouseY;\n\n      if (dx !== 0 && dy !== 0) {\n        triggerPanStart();\n      }\n      mouseX = point.x;\n      mouseY = point.y;\n      internalMoveBy(dx, dy);\n    } else if (e.touches.length === 2) {\n      // it's a zoom, let's find direction\n      multiTouch = true;\n      var t1 = e.touches[0];\n      var t2 = e.touches[1];\n      var currentPinchLength = getPinchZoomLength(t1, t2);\n\n      // since the zoom speed is always based on distance from 1, we need to apply\n      // pinch speed only on that distance from 1:\n      var scaleMultiplier =\n        1 + (currentPinchLength / pinchZoomLength - 1) * pinchSpeed;\n\n      var firstTouchPoint = getOffsetXY(t1);\n      var secondTouchPoint = getOffsetXY(t2);\n      mouseX = (firstTouchPoint.x + secondTouchPoint.x) / 2;\n      mouseY = (firstTouchPoint.y + secondTouchPoint.y) / 2;\n      if (transformOrigin) {\n        var offset = getTransformOriginOffset();\n        mouseX = offset.x;\n        mouseY = offset.y;\n      }\n\n      publicZoomTo(mouseX, mouseY, scaleMultiplier);\n\n      pinchZoomLength = currentPinchLength;\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  function clearPendingClickEventTimeout() {\n    if (pendingClickEventTimeout) {\n      clearTimeout(pendingClickEventTimeout);\n      pendingClickEventTimeout = 0;\n    }\n  }\n\n  function handlePotentialClickEvent(e) {\n    // we could still be in the double tap mode, let's wait until double tap expires,\n    // and then notify:\n    if (!options.onClick) return;\n    clearPendingClickEventTimeout();\n    var dx = mouseX - clickX;\n    var dy = mouseY - clickY;\n    var l = Math.sqrt(dx * dx + dy * dy);\n    if (l > 5) return; // probably they are panning, ignore it\n\n    pendingClickEventTimeout = setTimeout(function() {\n      pendingClickEventTimeout = 0;\n      options.onClick(e);\n    }, doubleTapSpeedInMS);\n  }\n\n  function handleTouchEnd(e) {\n    clearPendingClickEventTimeout();\n    if (e.touches.length > 0) {\n      var offset = getOffsetXY(e.touches[0]);\n      var point = transformToScreen(offset.x, offset.y);\n      mouseX = point.x;\n      mouseY = point.y;\n    } else {\n      var now = new Date();\n      if (now - lastTouchEndTime < doubleTapSpeedInMS) {\n        // They did a double tap here\n        if (transformOrigin) {\n          var offset = getTransformOriginOffset();\n          smoothZoom(offset.x, offset.y, zoomDoubleClickSpeed);\n        } else {\n          // We want untransformed x/y here.\n          smoothZoom(lastSingleFingerOffset.x, lastSingleFingerOffset.y, zoomDoubleClickSpeed);\n        }\n      } else if (now - lastTouchStartTime < clickEventTimeInMS) {\n        handlePotentialClickEvent(e);\n      }\n\n      lastTouchEndTime = now;\n\n      triggerPanEnd();\n      releaseTouches();\n    }\n  }\n\n  function getPinchZoomLength(finger1, finger2) {\n    var dx = finger1.clientX - finger2.clientX;\n    var dy = finger1.clientY - finger2.clientY;\n    return Math.sqrt(dx * dx + dy * dy);\n  }\n\n  function onDoubleClick(e) {\n    beforeDoubleClick(e);\n    var offset = getOffsetXY(e);\n    if (transformOrigin) {\n      // TODO: looks like this is duplicated in the file.\n      // Need to refactor\n      offset = getTransformOriginOffset();\n    }\n    smoothZoom(offset.x, offset.y, zoomDoubleClickSpeed);\n  }\n\n  function onMouseDown(e) {\n    clearPendingClickEventTimeout();\n\n    // if client does not want to handle this event - just ignore the call\n    if (beforeMouseDown(e)) return;\n\n    lastMouseDownedEvent = e;\n    lastMouseDownTime = new Date();\n\n    if (touchInProgress) {\n      // modern browsers will fire mousedown for touch events too\n      // we do not want this: touch is handled separately.\n      e.stopPropagation();\n      return false;\n    }\n    // for IE, left click == 1\n    // for Firefox, left click == 0\n    var isLeftButton =\n      (e.button === 1 && window.event !== null) || e.button === 0;\n    if (!isLeftButton) return;\n\n    smoothScroll.cancel();\n\n    var offset = getOffsetXY(e);\n    var point = transformToScreen(offset.x, offset.y);\n    clickX = mouseX = point.x;\n    clickY = mouseY = point.y;\n\n    // We need to listen on document itself, since mouse can go outside of the\n    // window, and we will loose it\n    document.addEventListener('mousemove', onMouseMove);\n    document.addEventListener('mouseup', onMouseUp);\n    textSelection.capture(e.target || e.srcElement);\n\n    return false;\n  }\n\n  function onMouseMove(e) {\n    // no need to worry about mouse events when touch is happening\n    if (touchInProgress) return;\n\n    triggerPanStart();\n\n    var offset = getOffsetXY(e);\n    var point = transformToScreen(offset.x, offset.y);\n    var dx = point.x - mouseX;\n    var dy = point.y - mouseY;\n\n    mouseX = point.x;\n    mouseY = point.y;\n\n    internalMoveBy(dx, dy);\n  }\n\n  function onMouseUp() {\n    var now = new Date();\n    if (now - lastMouseDownTime < clickEventTimeInMS) handlePotentialClickEvent(lastMouseDownedEvent);\n    textSelection.release();\n    triggerPanEnd();\n    releaseDocumentMouse();\n  }\n\n  function releaseDocumentMouse() {\n    document.removeEventListener('mousemove', onMouseMove);\n    document.removeEventListener('mouseup', onMouseUp);\n    panstartFired = false;\n  }\n\n  function releaseTouches() {\n    document.removeEventListener('touchmove', handleTouchMove);\n    document.removeEventListener('touchend', handleTouchEnd);\n    document.removeEventListener('touchcancel', handleTouchEnd);\n    panstartFired = false;\n    multiTouch = false;\n    touchInProgress = false;\n  }\n\n  function onMouseWheel(e) {\n    // if client does not want to handle this event - just ignore the call\n    if (beforeWheel(e)) return;\n\n    smoothScroll.cancel();\n\n    var delta = e.deltaY;\n    if (e.deltaMode > 0) delta *= 100;\n\n    var scaleMultiplier = getScaleMultiplier(delta);\n\n    if (scaleMultiplier !== 1) {\n      var offset = transformOrigin\n        ? getTransformOriginOffset()\n        : getOffsetXY(e);\n      publicZoomTo(offset.x, offset.y, scaleMultiplier);\n      e.preventDefault();\n    }\n  }\n\n  function getOffsetXY(e) {\n    var offsetX, offsetY;\n    // I tried using e.offsetX, but that gives wrong results for svg, when user clicks on a path.\n    var ownerRect = owner.getBoundingClientRect();\n    offsetX = e.clientX - ownerRect.left;\n    offsetY = e.clientY - ownerRect.top;\n\n    return { x: offsetX, y: offsetY };\n  }\n\n  function smoothZoom(clientX, clientY, scaleMultiplier) {\n    var fromValue = transform.scale;\n    var from = { scale: fromValue };\n    var to = { scale: scaleMultiplier * fromValue };\n\n    smoothScroll.cancel();\n    cancelZoomAnimation();\n\n    zoomToAnimation = animate(from, to, {\n      step: function (v) {\n        zoomAbs(clientX, clientY, v.scale);\n      },\n      done: triggerZoomEnd\n    });\n  }\n\n  function smoothZoomAbs(clientX, clientY, toScaleValue) {\n    var fromValue = transform.scale;\n    var from = { scale: fromValue };\n    var to = { scale: toScaleValue };\n\n    smoothScroll.cancel();\n    cancelZoomAnimation();\n\n    zoomToAnimation = animate(from, to, {\n      step: function (v) {\n        zoomAbs(clientX, clientY, v.scale);\n      }\n    });\n  }\n\n  function getTransformOriginOffset() {\n    var ownerRect = owner.getBoundingClientRect();\n    return {\n      x: ownerRect.width * transformOrigin.x,\n      y: ownerRect.height * transformOrigin.y\n    };\n  }\n\n  function publicZoomTo(clientX, clientY, scaleMultiplier) {\n    smoothScroll.cancel();\n    cancelZoomAnimation();\n    return zoomByRatio(clientX, clientY, scaleMultiplier);\n  }\n\n  function cancelZoomAnimation() {\n    if (zoomToAnimation) {\n      zoomToAnimation.cancel();\n      zoomToAnimation = null;\n    }\n  }\n\n  function getScaleMultiplier(delta) {\n    var sign = Math.sign(delta);\n    var deltaAdjustedSpeed = Math.min(0.25, Math.abs(speed * delta / 128));\n    return 1 - sign * deltaAdjustedSpeed;\n  }\n\n  function triggerPanStart() {\n    if (!panstartFired) {\n      triggerEvent('panstart');\n      panstartFired = true;\n      smoothScroll.start();\n    }\n  }\n\n  function triggerPanEnd() {\n    if (panstartFired) {\n      // we should never run smooth scrolling if it was multiTouch (pinch zoom animation):\n      if (!multiTouch) smoothScroll.stop();\n      triggerEvent('panend');\n    }\n  }\n\n  function triggerZoomEnd() {\n    triggerEvent('zoomend');\n  }\n\n  function triggerEvent(name) {\n    api.fire(name, api);\n  }\n}\n\nfunction parseTransformOrigin(options) {\n  if (!options) return;\n  if (typeof options === 'object') {\n    if (!isNumber(options.x) || !isNumber(options.y))\n      failTransformOrigin(options);\n    return options;\n  }\n\n  failTransformOrigin();\n}\n\nfunction failTransformOrigin(options) {\n  console.error(options);\n  throw new Error(\n    [\n      'Cannot parse transform origin.',\n      'Some good examples:',\n      '  \"center center\" can be achieved with {x: 0.5, y: 0.5}',\n      '  \"top center\" can be achieved with {x: 0.5, y: 0}',\n      '  \"bottom right\" can be achieved with {x: 1, y: 1}'\n    ].join('\\n')\n  );\n}\n\nfunction noop() { }\n\nfunction validateBounds(bounds) {\n  var boundsType = typeof bounds;\n  if (boundsType === 'undefined' || boundsType === 'boolean') return; // this is okay\n  // otherwise need to be more thorough:\n  var validBounds =\n    isNumber(bounds.left) &&\n    isNumber(bounds.top) &&\n    isNumber(bounds.bottom) &&\n    isNumber(bounds.right);\n\n  if (!validBounds)\n    throw new Error(\n      'Bounds object is not valid. It can be: ' +\n      'undefined, boolean (true|false) or an object {left, top, right, bottom}'\n    );\n}\n\nfunction isNumber(x) {\n  return Number.isFinite(x);\n}\n\n// IE 11 does not support isNaN:\nfunction isNaN(value) {\n  if (Number.isNaN) {\n    return Number.isNaN(value);\n  }\n\n  return value !== value;\n}\n\nfunction rigidScroll() {\n  return {\n    start: noop,\n    stop: noop,\n    cancel: noop\n  };\n}\n\nfunction autoRun() {\n  if (typeof document === 'undefined') return;\n\n  var scripts = document.getElementsByTagName('script');\n  if (!scripts) return;\n  var panzoomScript;\n\n  for (var i = 0; i < scripts.length; ++i) {\n    var x = scripts[i];\n    if (x.src && x.src.match(/\\bpanzoom(\\.min)?\\.js/)) {\n      panzoomScript = x;\n      break;\n    }\n  }\n\n  if (!panzoomScript) return;\n\n  var query = panzoomScript.getAttribute('query');\n  if (!query) return;\n\n  var globalName = panzoomScript.getAttribute('name') || 'pz';\n  var started = Date.now();\n\n  tryAttach();\n\n  function tryAttach() {\n    var el = document.querySelector(query);\n    if (!el) {\n      var now = Date.now();\n      var elapsed = now - started;\n      if (elapsed < 2000) {\n        // Let's wait a bit\n        setTimeout(tryAttach, 100);\n        return;\n      }\n      // If we don't attach within 2 seconds to the target element, consider it a failure\n      console.error('Cannot find the panzoom element', globalName);\n      return;\n    }\n    var options = collectOptions(panzoomScript);\n    console.log(options);\n    window[globalName] = createPanZoom(el, options);\n  }\n\n  function collectOptions(script) {\n    var attrs = script.attributes;\n    var options = {};\n    for (var j = 0; j < attrs.length; ++j) {\n      var attr = attrs[j];\n      var nameValue = getPanzoomAttributeNameValue(attr);\n      if (nameValue) {\n        options[nameValue.name] = nameValue.value;\n      }\n    }\n\n    return options;\n  }\n\n  function getPanzoomAttributeNameValue(attr) {\n    if (!attr.name) return;\n    var isPanZoomAttribute =\n      attr.name[0] === 'p' && attr.name[1] === 'z' && attr.name[2] === '-';\n\n    if (!isPanZoomAttribute) return;\n\n    var name = attr.name.substr(3);\n    var value = JSON.parse(attr.value);\n    return { name: name, value: value };\n  }\n}\n\nautoRun();\n\t","/**\n * Disallows selecting text.\n */\nmodule.exports = createTextSelectionInterceptor;\n\nfunction createTextSelectionInterceptor(useFake) {\n  if (useFake) {\n    return {\n      capture: noop,\n      release: noop\n    };\n  }\n\n  var dragObject;\n  var prevSelectStart;\n  var prevDragStart;\n  var wasCaptured = false;\n\n  return {\n    capture: capture,\n    release: release\n  };\n\n  function capture(domObject) {\n    wasCaptured = true;\n    prevSelectStart = window.document.onselectstart;\n    prevDragStart = window.document.ondragstart;\n\n    window.document.onselectstart = disabled;\n\n    dragObject = domObject;\n    dragObject.ondragstart = disabled;\n  }\n\n  function release() {\n    if (!wasCaptured) return;\n    \n    wasCaptured = false;\n    window.document.onselectstart = prevSelectStart;\n    if (dragObject) dragObject.ondragstart = prevDragStart;\n  }\n}\n\nfunction disabled(e) {\n  e.stopPropagation();\n  return false;\n}\n\nfunction noop() {}\n","module.exports = makeDomController;\n\nmodule.exports.canAttach = isDomElement;\n\nfunction makeDomController(domElement, options) {\n  var elementValid = isDomElement(domElement); \n  if (!elementValid) {\n    throw new Error('panzoom requires DOM element to be attached to the DOM tree');\n  }\n\n  var owner = domElement.parentElement;\n  domElement.scrollTop = 0;\n  \n  if (!options.disableKeyboardInteraction) {\n    owner.setAttribute('tabindex', 0);\n  }\n\n  var api = {\n    getBBox: getBBox,\n    getOwner: getOwner,\n    applyTransform: applyTransform,\n  };\n  \n  return api;\n\n  function getOwner() {\n    return owner;\n  }\n\n  function getBBox() {\n    // TODO: We should probably cache this?\n    return  {\n      left: 0,\n      top: 0,\n      width: domElement.clientWidth,\n      height: domElement.clientHeight\n    };\n  }\n\n  function applyTransform(transform) {\n    // TODO: Should we cache this?\n    domElement.style.transformOrigin = '0 0 0';\n    domElement.style.transform = 'matrix(' +\n      transform.scale + ', 0, 0, ' +\n      transform.scale + ', ' +\n      transform.x + ', ' + transform.y + ')';\n  }\n}\n\nfunction isDomElement(element) {\n  return element && element.parentElement && element.style;\n}\n","/**\n * Allows smooth kinetic scrolling of the surface\n */\nmodule.exports = kinetic;\n\nfunction kinetic(getPoint, scroll, settings) {\n  if (typeof settings !== 'object') {\n    // setting could come as boolean, we should ignore it, and use an object.\n    settings = {};\n  }\n\n  var minVelocity = typeof settings.minVelocity === 'number' ? settings.minVelocity : 5;\n  var amplitude = typeof settings.amplitude === 'number' ? settings.amplitude : 0.25;\n  var cancelAnimationFrame = typeof settings.cancelAnimationFrame === 'function' ? settings.cancelAnimationFrame : getCancelAnimationFrame();\n  var requestAnimationFrame = typeof settings.requestAnimationFrame === 'function' ? settings.requestAnimationFrame : getRequestAnimationFrame();\n\n  var lastPoint;\n  var timestamp;\n  var timeConstant = 342;\n\n  var ticker;\n  var vx, targetX, ax;\n  var vy, targetY, ay;\n\n  var raf;\n\n  return {\n    start: start,\n    stop: stop,\n    cancel: dispose\n  };\n\n  function dispose() {\n    cancelAnimationFrame(ticker);\n    cancelAnimationFrame(raf);\n  }\n\n  function start() {\n    lastPoint = getPoint();\n\n    ax = ay = vx = vy = 0;\n    timestamp = new Date();\n\n    cancelAnimationFrame(ticker);\n    cancelAnimationFrame(raf);\n\n    // we start polling the point position to accumulate velocity\n    // Once we stop(), we will use accumulated velocity to keep scrolling\n    // an object.\n    ticker = requestAnimationFrame(track);\n  }\n\n  function track() {\n    var now = Date.now();\n    var elapsed = now - timestamp;\n    timestamp = now;\n\n    var currentPoint = getPoint();\n\n    var dx = currentPoint.x - lastPoint.x;\n    var dy = currentPoint.y - lastPoint.y;\n\n    lastPoint = currentPoint;\n\n    var dt = 1000 / (1 + elapsed);\n\n    // moving average\n    vx = 0.8 * dx * dt + 0.2 * vx;\n    vy = 0.8 * dy * dt + 0.2 * vy;\n\n    ticker = requestAnimationFrame(track);\n  }\n\n  function stop() {\n    cancelAnimationFrame(ticker);\n    cancelAnimationFrame(raf);\n\n    var currentPoint = getPoint();\n\n    targetX = currentPoint.x;\n    targetY = currentPoint.y;\n    timestamp = Date.now();\n\n    if (vx < -minVelocity || vx > minVelocity) {\n      ax = amplitude * vx;\n      targetX += ax;\n    }\n\n    if (vy < -minVelocity || vy > minVelocity) {\n      ay = amplitude * vy;\n      targetY += ay;\n    }\n\n    raf = requestAnimationFrame(autoScroll);\n  }\n\n  function autoScroll() {\n    var elapsed = Date.now() - timestamp;\n\n    var moving = false;\n    var dx = 0;\n    var dy = 0;\n\n    if (ax) {\n      dx = -ax * Math.exp(-elapsed / timeConstant);\n\n      if (dx > 0.5 || dx < -0.5) moving = true;\n      else dx = ax = 0;\n    }\n\n    if (ay) {\n      dy = -ay * Math.exp(-elapsed / timeConstant);\n\n      if (dy > 0.5 || dy < -0.5) moving = true;\n      else dy = ay = 0;\n    }\n\n    if (moving) {\n      scroll(targetX + dx, targetY + dy);\n      raf = requestAnimationFrame(autoScroll);\n    }\n  }\n}\n\nfunction getCancelAnimationFrame() {\n  if (typeof cancelAnimationFrame === 'function') return cancelAnimationFrame;\n  return clearTimeout;\n}\n\nfunction getRequestAnimationFrame() {\n  if (typeof requestAnimationFrame === 'function') return requestAnimationFrame;\n\n  return function (handler) {\n    return setTimeout(handler, 16);\n  };\n}","module.exports = makeSvgController;\nmodule.exports.canAttach = isSVGElement;\n\nfunction makeSvgController(svgElement, options) {\n  if (!isSVGElement(svgElement)) {\n    throw new Error('svg element is required for svg.panzoom to work');\n  }\n\n  var owner = svgElement.ownerSVGElement;\n  if (!owner) {\n    throw new Error(\n      'Do not apply panzoom to the root <svg> element. ' +\n      'Use its child instead (e.g. <g></g>). ' +\n      'As of March 2016 only FireFox supported transform on the root element');\n  }\n\n  if (!options.disableKeyboardInteraction) {\n    owner.setAttribute('tabindex', 0);\n  }\n\n  var api = {\n    getBBox: getBBox,\n    getScreenCTM: getScreenCTM,\n    getOwner: getOwner,\n    applyTransform: applyTransform,\n    initTransform: initTransform\n  };\n  \n  return api;\n\n  function getOwner() {\n    return owner;\n  }\n\n  function getBBox() {\n    var bbox =  svgElement.getBBox();\n    return {\n      left: bbox.x,\n      top: bbox.y,\n      width: bbox.width,\n      height: bbox.height,\n    };\n  }\n\n  function getScreenCTM() {\n    var ctm = owner.getCTM();\n    if (!ctm) {\n      // This is likely firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=873106\n      // The code below is not entirely correct, but still better than nothing\n      return owner.getScreenCTM();\n    }\n    return ctm;\n  }\n\n  function initTransform(transform) {\n    var screenCTM = svgElement.getCTM();\n\n    // The above line returns null on Firefox\n    if (screenCTM === null) {\n      screenCTM = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGMatrix();\n    }\n\n    transform.x = screenCTM.e;\n    transform.y = screenCTM.f;\n    transform.scale = screenCTM.a;\n    owner.removeAttributeNS(null, 'viewBox');\n  }\n\n  function applyTransform(transform) {\n    svgElement.setAttribute('transform', 'matrix(' +\n      transform.scale + ' 0 0 ' +\n      transform.scale + ' ' +\n      transform.x + ' ' + transform.y + ')');\n  }\n}\n\nfunction isSVGElement(element) {\n  return element && element.ownerSVGElement && element.getCTM;\n}","module.exports = Transform;\n\nfunction Transform() {\n  this.x = 0;\n  this.y = 0;\n  this.scale = 1;\n}\n","\"object\"==typeof navigator&&function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"Plyr\",t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Plyr=t()}(this,(function(){\"use strict\";function e(e,t,i){return(t=function(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t||\"default\");if(\"object\"!=typeof s)return s;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function i(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a={addCSS:!0,thumbWidth:15,watch:!0};var l=function(e){return null!=e?e.constructor:null},r=function(e,t){return!!(e&&t&&e instanceof t)},o=function(e){return null==e},c=function(e){return l(e)===Object},u=function(e){return l(e)===String},h=function(e){return Array.isArray(e)},d=function(e){return r(e,NodeList)},m={nullOrUndefined:o,object:c,number:function(e){return l(e)===Number&&!Number.isNaN(e)},string:u,boolean:function(e){return l(e)===Boolean},function:function(e){return l(e)===Function},array:h,nodeList:d,element:function(e){return r(e,Element)},event:function(e){return r(e,Event)},empty:function(e){return o(e)||(u(e)||h(e)||d(e))&&!e.length||c(e)&&!Object.keys(e).length}};function p(e,t){if(1>t){var i=function(e){var t=\"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}var g=function(){function e(t,i){(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")})(this,e),m.element(t)?this.element=t:m.string(t)&&(this.element=document.querySelector(t)),m.element(this.element)&&m.empty(this.element.rangeTouch)&&(this.config=n({},a,{},i),this.init())}return function(e,i,s){i&&t(e.prototype,i),s&&t(e,s)}(e,[{key:\"init\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"none\",this.element.style.webKitUserSelect=\"none\",this.element.style.touchAction=\"manipulation\"),this.listeners(!0),this.element.rangeTouch=this)}},{key:\"destroy\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"\",this.element.style.webKitUserSelect=\"\",this.element.style.touchAction=\"\"),this.listeners(!1),this.element.rangeTouch=null)}},{key:\"listeners\",value:function(e){var t=this,i=e?\"addEventListener\":\"removeEventListener\";[\"touchstart\",\"touchmove\",\"touchend\"].forEach((function(e){t.element[i](e,(function(e){return t.set(e)}),!1)}))}},{key:\"get\",value:function(t){if(!e.enabled||!m.event(t))return null;var i,s=t.target,n=t.changedTouches[0],a=parseFloat(s.getAttribute(\"min\"))||0,l=parseFloat(s.getAttribute(\"max\"))||100,r=parseFloat(s.getAttribute(\"step\"))||1,o=s.getBoundingClientRect(),c=100/o.width*(this.config.thumbWidth/2)/100;return 0>(i=100/o.width*(n.clientX-o.left))?i=0:100<i&&(i=100),50>i?i-=(100-2*i)*c:50<i&&(i+=2*(i-50)*c),a+p(i/100*(l-a),r)}},{key:\"set\",value:function(t){e.enabled&&m.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var i=new Event(t,{bubbles:!0});e.dispatchEvent(i)}}(t.target,\"touchend\"===t.type?\"change\":\"input\"))}}],[{key:\"setup\",value:function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=null;if(m.empty(t)||m.string(t)?s=Array.from(document.querySelectorAll(m.string(t)?t:'input[type=\"range\"]')):m.element(t)?s=[t]:m.nodeList(t)?s=Array.from(t):m.array(t)&&(s=t.filter(m.element)),m.empty(s))return null;var l=n({},a,{},i);if(m.string(t)&&l.watch){var r=new MutationObserver((function(i){Array.from(i).forEach((function(i){Array.from(i.addedNodes).forEach((function(i){m.element(i)&&function(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}(i,t)&&new e(i,l)}))}))}));r.observe(document.body,{childList:!0,subtree:!0})}return s.map((function(t){return new e(t,i)}))}},{key:\"enabled\",get:function(){return\"ontouchstart\"in document.documentElement}}]),e}();const f=e=>null!=e?e.constructor:null,y=(e,t)=>Boolean(e&&t&&e instanceof t),b=e=>null==e,v=e=>f(e)===Object,w=e=>f(e)===String,T=e=>\"function\"==typeof e,k=e=>Array.isArray(e),C=e=>y(e,NodeList),A=e=>b(e)||(w(e)||k(e)||C(e))&&!e.length||v(e)&&!Object.keys(e).length;var S={nullOrUndefined:b,object:v,number:e=>f(e)===Number&&!Number.isNaN(e),string:w,boolean:e=>f(e)===Boolean,function:T,array:k,weakMap:e=>y(e,WeakMap),nodeList:C,element:e=>null!==e&&\"object\"==typeof e&&1===e.nodeType&&\"object\"==typeof e.style&&\"object\"==typeof e.ownerDocument,textNode:e=>f(e)===Text,event:e=>y(e,Event),keyboardEvent:e=>y(e,KeyboardEvent),cue:e=>y(e,window.TextTrackCue)||y(e,window.VTTCue),track:e=>y(e,TextTrack)||!b(e)&&w(e.kind),promise:e=>y(e,Promise)&&T(e.then),url:e=>{if(y(e,window.URL))return!0;if(!w(e))return!1;let t=e;e.startsWith(\"http://\")&&e.startsWith(\"https://\")||(t=`http://${e}`);try{return!A(new URL(t).hostname)}catch(e){return!1}},empty:A};const E=(()=>{const e=document.createElement(\"span\"),t={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"},i=Object.keys(t).find((t=>void 0!==e.style[t]));return!!S.string(i)&&t[i]})();function P(e,t){setTimeout((()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var M={isIE:Boolean(window.document.documentMode),isEdge:/Edge/g.test(navigator.userAgent),isWebKit:\"WebkitAppearance\"in document.documentElement.style&&!/Edge/g.test(navigator.userAgent),isIPhone:/iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1,isIPadOS:\"MacIntel\"===navigator.platform&&navigator.maxTouchPoints>1,isIos:/iPad|iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1};function N(e,t){return t.split(\".\").reduce(((e,t)=>e&&e[t]),e)}function x(e={},...t){if(!t.length)return e;const i=t.shift();return S.object(i)?(Object.keys(i).forEach((t=>{S.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),x(e[t],i[t])):Object.assign(e,{[t]:i[t]})})),x(e,...t)):e}function L(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach(((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)}))}function I(e,t){S.element(e)&&!S.empty(t)&&Object.entries(t).filter((([,e])=>!S.nullOrUndefined(e))).forEach((([t,i])=>e.setAttribute(t,i)))}function $(e,t,i){const s=document.createElement(e);return S.object(t)&&I(s,t),S.string(i)&&(s.innerText=i),s}function _(e,t,i,s){S.element(t)&&t.appendChild($(e,i,s))}function O(e){S.nodeList(e)||S.array(e)?Array.from(e).forEach(O):S.element(e)&&S.element(e.parentNode)&&e.parentNode.removeChild(e)}function j(e){if(!S.element(e))return;let{length:t}=e.childNodes;for(;t>0;)e.removeChild(e.lastChild),t-=1}function q(e,t){return S.element(t)&&S.element(t.parentNode)&&S.element(e)?(t.parentNode.replaceChild(e,t),e):null}function D(e,t){if(!S.string(e)||S.empty(e))return{};const i={},s=x({},t);return e.split(\",\").forEach((e=>{const t=e.trim(),n=t.replace(\".\",\"\"),a=t.replace(/[[\\]]/g,\"\").split(\"=\"),[l]=a,r=a.length>1?a[1].replace(/[\"']/g,\"\"):\"\";switch(t.charAt(0)){case\".\":S.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case\"#\":i.id=t.replace(\"#\",\"\");break;case\"[\":i[l]=r}})),x(s,i)}function H(e,t){if(!S.element(e))return;let i=t;S.boolean(i)||(i=!e.hidden),e.hidden=i}function R(e,t,i){if(S.nodeList(e))return Array.from(e).map((e=>R(e,t,i)));if(S.element(e)){let s=\"toggle\";return void 0!==i&&(s=i?\"add\":\"remove\"),e.classList[s](t),e.classList.contains(t)}return!1}function F(e,t){return S.element(e)&&e.classList.contains(t)}function V(e,t){const{prototype:i}=Element;return(i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function U(e){return this.elements.container.querySelectorAll(e)}function B(e){return this.elements.container.querySelector(e)}function W(e=null,t=!1){S.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const z={\"audio/ogg\":\"vorbis\",\"audio/wav\":\"1\",\"video/webm\":\"vp8, vorbis\",\"video/mp4\":\"avc1.42E01E, mp4a.40.2\",\"video/ogg\":\"theora\"},K={audio:\"canPlayType\"in document.createElement(\"audio\"),video:\"canPlayType\"in document.createElement(\"video\"),check(e,t){const i=K[e]||\"html5\"!==t;return{api:i,ui:i&&K.rangeInput}},pip:!(M.isIPhone||!S.function($(\"video\").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||$(\"video\").disablePictureInPicture)),airplay:S.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:\"playsInline\"in document.createElement(\"video\"),mime(e){if(S.empty(e))return!1;const[t]=e.split(\"/\");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(z).includes(i)&&(i+=`; codecs=\"${z[e]}\"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,\"\"))}catch(e){return!1}},textTracks:\"textTracks\"in document.createElement(\"video\"),rangeInput:(()=>{const e=document.createElement(\"input\");return e.type=\"range\",\"range\"===e.type})(),touch:\"ontouchstart\"in document.documentElement,transitions:!1!==E,reducedMotion:\"matchMedia\"in window&&window.matchMedia(\"(prefers-reduced-motion)\").matches},Y=(()=>{let e=!1;try{const t=Object.defineProperty({},\"passive\",{get:()=>(e=!0,null)});window.addEventListener(\"test\",null,t),window.removeEventListener(\"test\",null,t)}catch(e){}return e})();function Q(e,t,i,s=!1,n=!0,a=!1){if(!e||!(\"addEventListener\"in e)||S.empty(t)||!S.function(i))return;const l=t.split(\" \");let r=a;Y&&(r={passive:n,capture:a}),l.forEach((t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:r}),e[s?\"addEventListener\":\"removeEventListener\"](t,i,r)}))}function X(e,t=\"\",i,s=!0,n=!1){Q.call(this,e,t,i,!0,s,n)}function J(e,t=\"\",i,s=!0,n=!1){Q.call(this,e,t,i,!1,s,n)}function G(e,t=\"\",i,s=!0,n=!1){const a=(...l)=>{J(e,t,a,s,n),i.apply(this,l)};Q.call(this,e,t,a,!0,s,n)}function Z(e,t=\"\",i=!1,s={}){if(!S.element(e)||S.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function ee(){this&&this.eventListeners&&(this.eventListeners.forEach((e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)})),this.eventListeners=[])}function te(){return new Promise((e=>this.ready?setTimeout(e,0):X.call(this,this.elements.container,\"ready\",e))).then((()=>{}))}function ie(e){S.promise(e)&&e.then(null,(()=>{}))}function se(e){return S.array(e)?e.filter(((t,i)=>e.indexOf(t)===i)):e}function ne(e,t){return S.array(e)&&e.length?e.reduce(((e,i)=>Math.abs(i-t)<Math.abs(e-t)?i:e)):null}function ae(e){return!(!window||!window.CSS)&&window.CSS.supports(e)}const le=[[1,1],[4,3],[3,4],[5,4],[4,5],[3,2],[2,3],[16,10],[10,16],[16,9],[9,16],[21,9],[9,21],[32,9],[9,32]].reduce(((e,[t,i])=>({...e,[t/i]:[t,i]})),{});function re(e){if(!(S.array(e)||S.string(e)&&e.includes(\":\")))return!1;return(S.array(e)?e:e.split(\":\")).map(Number).every(S.number)}function oe(e){if(!S.array(e)||!e.every(S.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function ce(e){const t=e=>re(e)?e.split(\":\").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!S.empty(this.embed)&&S.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return oe(i)}function ue(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=ce.call(this,e);if(!S.array(i))return{};const[s,n]=oe(i),a=100/s*n;if(ae(`aspect-ratio: ${s}/${n}`)?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${a}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-a)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:a,ratio:i}}function he(e,t,i=.05){const s=e/t,n=ne(Object.keys(le),s);return Math.abs(n-s)<=i?le[n]:[e,t]}const de={getSources(){if(!this.isHTML5)return[];return Array.from(this.media.querySelectorAll(\"source\")).filter((e=>{const t=e.getAttribute(\"type\");return!!S.empty(t)||K.mime.call(this,t)}))},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:de.getSources.call(this).map((e=>Number(e.getAttribute(\"size\")))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,S.empty(this.config.ratio)||ue.call(e),Object.defineProperty(e.media,\"quality\",{get(){const t=de.getSources.call(e).find((t=>t.getAttribute(\"src\")===e.source));return t&&Number(t.getAttribute(\"size\"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&S.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=de.getSources.call(e).find((e=>Number(e.getAttribute(\"size\"))===t));if(!i)return;const{currentTime:s,paused:n,preload:a,readyState:l,playbackRate:r}=e.media;e.media.src=i.getAttribute(\"src\"),(\"none\"!==a||l)&&(e.once(\"loadedmetadata\",(()=>{e.speed=r,e.currentTime=s,n||ie(e.play())})),e.media.load())}Z.call(e,e.media,\"qualitychange\",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(O(de.getSources.call(this)),this.media.setAttribute(\"src\",this.config.blankVideo),this.media.load(),this.debug.log(\"Cancelled network requests\"))}};function me(e,...t){return S.empty(e)?e:e.toString().replace(/{(\\d+)}/g,((e,i)=>t[i].toString()))}const pe=(e=\"\",t=\"\",i=\"\")=>e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g,\"\\\\$1\"),\"g\"),i.toString()),ge=(e=\"\")=>e.toString().replace(/\\w\\S*/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()));function fe(e=\"\"){let t=e.toString();return t=function(e=\"\"){let t=e.toString();return t=pe(t,\"-\",\" \"),t=pe(t,\"_\",\" \"),t=ge(t),pe(t,\" \",\"\")}(t),t.charAt(0).toLowerCase()+t.slice(1)}function ye(e){const t=document.createElement(\"div\");return t.appendChild(e),t.innerHTML}const be={pip:\"PIP\",airplay:\"AirPlay\",html5:\"HTML5\",vimeo:\"Vimeo\",youtube:\"YouTube\"},ve={get(e=\"\",t={}){if(S.empty(e)||S.empty(t))return\"\";let i=N(t.i18n,e);if(S.empty(i))return Object.keys(be).includes(e)?be[e]:\"\";const s={\"{seektime}\":t.seekTime,\"{title}\":t.title};return Object.entries(s).forEach((([e,t])=>{i=pe(i,e,t)})),i}};class we{constructor(t){e(this,\"get\",(e=>{if(!we.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(S.empty(t))return null;const i=JSON.parse(t);return S.string(e)&&e.length?i[e]:i})),e(this,\"set\",(e=>{if(!we.supported||!this.enabled)return;if(!S.object(e))return;let t=this.get();S.empty(t)&&(t={}),x(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch(e){}})),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}static get supported(){try{if(!(\"localStorage\"in window))return!1;const e=\"___test\";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}}function Te(e,t=\"text\"){return new Promise(((i,s)=>{try{const s=new XMLHttpRequest;if(!(\"withCredentials\"in s))return;s.addEventListener(\"load\",(()=>{if(\"text\"===t)try{i(JSON.parse(s.responseText))}catch(e){i(s.responseText)}else i(s.response)})),s.addEventListener(\"error\",(()=>{throw new Error(s.status)})),s.open(\"GET\",e,!0),s.responseType=t,s.send()}catch(e){s(e)}}))}function ke(e,t){if(!S.string(e))return;const i=\"cache\",s=S.string(t);let n=!1;const a=()=>null!==document.getElementById(t),l=(e,t)=>{e.innerHTML=t,s&&a()||document.body.insertAdjacentElement(\"afterbegin\",e)};if(!s||!a()){const a=we.supported,r=document.createElement(\"div\");if(r.setAttribute(\"hidden\",\"\"),s&&r.setAttribute(\"id\",t),a){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);l(r,t.content)}}Te(e).then((e=>{if(!S.empty(e)){if(a)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch(e){}l(r,e)}})).catch((()=>{}))}}const Ce=e=>Math.trunc(e/60/60%60,10),Ae=e=>Math.trunc(e/60%60,10),Se=e=>Math.trunc(e%60,10);function Ee(e=0,t=!1,i=!1){if(!S.number(e))return Ee(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=Ce(e);const a=Ae(e),l=Se(e);return n=t||n>0?`${n}:`:\"\",`${i&&e>0?\"-\":\"\"}${n}${s(a)}:${s(l)}`}const Pe={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||M.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=B.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:U.call(this,this.config.selectors.buttons.play),pause:B.call(this,this.config.selectors.buttons.pause),restart:B.call(this,this.config.selectors.buttons.restart),rewind:B.call(this,this.config.selectors.buttons.rewind),fastForward:B.call(this,this.config.selectors.buttons.fastForward),mute:B.call(this,this.config.selectors.buttons.mute),pip:B.call(this,this.config.selectors.buttons.pip),airplay:B.call(this,this.config.selectors.buttons.airplay),settings:B.call(this,this.config.selectors.buttons.settings),captions:B.call(this,this.config.selectors.buttons.captions),fullscreen:B.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=B.call(this,this.config.selectors.progress),this.elements.inputs={seek:B.call(this,this.config.selectors.inputs.seek),volume:B.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:B.call(this,this.config.selectors.display.buffer),currentTime:B.call(this,this.config.selectors.display.currentTime),duration:B.call(this,this.config.selectors.display.duration)},S.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn(\"It looks like there is a problem with your custom controls HTML\",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i=\"http://www.w3.org/2000/svg\",s=Pe.getIconUrl.call(this),n=`${s.cors?\"\":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,\"svg\");I(a,x(t,{\"aria-hidden\":\"true\",focusable:\"false\"}));const l=document.createElementNS(i,\"use\"),r=`${n}-${e}`;return\"href\"in l&&l.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",r),l.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",r),a.appendChild(l),a},createLabel(e,t={}){const i=ve.get(e,this.config);return $(\"span\",{...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(\" \")},i)},createBadge(e){if(S.empty(e))return null;const t=$(\"span\",{class:this.config.classNames.menu.value});return t.appendChild($(\"span\",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=x({},t);let s=fe(e);const n={element:\"button\",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch([\"element\",\"icon\",\"label\"].forEach((e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])})),\"button\"!==n.element||Object.keys(i).includes(\"type\")||(i.type=\"button\"),Object.keys(i).includes(\"class\")?i.class.split(\" \").some((e=>e===this.config.classNames.control))||x(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case\"play\":n.toggle=!0,n.label=\"play\",n.labelPressed=\"pause\",n.icon=\"play\",n.iconPressed=\"pause\";break;case\"mute\":n.toggle=!0,n.label=\"mute\",n.labelPressed=\"unmute\",n.icon=\"volume\",n.iconPressed=\"muted\";break;case\"captions\":n.toggle=!0,n.label=\"enableCaptions\",n.labelPressed=\"disableCaptions\",n.icon=\"captions-off\",n.iconPressed=\"captions-on\";break;case\"fullscreen\":n.toggle=!0,n.label=\"enterFullscreen\",n.labelPressed=\"exitFullscreen\",n.icon=\"enter-fullscreen\",n.iconPressed=\"exit-fullscreen\";break;case\"play-large\":i.class+=` ${this.config.classNames.control}--overlaid`,s=\"play\",n.label=\"play\",n.icon=\"play\";break;default:S.empty(n.label)&&(n.label=s),S.empty(n.icon)&&(n.icon=e)}const a=$(n.element);return n.toggle?(a.appendChild(Pe.createIcon.call(this,n.iconPressed,{class:\"icon--pressed\"})),a.appendChild(Pe.createIcon.call(this,n.icon,{class:\"icon--not-pressed\"})),a.appendChild(Pe.createLabel.call(this,n.labelPressed,{class:\"label--pressed\"})),a.appendChild(Pe.createLabel.call(this,n.label,{class:\"label--not-pressed\"}))):(a.appendChild(Pe.createIcon.call(this,n.icon)),a.appendChild(Pe.createLabel.call(this,n.label))),x(i,D(this.config.selectors.buttons[s],i)),I(a,i),\"play\"===s?(S.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=$(\"input\",x(D(this.config.selectors.inputs[e]),{type:\"range\",min:0,max:100,step:.01,value:0,autocomplete:\"off\",role:\"slider\",\"aria-label\":ve.get(e,this.config),\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":0},t));return this.elements.inputs[e]=i,Pe.updateRangeFill.call(this,i),g.setup(i),i},createProgress(e,t){const i=$(\"progress\",x(D(this.config.selectors.display[e]),{min:0,max:100,value:0,role:\"progressbar\",\"aria-hidden\":!0},t));if(\"volume\"!==e){i.appendChild($(\"span\",null,\"0\"));const t={played:\"played\",buffer:\"buffered\"}[e],s=t?ve.get(t,this.config):\"\";i.innerText=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=D(this.config.selectors.display[e],t),s=$(\"div\",x(i,{class:`${i.class?i.class:\"\"} ${this.config.classNames.display.time} `.trim(),\"aria-label\":ve.get(e,this.config),role:\"timer\"}),\"00:00\");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){X.call(this,e,\"keydown keyup\",(i=>{if(![\" \",\"ArrowUp\",\"ArrowDown\",\"ArrowRight\"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),\"keydown\"===i.type)return;const s=V(e,'[role=\"menuitemradio\"]');if(!s&&[\" \",\"ArrowRight\"].includes(i.key))Pe.showMenuPanel.call(this,t,!0);else{let t;\" \"!==i.key&&(\"ArrowDown\"===i.key||s&&\"ArrowRight\"===i.key?(t=e.nextElementSibling,S.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,S.element(t)||(t=e.parentNode.lastElementChild)),W.call(this,t,!0))}}),!1),X.call(this,e,\"keyup\",(e=>{\"Return\"===e.key&&Pe.focusFirstMenuItem.call(this,null,!0)}))},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const l=D(this.config.selectors.inputs[i]),r=$(\"button\",x(l,{type:\"button\",role:\"menuitemradio\",class:`${this.config.classNames.control} ${l.class?l.class:\"\"}`.trim(),\"aria-checked\":a,value:e})),o=$(\"span\");o.innerHTML=s,S.element(n)&&o.appendChild(n),r.appendChild(o),Object.defineProperty(r,\"checked\",{enumerable:!0,get:()=>\"true\"===r.getAttribute(\"aria-checked\"),set(e){e&&Array.from(r.parentNode.children).filter((e=>V(e,'[role=\"menuitemradio\"]'))).forEach((e=>e.setAttribute(\"aria-checked\",\"false\"))),r.setAttribute(\"aria-checked\",e?\"true\":\"false\")}}),this.listeners.bind(r,\"click keyup\",(t=>{if(!S.keyboardEvent(t)||\" \"===t.key){switch(t.preventDefault(),t.stopPropagation(),r.checked=!0,i){case\"language\":this.currentTrack=Number(e);break;case\"quality\":this.quality=e;break;case\"speed\":this.speed=parseFloat(e)}Pe.showMenuPanel.call(this,\"home\",S.keyboardEvent(t))}}),i,!1),Pe.bindMenuItemShortcuts.call(this,r,i),t.appendChild(r)},formatTime(e=0,t=!1){if(!S.number(e))return e;return Ee(e,Ce(this.duration)>0,t)},updateTimeDisplay(e=null,t=0,i=!1){S.element(e)&&S.number(t)&&(e.innerText=Pe.formatTime(t,i))},updateVolume(){this.supported.ui&&(S.element(this.elements.inputs.volume)&&Pe.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),S.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){S.element(e)&&(e.value=t,Pe.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!S.event(e))return;let t=0;const i=(e,t)=>{const i=S.number(t)?t:0,s=S.element(e)?e:this.elements.display.buffer;if(S.element(s)){s.value=i;const e=s.getElementsByTagName(\"span\")[0];S.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case\"timeupdate\":case\"seeking\":case\"seeked\":s=this.currentTime,n=this.duration,t=0===s||0===n||Number.isNaN(s)||Number.isNaN(n)?0:(s/n*100).toFixed(2),\"timeupdate\"===e.type&&Pe.setRange.call(this,this.elements.inputs.seek,t);break;case\"playing\":case\"progress\":i(this.elements.display.buffer,100*this.buffered)}var s,n},updateRangeFill(e){const t=S.event(e)?e.target:e;if(S.element(t)&&\"range\"===t.getAttribute(\"type\")){if(V(t,this.config.selectors.inputs.seek)){t.setAttribute(\"aria-valuenow\",this.currentTime);const e=Pe.formatTime(this.currentTime),i=Pe.formatTime(this.duration),s=ve.get(\"seekLabel\",this.config);t.setAttribute(\"aria-valuetext\",s.replace(\"{currentTime}\",e).replace(\"{duration}\",i))}else if(V(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute(\"aria-valuenow\",e),t.setAttribute(\"aria-valuetext\",`${e.toFixed(1)}%`)}else t.setAttribute(\"aria-valuenow\",t.value);(M.isWebKit||M.isIPadOS)&&t.style.setProperty(\"--value\",t.value/t.max*100+\"%\")}},updateSeekTooltip(e){var t,i;if(!this.config.tooltips.seek||!S.element(this.elements.inputs.seek)||!S.element(this.elements.display.seekTooltip)||0===this.duration)return;const s=this.elements.display.seekTooltip,n=`${this.config.classNames.tooltip}--visible`,a=e=>R(s,n,e);if(this.touch)return void a(!1);let l=0;const r=this.elements.progress.getBoundingClientRect();if(S.event(e))l=100/r.width*(e.pageX-r.left);else{if(!F(s,n))return;l=parseFloat(s.style.left,10)}l<0?l=0:l>100&&(l=100);const o=this.duration/100*l;s.innerText=Pe.formatTime(o);const c=null===(t=this.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(o)));c&&s.insertAdjacentHTML(\"afterbegin\",`${c.label}<br>`),s.style.left=`${l}%`,S.event(e)&&[\"mouseenter\",\"mouseleave\"].includes(e.type)&&a(\"mouseenter\"===e.type)},timeUpdate(e){const t=!S.element(this.elements.display.duration)&&this.config.invertTime;Pe.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&\"timeupdate\"===e.type&&this.media.seeking||Pe.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return H(this.elements.display.currentTime,!0),void H(this.elements.progress,!0);S.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute(\"aria-valuemax\",this.duration);const e=S.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&Pe.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&Pe.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&Pe.setMarkers.call(this),Pe.updateSeekTooltip.call(this)},toggleMenuButton(e,t){H(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if(\"captions\"===e)n=this.currentTrack;else{if(n=S.empty(i)?this[e]:i,S.empty(n)&&(n=this.config[e].default),!S.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(S.element(a)||(a=s&&s.querySelector('[role=\"menu\"]')),!S.element(a))return;this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`).innerHTML=Pe.getLabel.call(this,e,n);const l=a&&a.querySelector(`[value=\"${n}\"]`);S.element(l)&&(l.checked=!0)},getLabel(e,t){switch(e){case\"speed\":return 1===t?ve.get(\"normal\",this.config):`${t}&times;`;case\"quality\":if(S.number(t)){const e=ve.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return ge(t);case\"captions\":return xe.getLabel.call(this);default:return null}},setQualityMenu(e){if(!S.element(this.elements.settings.panels.quality))return;const t=\"quality\",i=this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');S.array(e)&&(this.options.quality=se(e).filter((e=>this.config.quality.options.includes(e))));const s=!S.empty(this.options.quality)&&this.options.quality.length>1;if(Pe.toggleMenuButton.call(this,t,s),j(i),Pe.checkMenu.call(this),!s)return;const n=e=>{const t=ve.get(`qualityBadge.${e}`,this.config);return t.length?Pe.createBadge.call(this,t):null};this.options.quality.sort(((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1})).forEach((e=>{Pe.createMenuItem.call(this,{value:e,list:i,type:t,title:Pe.getLabel.call(this,\"quality\",e),badge:n(e)})})),Pe.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!S.element(this.elements.settings.panels.captions))return;const e=\"captions\",t=this.elements.settings.panels.captions.querySelector('[role=\"menu\"]'),i=xe.getTracks.call(this),s=Boolean(i.length);if(Pe.toggleMenuButton.call(this,e,s),j(t),Pe.checkMenu.call(this),!s)return;const n=i.map(((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:xe.getLabel.call(this,e),badge:e.language&&Pe.createBadge.call(this,e.language.toUpperCase()),list:t,type:\"language\"})));n.unshift({value:-1,checked:!this.captions.toggled,title:ve.get(\"disabled\",this.config),list:t,type:\"language\"}),n.forEach(Pe.createMenuItem.bind(this)),Pe.updateSetting.call(this,e,t)},setSpeedMenu(){if(!S.element(this.elements.settings.panels.speed))return;const e=\"speed\",t=this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');this.options.speed=this.options.speed.filter((e=>e>=this.minimumSpeed&&e<=this.maximumSpeed));const i=!S.empty(this.options.speed)&&this.options.speed.length>1;Pe.toggleMenuButton.call(this,e,i),j(t),Pe.checkMenu.call(this),i&&(this.options.speed.forEach((i=>{Pe.createMenuItem.call(this,{value:i,list:t,type:e,title:Pe.getLabel.call(this,\"speed\",i)})})),Pe.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!S.empty(e)&&Object.values(e).some((e=>!e.hidden));H(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;S.element(i)||(i=Object.values(this.elements.settings.panels).find((e=>!e.hidden)));const s=i.querySelector('[role^=\"menuitem\"]');W.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!S.element(t)||!S.element(i))return;const{hidden:s}=t;let n=s;if(S.boolean(e))n=e;else if(S.keyboardEvent(e)&&\"Escape\"===e.key)n=!1;else if(S.event(e)){const s=S.function(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute(\"aria-expanded\",n),H(t,!n),R(this.elements.container,this.config.classNames.menu.open,n),n&&S.keyboardEvent(e)?Pe.focusFirstMenuItem.call(this,null,!0):n||s||W.call(this,i,S.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position=\"absolute\",t.style.opacity=0,t.removeAttribute(\"hidden\"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return O(t),{width:i,height:s}},showMenuPanel(e=\"\",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!S.element(i))return;const s=i.parentNode,n=Array.from(s.children).find((e=>!e.hidden));if(K.transitions&&!K.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=Pe.getMenuSize.call(this,i),t=e=>{e.target===s&&[\"width\",\"height\"].includes(e.propertyName)&&(s.style.width=\"\",s.style.height=\"\",J.call(this,s,E,t))};X.call(this,s,E,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}H(n,!0),H(i,!1),Pe.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;S.element(e)&&e.setAttribute(\"href\",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:l,setSpeedMenu:r,showMenuPanel:o}=Pe;this.elements.controls=null,S.array(this.config.controls)&&this.config.controls.includes(\"play-large\")&&this.elements.container.appendChild(i.call(this,\"play-large\"));const c=$(\"div\",D(this.config.selectors.controls.wrapper));this.elements.controls=c;const u={class:\"plyr__controls__item\"};return se(S.array(this.config.controls)?this.config.controls:[]).forEach((l=>{if(\"restart\"===l&&c.appendChild(i.call(this,\"restart\",u)),\"rewind\"===l&&c.appendChild(i.call(this,\"rewind\",u)),\"play\"===l&&c.appendChild(i.call(this,\"play\",u)),\"fast-forward\"===l&&c.appendChild(i.call(this,\"fast-forward\",u)),\"progress\"===l){const t=$(\"div\",{class:`${u.class} plyr__progress__container`}),i=$(\"div\",D(this.config.selectors.progress));if(i.appendChild(n.call(this,\"seek\",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,\"buffer\")),this.config.tooltips.seek){const e=$(\"span\",{class:this.config.classNames.tooltip},\"00:00\");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if(\"current-time\"===l&&c.appendChild(a.call(this,\"currentTime\",u)),\"duration\"===l&&c.appendChild(a.call(this,\"duration\",u)),\"mute\"===l||\"volume\"===l){let{volume:t}=this.elements;if(S.element(t)&&c.contains(t)||(t=$(\"div\",x({},u,{class:`${u.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),\"mute\"===l&&t.appendChild(i.call(this,\"mute\")),\"volume\"===l&&!M.isIos&&!M.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,\"volume\",x(i,{id:`plyr-volume-${e.id}`})))}}if(\"captions\"===l&&c.appendChild(i.call(this,\"captions\",u)),\"settings\"===l&&!S.empty(this.config.settings)){const s=$(\"div\",x({},u,{class:`${u.class} plyr__menu`.trim(),hidden:\"\"}));s.appendChild(i.call(this,\"settings\",{\"aria-haspopup\":!0,\"aria-controls\":`plyr-settings-${e.id}`,\"aria-expanded\":!1}));const n=$(\"div\",{class:\"plyr__menu__container\",id:`plyr-settings-${e.id}`,hidden:\"\"}),a=$(\"div\"),l=$(\"div\",{id:`plyr-settings-${e.id}-home`}),r=$(\"div\",{role:\"menu\"});l.appendChild(r),a.appendChild(l),this.elements.settings.panels.home=l,this.config.settings.forEach((i=>{const s=$(\"button\",x(D(this.config.selectors.buttons.settings),{type:\"button\",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:\"menuitem\",\"aria-haspopup\":!0,hidden:\"\"}));t.call(this,s,i),X.call(this,s,\"click\",(()=>{o.call(this,i,!1)}));const n=$(\"span\",null,ve.get(i,this.config)),l=$(\"span\",{class:this.config.classNames.menu.value});l.innerHTML=e[i],n.appendChild(l),s.appendChild(n),r.appendChild(s);const c=$(\"div\",{id:`plyr-settings-${e.id}-${i}`,hidden:\"\"}),u=$(\"button\",{type:\"button\",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});u.appendChild($(\"span\",{\"aria-hidden\":!0},ve.get(i,this.config))),u.appendChild($(\"span\",{class:this.config.classNames.hidden},ve.get(\"menuBack\",this.config))),X.call(this,c,\"keydown\",(e=>{\"ArrowLeft\"===e.key&&(e.preventDefault(),e.stopPropagation(),o.call(this,\"home\",!0))}),!1),X.call(this,u,\"click\",(()=>{o.call(this,\"home\",!1)})),c.appendChild(u),c.appendChild($(\"div\",{role:\"menu\"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c})),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if(\"pip\"===l&&K.pip&&c.appendChild(i.call(this,\"pip\",u)),\"airplay\"===l&&K.airplay&&c.appendChild(i.call(this,\"airplay\",u)),\"download\"===l){const e=x({},u,{element:\"a\",href:this.download,target:\"_blank\"});this.isHTML5&&(e.download=\"\");const{download:t}=this.config.urls;!S.url(t)&&this.isEmbed&&x(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,\"download\",e))}\"fullscreen\"===l&&c.appendChild(i.call(this,\"fullscreen\",u))})),this.isHTML5&&l.call(this,de.getQualityOptions.call(this)),r.call(this),c},inject(){if(this.config.loadSprite){const e=Pe.getIconUrl.call(this);e.cors&&ke(e.url,\"sprite-plyr\")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;S.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),S.element(this.config.controls)||S.string(this.config.controls)?e=this.config.controls:(e=Pe.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:xe.getLabel.call(this)}),i=!1);let s;i&&S.string(this.config.controls)&&(e=(e=>{let i=e;return Object.entries(t).forEach((([e,t])=>{i=pe(i,`{${e}}`,t)})),i})(e)),S.string(this.config.selectors.controls.container)&&(s=document.querySelector(this.config.selectors.controls.container)),S.element(s)||(s=this.elements.container);if(s[S.element(e)?\"insertAdjacentElement\":\"insertAdjacentHTML\"](\"afterbegin\",e),S.element(this.elements.controls)||Pe.findElements.call(this),!S.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute(\"aria-pressed\",\"false\"),Object.defineProperty(e,\"pressed\",{configurable:!0,enumerable:!0,get:()=>F(e,t),set(i=!1){R(e,t,i),e.setAttribute(\"aria-pressed\",i?\"true\":\"false\")}})};Object.values(this.elements.buttons).filter(Boolean).forEach((t=>{S.array(t)||S.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)}))}if(M.isEdge&&P(s),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=U.call(this,i);Array.from(s).forEach((e=>{R(e,this.config.classNames.hidden,!1),R(e,this.config.classNames.tooltip,!0)}))}},setMediaMetadata(){try{\"mediaSession\"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch(e){}},setMarkers(){var e,t;if(!this.duration||this.elements.markers)return;const i=null===(e=this.config.markers)||void 0===e||null===(t=e.points)||void 0===t?void 0:t.filter((({time:e})=>e>0&&e<this.duration));if(null==i||!i.length)return;const s=document.createDocumentFragment(),n=document.createDocumentFragment();let a=null;const l=`${this.config.classNames.tooltip}--visible`,r=e=>R(a,l,e);i.forEach((e=>{const t=$(\"span\",{class:this.config.classNames.marker},\"\"),i=e.time/this.duration*100+\"%\";a&&(t.addEventListener(\"mouseenter\",(()=>{e.label||(a.style.left=i,a.innerHTML=e.label,r(!0))})),t.addEventListener(\"mouseleave\",(()=>{r(!1)}))),t.addEventListener(\"click\",(()=>{this.currentTime=e.time})),t.style.left=i,n.appendChild(t)})),s.appendChild(n),this.config.tooltips.seek||(a=$(\"span\",{class:this.config.classNames.tooltip},\"\"),s.appendChild(a)),this.elements.markers={points:n,tip:a},this.elements.progress.appendChild(s)}};function Me(e,t=!0){let i=e;if(t){const e=document.createElement(\"a\");e.href=i,i=e.href}try{return new URL(i)}catch(e){return null}}function Ne(e){const t=new URLSearchParams;return S.object(e)&&Object.entries(e).forEach((([e,i])=>{t.set(e,i)})),t}const xe={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!K.textTracks)return void(S.array(this.config.controls)&&this.config.controls.includes(\"settings\")&&this.config.settings.includes(\"captions\")&&Pe.setCaptionsMenu.call(this));var e,t;if(S.element(this.elements.captions)||(this.elements.captions=$(\"div\",D(this.config.selectors.captions)),this.elements.captions.setAttribute(\"dir\",\"auto\"),e=this.elements.captions,t=this.elements.wrapper,S.element(e)&&S.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),M.isIE&&window.URL){const e=this.media.querySelectorAll(\"track\");Array.from(e).forEach((e=>{const t=e.getAttribute(\"src\"),i=Me(t);null!==i&&i.hostname!==window.location.href.hostname&&[\"http:\",\"https:\"].includes(i.protocol)&&Te(t,\"blob\").then((t=>{e.setAttribute(\"src\",window.URL.createObjectURL(t))})).catch((()=>{O(e)}))}))}const i=se((navigator.languages||[navigator.language||navigator.userLanguage||\"en\"]).map((e=>e.split(\"-\")[0])));let s=(this.storage.get(\"language\")||this.config.captions.language||\"auto\").toLowerCase();\"auto\"===s&&([s]=i);let n=this.storage.get(\"captions\");if(S.boolean(n)||({active:n}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:n,language:s,languages:i}),this.isHTML5){const e=this.config.captions.update?\"addtrack removetrack\":\"removetrack\";X.call(this,this.media.textTracks,e,xe.update.bind(this))}setTimeout(xe.update.bind(this),0)},update(){const e=xe.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find((e=>e.language===i)));this.isHTML5&&this.isVideo&&e.filter((e=>!s.get(e))).forEach((e=>{this.debug.log(\"Track added\",e),s.set(e,{default:\"showing\"===e.mode}),\"showing\"===e.mode&&(e.mode=\"hidden\"),X.call(this,e,\"cuechange\",(()=>xe.updateCues.call(this)))})),(a&&this.language!==i||!e.includes(n))&&(xe.setLanguage.call(this,i),xe.toggle.call(this,t&&a)),this.elements&&R(this.elements.container,this.config.classNames.captions.enabled,!S.empty(e)),S.array(this.config.controls)&&this.config.controls.includes(\"settings\")&&this.config.settings.includes(\"captions\")&&Pe.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=S.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=xe.getTracks.call(this),t=xe.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void xe.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),R(this.elements.container,s,n),this.captions.toggled=n,Pe.updateSetting.call(this,\"captions\"),Z.call(this,this.media,n?\"captionsenabled\":\"captionsdisabled\")}setTimeout((()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode=\"hidden\")}))},set(e,t=!0){const i=xe.getTracks.call(this);if(-1!==e)if(S.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,Pe.updateSetting.call(this,\"captions\"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),Z.call(this,this.media,\"languagechange\")}xe.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&xe.updateCues.call(this)}else this.debug.warn(\"Track not found\",e);else this.debug.warn(\"Invalid caption argument\",e);else xe.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!S.string(e))return void this.debug.warn(\"Invalid language argument\",e);const i=e.toLowerCase();this.captions.language=i;const s=xe.getTracks.call(this),n=xe.findTrack.call(this,[i]);xe.set.call(this,s.indexOf(n),t)},getTracks(e=!1){return Array.from((this.media||{}).textTracks||[]).filter((t=>!this.isHTML5||e||this.captions.meta.has(t))).filter((e=>[\"captions\",\"subtitles\"].includes(e.kind)))},findTrack(e,t=!1){const i=xe.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort(((e,t)=>s(t)-s(e)));let a;return e.every((e=>(a=n.find((t=>t.language===e)),!a))),a||(t?n[0]:void 0)},getCurrentTrack(){return xe.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!S.track(t)&&K.textTracks&&this.captions.toggled&&(t=xe.getCurrentTrack.call(this)),S.track(t)?S.empty(t.label)?S.empty(t.language)?ve.get(\"enabled\",this.config):e.language.toUpperCase():t.label:ve.get(\"disabled\",this.config)},updateCues(e){if(!this.supported.ui)return;if(!S.element(this.elements.captions))return void this.debug.warn(\"No captions element to render to\");if(!S.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn(\"updateCues: Invalid input\",e);let t=e;if(!t){const e=xe.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map((e=>e.getCueAsHTML())).map(ye)}const i=t.map((e=>e.trim())).join(\"\\n\");if(i!==this.elements.captions.innerHTML){j(this.elements.captions);const e=$(\"span\",D(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),Z.call(this,this.media,\"cuechange\")}}},Le={enabled:!0,title:\"\",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:\"plyr\",iconUrl:\"https://cdn.plyr.io/3.7.8/plyr.svg\",blankVideo:\"https://cdn.plyr.io/static/blank.mp4\",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:\"auto\",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:\"plyr\"},controls:[\"play-large\",\"play\",\"progress\",\"current-time\",\"mute\",\"volume\",\"captions\",\"settings\",\"pip\",\"airplay\",\"fullscreen\"],settings:[\"captions\",\"quality\",\"speed\"],i18n:{restart:\"Restart\",rewind:\"Rewind {seektime}s\",play:\"Play\",pause:\"Pause\",fastForward:\"Forward {seektime}s\",seek:\"Seek\",seekLabel:\"{currentTime} of {duration}\",played:\"Played\",buffered:\"Buffered\",currentTime:\"Current time\",duration:\"Duration\",volume:\"Volume\",mute:\"Mute\",unmute:\"Unmute\",enableCaptions:\"Enable captions\",disableCaptions:\"Disable captions\",download:\"Download\",enterFullscreen:\"Enter fullscreen\",exitFullscreen:\"Exit fullscreen\",frameTitle:\"Player for {title}\",captions:\"Captions\",settings:\"Settings\",pip:\"PIP\",menuBack:\"Go back to previous menu\",speed:\"Speed\",normal:\"Normal\",quality:\"Quality\",loop:\"Loop\",start:\"Start\",end:\"End\",all:\"All\",reset:\"Reset\",disabled:\"Disabled\",enabled:\"Enabled\",advertisement:\"Ad\",qualityBadge:{2160:\"4K\",1440:\"HD\",1080:\"HD\",720:\"HD\",576:\"SD\",480:\"SD\"}},urls:{download:null,vimeo:{sdk:\"https://player.vimeo.com/api/player.js\",iframe:\"https://player.vimeo.com/video/{0}?{1}\",api:\"https://vimeo.com/api/oembed.json?url={0}\"},youtube:{sdk:\"https://www.youtube.com/iframe_api\",api:\"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}\"},googleIMA:{sdk:\"https://imasdk.googleapis.com/js/sdkloader/ima3.js\"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:[\"ended\",\"progress\",\"stalled\",\"playing\",\"waiting\",\"canplay\",\"canplaythrough\",\"loadstart\",\"loadeddata\",\"loadedmetadata\",\"timeupdate\",\"volumechange\",\"play\",\"pause\",\"error\",\"seeking\",\"seeked\",\"emptied\",\"ratechange\",\"cuechange\",\"download\",\"enterfullscreen\",\"exitfullscreen\",\"captionsenabled\",\"captionsdisabled\",\"languagechange\",\"controlshidden\",\"controlsshown\",\"ready\",\"statechange\",\"qualitychange\",\"adsloaded\",\"adscontentpause\",\"adscontentresume\",\"adstarted\",\"adsmidpoint\",\"adscomplete\",\"adsallcomplete\",\"adsimpression\",\"adsclick\"],selectors:{editable:\"input, textarea, select, [contenteditable]\",container:\".plyr\",controls:{container:null,wrapper:\".plyr__controls\"},labels:\"[data-plyr]\",buttons:{play:'[data-plyr=\"play\"]',pause:'[data-plyr=\"pause\"]',restart:'[data-plyr=\"restart\"]',rewind:'[data-plyr=\"rewind\"]',fastForward:'[data-plyr=\"fast-forward\"]',mute:'[data-plyr=\"mute\"]',captions:'[data-plyr=\"captions\"]',download:'[data-plyr=\"download\"]',fullscreen:'[data-plyr=\"fullscreen\"]',pip:'[data-plyr=\"pip\"]',airplay:'[data-plyr=\"airplay\"]',settings:'[data-plyr=\"settings\"]',loop:'[data-plyr=\"loop\"]'},inputs:{seek:'[data-plyr=\"seek\"]',volume:'[data-plyr=\"volume\"]',speed:'[data-plyr=\"speed\"]',language:'[data-plyr=\"language\"]',quality:'[data-plyr=\"quality\"]'},display:{currentTime:\".plyr__time--current\",duration:\".plyr__time--duration\",buffer:\".plyr__progress__buffer\",loop:\".plyr__progress__loop\",volume:\".plyr__volume--display\"},progress:\".plyr__progress\",captions:\".plyr__captions\",caption:\".plyr__caption\"},classNames:{type:\"plyr--{0}\",provider:\"plyr--{0}\",video:\"plyr__video-wrapper\",embed:\"plyr__video-embed\",videoFixedRatio:\"plyr__video-wrapper--fixed-ratio\",embedContainer:\"plyr__video-embed__container\",poster:\"plyr__poster\",posterEnabled:\"plyr__poster-enabled\",ads:\"plyr__ads\",control:\"plyr__control\",controlPressed:\"plyr__control--pressed\",playing:\"plyr--playing\",paused:\"plyr--paused\",stopped:\"plyr--stopped\",loading:\"plyr--loading\",hover:\"plyr--hover\",tooltip:\"plyr__tooltip\",cues:\"plyr__cues\",marker:\"plyr__progress__marker\",hidden:\"plyr__sr-only\",hideControls:\"plyr--hide-controls\",isTouch:\"plyr--is-touch\",uiSupported:\"plyr--full-ui\",noTransition:\"plyr--no-transition\",display:{time:\"plyr__time\"},menu:{value:\"plyr__menu__value\",badge:\"plyr__badge\",open:\"plyr--menu-open\"},captions:{enabled:\"plyr--captions-enabled\",active:\"plyr--captions-active\"},fullscreen:{enabled:\"plyr--fullscreen-enabled\",fallback:\"plyr--fullscreen-fallback\"},pip:{supported:\"plyr--pip-supported\",active:\"plyr--pip-active\"},airplay:{supported:\"plyr--airplay-supported\",active:\"plyr--airplay-active\"},previewThumbnails:{thumbContainer:\"plyr__preview-thumb\",thumbContainerShown:\"plyr__preview-thumb--is-shown\",imageContainer:\"plyr__preview-thumb__image-container\",timeContainer:\"plyr__preview-thumb__time-container\",scrubbingContainer:\"plyr__preview-scrubbing\",scrubbingContainerShown:\"plyr__preview-scrubbing--is-shown\"}},attributes:{embed:{provider:\"data-plyr-provider\",id:\"data-plyr-embed-id\",hash:\"data-plyr-embed-hash\"}},ads:{enabled:!1,publisherId:\"\",tagUrl:\"\"},previewThumbnails:{enabled:!1,src:\"\"},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:\"\",artist:\"\",album:\"\",artwork:[]},markers:{enabled:!1,points:[]}},Ie=\"picture-in-picture\",$e=\"inline\",_e={html5:\"html5\",youtube:\"youtube\",vimeo:\"vimeo\"},Oe=\"audio\",je=\"video\";const qe=()=>{};class De{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log(\"Debugging enabled\")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):qe}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):qe}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):qe}}class He{constructor(t){e(this,\"onChange\",(()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;S.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;Z.call(this.player,t,this.active?\"enterfullscreen\":\"exitfullscreen\",!0)})),e(this,\"toggleFallback\",((e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?\"hidden\":\"\",R(this.target,this.player.config.classNames.fullscreen.fallback,e),M.isIos){let t=document.head.querySelector('meta[name=\"viewport\"]');const i=\"viewport-fit=cover\";t||(t=document.createElement(\"meta\"),t.setAttribute(\"name\",\"viewport\"));const s=S.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(\",\").filter((e=>e.trim()!==i)).join(\",\"))}this.onChange()})),e(this,\"trapFocus\",(e=>{if(M.isIos||M.isIPadOS||!this.active||\"Tab\"!==e.key)return;const t=document.activeElement,i=U.call(this.player,\"a[href], button:not(:disabled), input:not(:disabled), [tabindex]\"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())})),e(this,\"update\",(()=>{if(this.supported){let e;e=this.forceFallback?\"Fallback (forced)\":He.nativeSupported?\"Native\":\"Fallback\",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log(\"Fullscreen not supported and fallback disabled\");R(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)})),e(this,\"enter\",(()=>{this.supported&&(M.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!He.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?S.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:\"hide\"}))})),e(this,\"exit\",(()=>{if(this.supported)if(M.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),ie(this.player.play());else if(!He.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!S.empty(this.prefix)){const e=\"moz\"===this.prefix?\"Cancel\":\"Exit\";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)})),e(this,\"toggle\",(()=>{this.active?this.exit():this.enter()})),this.player=t,this.prefix=He.prefix,this.property=He.property,this.scrollPosition={x:0,y:0},this.forceFallback=\"force\"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){const{prototype:i}=Element;return(i.closest||function(){let e=this;do{if(V.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),X.call(this.player,document,\"ms\"===this.prefix?\"MSFullscreenChange\":`${this.prefix}fullscreenchange`,(()=>{this.onChange()})),X.call(this.player,this.player.elements.container,\"dblclick\",(e=>{S.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,\"fullscreen\")})),X.call(this,this.player.elements.container,\"keydown\",(e=>this.trapFocus(e))),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return He.nativeSupported&&!this.forceFallback}static get prefix(){if(S.function(document.exitFullscreen))return\"\";let e=\"\";return[\"webkit\",\"moz\",\"ms\"].some((t=>!(!S.function(document[`${t}ExitFullscreen`])&&!S.function(document[`${t}CancelFullScreen`]))&&(e=t,!0))),e}static get property(){return\"moz\"===this.prefix?\"FullScreen\":\"Fullscreen\"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,He.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||He.nativeSupported||!M.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!He.nativeSupported||this.forceFallback)return F(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return M.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}function Re(e,t=1){return new Promise(((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})}))}const Fe={addStyleHook(){R(this.elements.container,this.config.selectors.container.replace(\".\",\"\"),!0),R(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute(\"controls\",\"\"):this.media.removeAttribute(\"controls\")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void Fe.toggleNativeControls.call(this,!0);S.element(this.elements.controls)||(Pe.inject.call(this),this.listeners.controls()),Fe.toggleNativeControls.call(this),this.isHTML5&&xe.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,Pe.updateVolume.call(this),Pe.timeUpdate.call(this),Pe.durationUpdate.call(this),Fe.checkPlaying.call(this),R(this.elements.container,this.config.classNames.pip.supported,K.pip&&this.isHTML5&&this.isVideo),R(this.elements.container,this.config.classNames.airplay.supported,K.airplay&&this.isHTML5),R(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((()=>{Z.call(this,this.media,\"ready\")}),0),Fe.setTitle.call(this),this.poster&&Fe.setPoster.call(this,this.poster,!1).catch((()=>{})),this.config.duration&&Pe.durationUpdate.call(this),this.config.mediaMetadata&&Pe.setMediaMetadata.call(this)},setTitle(){let e=ve.get(\"play\",this.config);if(S.string(this.config.title)&&!S.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach((t=>{t.setAttribute(\"aria-label\",e)})),this.isEmbed){const e=B.call(this,\"iframe\");if(!S.element(e))return;const t=S.empty(this.config.title)?\"video\":this.config.title,i=ve.get(\"frameTitle\",this.config);e.setAttribute(\"title\",i.replace(\"{title}\",t))}},togglePoster(e){R(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error(\"Poster already set\")):(this.media.setAttribute(\"data-poster\",e),this.elements.poster.removeAttribute(\"hidden\"),te.call(this).then((()=>Re(e))).catch((t=>{throw e===this.poster&&Fe.togglePoster.call(this,!1),t})).then((()=>{if(e!==this.poster)throw new Error(\"setPoster cancelled by later call to setPoster\")})).then((()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:\"\"}),Fe.togglePoster.call(this,!0),e))))},checkPlaying(e){R(this.elements.container,this.config.classNames.playing,this.playing),R(this.elements.container,this.config.classNames.paused,this.paused),R(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute(\"aria-label\",ve.get(this.playing?\"pause\":\"play\",this.config))})),S.event(e)&&\"timeupdate\"===e.type||Fe.toggleControls.call(this)},checkLoading(e){this.loading=[\"stalled\",\"waiting\"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((()=>{R(this.elements.container,this.config.classNames.loading,this.loading),Fe.toggleControls.call(this)}),this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter((e=>!S.empty(e)&&S.string(e)&&e.startsWith(\"--plyr\"))).forEach((e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)})),S.empty(this.media.style)&&this.media.removeAttribute(\"style\")}};class Ve{constructor(t){e(this,\"firstTouch\",(()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,R(t.container,e.config.classNames.isTouch,!0)})),e(this,\"global\",((e=!0)=>{const{player:t}=this;t.config.keyboard.global&&Q.call(t,window,\"keydown keyup\",this.handleKey,e,!1),Q.call(t,document.body,\"click\",this.toggleMenu,e),G.call(t,document.body,\"touchstart\",this.firstTouch)})),e(this,\"container\",(()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&X.call(e,i.container,\"keydown keyup\",this.handleKey,!1),X.call(e,i.container,\"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen\",(t=>{const{controls:n}=i;n&&\"enterfullscreen\"===t.type&&(n.pressed=!1,n.hover=!1);let a=0;[\"touchstart\",\"touchmove\",\"mousemove\"].includes(t.type)&&(Fe.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout((()=>Fe.toggleControls.call(e,!1)),a)}));const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=ce.call(e),l=ae(`aspect-ratio: ${n} / ${a}`);if(!s)return void(l?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[r,o]=[Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)],c=r/o>n/a;l?(t.style.width=c?\"auto\":\"100%\",t.style.height=c?\"100%\":\"auto\"):(t.style.maxWidth=c?o/a*n+\"px\":null,t.style.margin=c?\"0 auto\":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};X.call(e,i.container,\"enterfullscreen exitfullscreen\",(t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&S.empty(e.config.ratio))return;n();(\"enterfullscreen\"===t.type?X:J).call(e,window,\"resize\",a)}))})),e(this,\"media\",(()=>{const{player:e}=this,{elements:t}=e;if(X.call(e,e.media,\"timeupdate seeking seeked\",(t=>Pe.timeUpdate.call(e,t))),X.call(e,e.media,\"durationchange loadeddata loadedmetadata\",(t=>Pe.durationUpdate.call(e,t))),X.call(e,e.media,\"ended\",(()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())})),X.call(e,e.media,\"progress playing seeking seeked\",(t=>Pe.updateProgress.call(e,t))),X.call(e,e.media,\"volumechange\",(t=>Pe.updateVolume.call(e,t))),X.call(e,e.media,\"playing play pause ended emptied timeupdate\",(t=>Fe.checkPlaying.call(e,t))),X.call(e,e.media,\"waiting canplay seeked playing\",(t=>Fe.checkLoading.call(e,t))),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=B.call(e,`.${e.config.classNames.video}`);if(!S.element(i))return;X.call(e,t.container,\"click\",(s=>{([t.container,i].includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,\"restart\"),this.proxy(s,(()=>{ie(e.play())}),\"play\")):this.proxy(s,(()=>{ie(e.togglePlay())}),\"play\")))}))}e.supported.ui&&e.config.disableContextMenu&&X.call(e,t.wrapper,\"contextmenu\",(e=>{e.preventDefault()}),!1),X.call(e,e.media,\"volumechange\",(()=>{e.storage.set({volume:e.volume,muted:e.muted})})),X.call(e,e.media,\"ratechange\",(()=>{Pe.updateSetting.call(e,\"speed\"),e.storage.set({speed:e.speed})})),X.call(e,e.media,\"qualitychange\",(t=>{Pe.updateSetting.call(e,\"quality\",null,t.detail.quality)})),X.call(e,e.media,\"ready qualitychange\",(()=>{Pe.setDownloadUrl.call(e)}));const i=e.config.events.concat([\"keyup\",\"keydown\"]).join(\" \");X.call(e,e.media,i,(i=>{let{detail:s={}}=i;\"error\"===i.type&&(s=e.media.error),Z.call(e,t.container,i.type,!0,s)}))})),e(this,\"proxy\",((e,t,i)=>{const{player:s}=this,n=s.config.listeners[i];let a=!0;S.function(n)&&(a=n.call(s,e)),!1!==a&&S.function(t)&&t.call(s,e)})),e(this,\"bind\",((e,t,i,s,n=!0)=>{const{player:a}=this,l=a.config.listeners[s],r=S.function(l);X.call(a,e,t,(e=>this.proxy(e,i,s)),n&&!r)})),e(this,\"controls\",(()=>{const{player:e}=this,{elements:t}=e,i=M.isIE?\"change\":\"input\";if(t.buttons.play&&Array.from(t.buttons.play).forEach((t=>{this.bind(t,\"click\",(()=>{ie(e.togglePlay())}),\"play\")})),this.bind(t.buttons.restart,\"click\",e.restart,\"restart\"),this.bind(t.buttons.rewind,\"click\",(()=>{e.lastSeekTime=Date.now(),e.rewind()}),\"rewind\"),this.bind(t.buttons.fastForward,\"click\",(()=>{e.lastSeekTime=Date.now(),e.forward()}),\"fastForward\"),this.bind(t.buttons.mute,\"click\",(()=>{e.muted=!e.muted}),\"mute\"),this.bind(t.buttons.captions,\"click\",(()=>e.toggleCaptions())),this.bind(t.buttons.download,\"click\",(()=>{Z.call(e,e.media,\"download\")}),\"download\"),this.bind(t.buttons.fullscreen,\"click\",(()=>{e.fullscreen.toggle()}),\"fullscreen\"),this.bind(t.buttons.pip,\"click\",(()=>{e.pip=\"toggle\"}),\"pip\"),this.bind(t.buttons.airplay,\"click\",e.airplay,\"airplay\"),this.bind(t.buttons.settings,\"click\",(t=>{t.stopPropagation(),t.preventDefault(),Pe.toggleMenu.call(e,t)}),null,!1),this.bind(t.buttons.settings,\"keyup\",(t=>{[\" \",\"Enter\"].includes(t.key)&&(\"Enter\"!==t.key?(t.preventDefault(),t.stopPropagation(),Pe.toggleMenu.call(e,t)):Pe.focusFirstMenuItem.call(e,null,!0))}),null,!1),this.bind(t.settings.menu,\"keydown\",(t=>{\"Escape\"===t.key&&Pe.toggleMenu.call(e,t)})),this.bind(t.inputs.seek,\"mousedown mousemove\",(e=>{const i=t.progress.getBoundingClientRect(),s=100/i.width*(e.pageX-i.left);e.currentTarget.setAttribute(\"seek-value\",s)})),this.bind(t.inputs.seek,\"mousedown mouseup keydown keyup touchstart touchend\",(t=>{const i=t.currentTarget,s=\"play-on-seeked\";if(S.keyboardEvent(t)&&![\"ArrowLeft\",\"ArrowRight\"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=[\"mouseup\",\"touchend\",\"keyup\"].includes(t.type);n&&a?(i.removeAttribute(s),ie(e.play())):!a&&e.playing&&(i.setAttribute(s,\"\"),e.pause())})),M.isIos){const t=U.call(e,'input[type=\"range\"]');Array.from(t).forEach((e=>this.bind(e,i,(e=>P(e.target)))))}this.bind(t.inputs.seek,i,(t=>{const i=t.currentTarget;let s=i.getAttribute(\"seek-value\");S.empty(s)&&(s=i.value),i.removeAttribute(\"seek-value\"),e.currentTime=s/i.max*e.duration}),\"seek\"),this.bind(t.progress,\"mouseenter mouseleave mousemove\",(t=>Pe.updateSeekTooltip.call(e,t))),this.bind(t.progress,\"mousemove touchmove\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)})),this.bind(t.progress,\"mouseleave touchend click\",(()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)})),this.bind(t.progress,\"mousedown touchstart\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)})),this.bind(t.progress,\"mouseup touchend\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)})),M.isWebKit&&Array.from(U.call(e,'input[type=\"range\"]')).forEach((t=>{this.bind(t,\"input\",(t=>Pe.updateRangeFill.call(e,t.target)))})),e.config.toggleInvert&&!S.element(t.display.duration)&&this.bind(t.display.currentTime,\"click\",(()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,Pe.timeUpdate.call(e))})),this.bind(t.inputs.volume,i,(t=>{e.volume=t.target.value}),\"volume\"),this.bind(t.controls,\"mouseenter mouseleave\",(i=>{t.controls.hover=!e.touch&&\"mouseenter\"===i.type})),t.fullscreen&&Array.from(t.fullscreen.children).filter((e=>!e.contains(t.container))).forEach((i=>{this.bind(i,\"mouseenter mouseleave\",(i=>{t.controls&&(t.controls.hover=!e.touch&&\"mouseenter\"===i.type)}))})),this.bind(t.controls,\"mousedown mouseup touchstart touchend touchcancel\",(e=>{t.controls.pressed=[\"mousedown\",\"touchstart\"].includes(e.type)})),this.bind(t.controls,\"focusin\",(()=>{const{config:i,timers:s}=e;R(t.controls,i.classNames.noTransition,!0),Fe.toggleControls.call(e,!0),setTimeout((()=>{R(t.controls,i.classNames.noTransition,!1)}),0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout((()=>Fe.toggleControls.call(e,!1)),n)})),this.bind(t.inputs.volume,\"wheel\",(t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map((e=>i?-e:e)),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:l}=e.media;(1===a&&l<1||-1===a&&l>0)&&t.preventDefault()}),\"volume\",!1)})),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:l,metaKey:r,shiftKey:o}=e,c=\"keydown\"===n,u=c&&s===this.lastKey;if(a||l||r||o)return;if(!s)return;if(c){const n=document.activeElement;if(S.element(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&V(n,s))return;if(\" \"===e.key&&V(n,'button, [role^=\"menuitem\"]'))return}switch([\" \",\"ArrowLeft\",\"ArrowUp\",\"ArrowRight\",\"ArrowDown\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"c\",\"f\",\"k\",\"l\",\"m\"].includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case\"0\":case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":u||(h=parseInt(s,10),t.currentTime=t.duration/10*h);break;case\" \":case\"k\":u||ie(t.togglePlay());break;case\"ArrowUp\":t.increaseVolume(.1);break;case\"ArrowDown\":t.decreaseVolume(.1);break;case\"m\":u||(t.muted=!t.muted);break;case\"ArrowRight\":t.forward();break;case\"ArrowLeft\":t.rewind();break;case\"f\":t.fullscreen.toggle();break;case\"c\":u||t.toggleCaptions();break;case\"l\":t.loop=!t.loop}\"Escape\"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null;var h}toggleMenu(e){Pe.toggleMenu.call(this.player,e)}}\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;var Ue=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){e.exports=function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,l,r=[],o=e.length,c=o;for(n=function(e,i){i.length&&r.push(e),--c||t(r)};o--;)a=e[o],(l=i[a])?n(a,l):(s[a]=s[a]||[]).push(n)}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)for(;n.length;)n[0](e,t),n.splice(0,1)}}function l(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function r(t,i,s,n){var a,l,o=document,c=s.async,u=(s.numRetries||0)+1,h=s.before||e,d=t.replace(/[\\?|#].*$/,\"\"),m=t.replace(/^(css|img)!/,\"\");n=n||0,/(^css!|\\.css$)/.test(d)?((l=o.createElement(\"link\")).rel=\"stylesheet\",l.href=m,(a=\"hideFocus\"in l)&&l.relList&&(a=0,l.rel=\"preload\",l.as=\"style\")):/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(d)?(l=o.createElement(\"img\")).src=m:((l=o.createElement(\"script\")).src=t,l.async=void 0===c||c),l.onload=l.onerror=l.onbeforeload=function(e){var o=e.type[0];if(a)try{l.sheet.cssText.length||(o=\"e\")}catch(e){18!=e.code&&(o=\"e\")}if(\"e\"==o){if((n+=1)<u)return r(t,i,s,n)}else if(\"preload\"==l.rel&&\"style\"==l.as)return l.rel=\"stylesheet\";i(t,o,e.defaultPrevented)},!1!==h(t,l)&&o.head.appendChild(l)}function o(e,t,i){var s,n,a=(e=e.push?e:[e]).length,l=a,o=[];for(s=function(e,i,s){if(\"e\"==i&&o.push(e),\"b\"==i){if(!s)return;o.push(e)}--a||t(o)},n=0;n<l;n++)r(e[n],s,i)}function c(e,i,s){var n,r;if(i&&i.trim&&(n=i),r=(n?s:i)||{},n){if(n in t)throw\"LoadJS\";t[n]=!0}function c(t,i){o(e,(function(e){l(r,e),t&&l({success:t,error:i},e),a(n,e)}),r)}if(r.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return n(e,(function(e){l(t,e)})),c},c.done=function(e){a(e,[])},c.reset=function(){t={},i={},s={}},c.isDefined=function(e){return e in t},c}()}));function Be(e){return new Promise(((t,i)=>{Ue(e,{success:t,error:i})}))}function We(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Z.call(this,this.media,e?\"play\":\"pause\"))}const ze={setup(){const e=this;R(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,ue.call(e),S.object(window.Vimeo)?ze.ready.call(e):Be(e.config.urls.vimeo.sdk).then((()=>{ze.ready.call(e)})).catch((t=>{e.debug.warn(\"Vimeo SDK (player.js) failed to load\",t)}))},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute(\"src\"),l=\"\";S.empty(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),l=e.media.getAttribute(e.config.attributes.embed.hash)):l=function(e){const t=e.match(/^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*&*h=|\\/)+([\\d,a-f]+)/);return t&&5===t.length?t[4]:null}(a);const r=l?{h:l}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const o=Ne({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:\"media\",playsinline:e.config.playsinline,...r,...n}),c=(u=a,S.empty(u)?null:S.number(Number(u))?u:u.match(/^.*(vimeo.com\\/|video\\/)(\\d+).*/)?RegExp.$2:u);var u;const h=$(\"iframe\"),d=me(e.config.urls.vimeo.iframe,c,o);if(h.setAttribute(\"src\",d),h.setAttribute(\"allowfullscreen\",\"\"),h.setAttribute(\"allow\",[\"autoplay\",\"fullscreen\",\"picture-in-picture\",\"encrypted-media\",\"accelerometer\",\"gyroscope\"].join(\"; \")),S.empty(s)||h.setAttribute(\"referrerPolicy\",s),i||!t.customControls)h.setAttribute(\"data-poster\",e.poster),e.media=q(h,e.media);else{const t=$(\"div\",{class:e.config.classNames.embedContainer,\"data-poster\":e.poster});t.appendChild(h),e.media=q(t,e.media)}t.customControls||Te(me(e.config.urls.vimeo.api,d)).then((t=>{!S.empty(t)&&t.thumbnail_url&&Fe.setPoster.call(e,t.thumbnail_url).catch((()=>{}))})),e.embed=new window.Vimeo.Player(h,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>(We.call(e,!0),e.embed.play()),e.media.pause=()=>(We.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:m}=e.media;Object.defineProperty(e.media,\"currentTime\",{get:()=>m,set(t){const{embed:i,media:s,paused:n,volume:a}=e,l=n&&!i.hasPlayed;s.seeking=!0,Z.call(e,s,\"seeking\"),Promise.resolve(l&&i.setVolume(0)).then((()=>i.setCurrentTime(t))).then((()=>l&&i.pause())).then((()=>l&&i.setVolume(a))).catch((()=>{}))}});let p=e.config.speed.selected;Object.defineProperty(e.media,\"playbackRate\",{get:()=>p,set(t){e.embed.setPlaybackRate(t).then((()=>{p=t,Z.call(e,e.media,\"ratechange\")})).catch((()=>{e.options.speed=[1]}))}});let{volume:g}=e.config;Object.defineProperty(e.media,\"volume\",{get:()=>g,set(t){e.embed.setVolume(t).then((()=>{g=t,Z.call(e,e.media,\"volumechange\")}))}});let{muted:f}=e.config;Object.defineProperty(e.media,\"muted\",{get:()=>f,set(t){const i=!!S.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then((()=>{f=i,Z.call(e,e.media,\"volumechange\")}))}});let y,{loop:b}=e.config;Object.defineProperty(e.media,\"loop\",{get:()=>b,set(t){const i=S.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then((()=>{b=i}))}}),e.embed.getVideoUrl().then((t=>{y=t,Pe.setDownloadUrl.call(e)})).catch((e=>{this.debug.warn(e)})),Object.defineProperty(e.media,\"currentSrc\",{get:()=>y}),Object.defineProperty(e.media,\"ended\",{get:()=>e.currentTime===e.duration}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then((t=>{const[i,s]=t;e.embed.ratio=he(i,s),ue.call(this)})),e.embed.setAutopause(e.config.autopause).then((t=>{e.config.autopause=t})),e.embed.getVideoTitle().then((t=>{e.config.title=t,Fe.setTitle.call(this)})),e.embed.getCurrentTime().then((t=>{m=t,Z.call(e,e.media,\"timeupdate\")})),e.embed.getDuration().then((t=>{e.media.duration=t,Z.call(e,e.media,\"durationchange\")})),e.embed.getTextTracks().then((t=>{e.media.textTracks=t,xe.setup.call(e)})),e.embed.on(\"cuechange\",(({cues:t=[]})=>{const i=t.map((e=>function(e){const t=document.createDocumentFragment(),i=document.createElement(\"div\");return t.appendChild(i),i.innerHTML=e,t.firstChild.innerText}(e.text)));xe.updateCues.call(e,i)})),e.embed.on(\"loaded\",(()=>{if(e.embed.getPaused().then((t=>{We.call(e,!t),t||Z.call(e,e.media,\"playing\")})),S.element(e.embed.element)&&e.supported.ui){e.embed.element.setAttribute(\"tabindex\",-1)}})),e.embed.on(\"bufferstart\",(()=>{Z.call(e,e.media,\"waiting\")})),e.embed.on(\"bufferend\",(()=>{Z.call(e,e.media,\"playing\")})),e.embed.on(\"play\",(()=>{We.call(e,!0),Z.call(e,e.media,\"playing\")})),e.embed.on(\"pause\",(()=>{We.call(e,!1)})),e.embed.on(\"timeupdate\",(t=>{e.media.seeking=!1,m=t.seconds,Z.call(e,e.media,\"timeupdate\")})),e.embed.on(\"progress\",(t=>{e.media.buffered=t.percent,Z.call(e,e.media,\"progress\"),1===parseInt(t.percent,10)&&Z.call(e,e.media,\"canplaythrough\"),e.embed.getDuration().then((t=>{t!==e.media.duration&&(e.media.duration=t,Z.call(e,e.media,\"durationchange\"))}))})),e.embed.on(\"seeked\",(()=>{e.media.seeking=!1,Z.call(e,e.media,\"seeked\")})),e.embed.on(\"ended\",(()=>{e.media.paused=!0,Z.call(e,e.media,\"ended\")})),e.embed.on(\"error\",(t=>{e.media.error=t,Z.call(e,e.media,\"error\")})),t.customControls&&setTimeout((()=>Fe.build.call(e)),0)}};function Ke(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Z.call(this,this.media,e?\"play\":\"pause\"))}function Ye(e){return e.noCookie?\"https://www.youtube-nocookie.com\":\"http:\"===window.location.protocol?\"http://www.youtube.com\":void 0}const Qe={setup(){if(R(this.elements.wrapper,this.config.classNames.embed,!0),S.object(window.YT)&&S.function(window.YT.Player))Qe.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{S.function(e)&&e(),Qe.ready.call(this)},Be(this.config.urls.youtube.sdk).catch((e=>{this.debug.warn(\"YouTube API failed to load\",e)}))}},getTitle(e){Te(me(this.config.urls.youtube.api,e)).then((e=>{if(S.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,Fe.setTitle.call(this),this.embed.ratio=he(s,i)}ue.call(this)})).catch((()=>{ue.call(this)}))},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute(\"id\");if(!S.empty(i)&&i.startsWith(\"youtube-\"))return;let s=e.media.getAttribute(\"src\");S.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=(a=s,S.empty(a)?null:a.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/)?RegExp.$2:a);var a;const l=$(\"div\",{id:`${e.provider}-${Math.floor(1e4*Math.random())}`,\"data-poster\":t.customControls?e.poster:void 0});if(e.media=q(l,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;Re(t(\"maxres\"),121).catch((()=>Re(t(\"sd\"),121))).catch((()=>Re(t(\"hq\")))).then((t=>Fe.setPoster.call(e,t.src))).then((t=>{t.includes(\"maxres\")||(e.elements.poster.style.backgroundSize=\"cover\")})).catch((()=>{}))}e.embed=new window.YT.Player(e.media,{videoId:n,host:Ye(t),playerVars:x({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:\"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.\",5:\"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.\",100:\"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.\",101:\"The owner of the requested video does not allow it to be played in embedded players.\",150:\"The owner of the requested video does not allow it to be played in embedded players.\"}[i]||\"An unknown error occurred\";e.media.error={code:i,message:s},Z.call(e,e.media,\"error\")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),Z.call(e,e.media,\"ratechange\")},onReady(i){if(S.function(e.media.play))return;const s=i.target;Qe.getTitle.call(e,n),e.media.play=()=>{Ke.call(e,!0),s.playVideo()},e.media.pause=()=>{Ke.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,\"currentTime\",{get:()=>Number(s.getCurrentTime()),set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Z.call(e,e.media,\"seeking\"),s.seekTo(t)}}),Object.defineProperty(e.media,\"playbackRate\",{get:()=>s.getPlaybackRate(),set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,\"volume\",{get:()=>a,set(t){a=t,s.setVolume(100*a),Z.call(e,e.media,\"volumechange\")}});let{muted:l}=e.config;Object.defineProperty(e.media,\"muted\",{get:()=>l,set(t){const i=S.boolean(t)?t:l;l=i,s[i?\"mute\":\"unMute\"](),s.setVolume(100*a),Z.call(e,e.media,\"volumechange\")}}),Object.defineProperty(e.media,\"currentSrc\",{get:()=>s.getVideoUrl()}),Object.defineProperty(e.media,\"ended\",{get:()=>e.currentTime===e.duration});const r=s.getAvailablePlaybackRates();e.options.speed=r.filter((t=>e.config.speed.options.includes(t))),e.supported.ui&&t.customControls&&e.media.setAttribute(\"tabindex\",-1),Z.call(e,e.media,\"timeupdate\"),Z.call(e,e.media,\"durationchange\"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Z.call(e,e.media,\"progress\"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Z.call(e,e.media,\"canplaythrough\"))}),200),t.customControls&&setTimeout((()=>Fe.build.call(e)),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);switch(e.media.seeking&&[1,2].includes(i.data)&&(e.media.seeking=!1,Z.call(e,e.media,\"seeked\")),i.data){case-1:Z.call(e,e.media,\"timeupdate\"),e.media.buffered=s.getVideoLoadedFraction(),Z.call(e,e.media,\"progress\");break;case 0:Ke.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):Z.call(e,e.media,\"ended\");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(Ke.call(e,!0),Z.call(e,e.media,\"playing\"),e.timers.playing=setInterval((()=>{Z.call(e,e.media,\"timeupdate\")}),50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),Z.call(e,e.media,\"durationchange\")));break;case 2:e.muted||e.embed.unMute(),Ke.call(e,!1);break;case 3:Z.call(e,e.media,\"waiting\")}Z.call(e,e.elements.container,\"statechange\",!1,{code:i.data})}}})}},Xe={setup(){this.media?(R(this.elements.container,this.config.classNames.type.replace(\"{0}\",this.type),!0),R(this.elements.container,this.config.classNames.provider.replace(\"{0}\",this.provider),!0),this.isEmbed&&R(this.elements.container,this.config.classNames.type.replace(\"{0}\",\"video\"),!0),this.isVideo&&(this.elements.wrapper=$(\"div\",{class:this.config.classNames.video}),L(this.media,this.elements.wrapper),this.elements.poster=$(\"div\",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?de.setup.call(this):this.isYouTube?Qe.setup.call(this):this.isVimeo&&ze.setup.call(this)):this.debug.warn(\"No media element found!\")}};class Je{constructor(t){e(this,\"load\",(()=>{this.enabled&&(S.object(window.google)&&S.object(window.google.ima)?this.ready():Be(this.player.config.urls.googleIMA.sdk).then((()=>{this.ready()})).catch((()=>{this.trigger(\"error\",new Error(\"Google IMA SDK failed to load\"))})))})),e(this,\"ready\",(()=>{var e;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,\"ready()\"),this.managerPromise.then((()=>{this.clearSafetyTimer(\"onAdsManagerLoaded()\")})),this.listeners(),this.setupIMA()})),e(this,\"setupIMA\",(()=>{this.elements.container=$(\"div\",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(e=>this.onAdsManagerLoaded(e)),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e)),!1),this.requestAds()})),e(this,\"requestAds\",(()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}})),e(this,\"pollCountdown\",((e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute(\"data-badge-text\");this.countdownTimer=setInterval((()=>{const e=Ee(Math.max(this.manager.getRemainingTime(),0)),t=`${ve.get(\"advertisement\",this.player.config)} - ${e}`;this.elements.container.setAttribute(\"data-badge-text\",t)}),100)})),e(this,\"onAdsManagerLoaded\",(e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e))),Object.keys(google.ima.AdEvent.Type).forEach((e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],(e=>this.onAdEvent(e)))})),this.trigger(\"loaded\")})),e(this,\"addCuePoints\",(()=>{S.empty(this.cuePoints)||this.cuePoints.forEach((e=>{if(0!==e&&-1!==e&&e<this.player.duration){const t=this.player.elements.progress;if(S.element(t)){const i=100/this.player.duration*e,s=$(\"span\",{class:this.player.config.classNames.cues});s.style.left=`${i.toString()}%`,t.appendChild(s)}}}))})),e(this,\"onAdEvent\",(e=>{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData();switch((e=>{Z.call(this.player,this.player.media,`ads${e.replace(/_/g,\"\").toLowerCase()}`)})(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger(\"loaded\"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`)}})),e(this,\"onAdError\",(e=>{this.cancel(),this.player.debug.warn(\"Ads error\",e)})),e(this,\"listeners\",(()=>{const{container:e}=this.player.elements;let t;this.player.on(\"canplay\",(()=>{this.addCuePoints()})),this.player.on(\"ended\",(()=>{this.loader.contentComplete()})),this.player.on(\"timeupdate\",(()=>{t=this.player.currentTime})),this.player.on(\"seeked\",(()=>{const e=this.player.currentTime;S.empty(this.cuePoints)||this.cuePoints.forEach(((i,s)=>{t<i&&i<e&&(this.manager.discardAdBreak(),this.cuePoints.splice(s,1))}))})),window.addEventListener(\"resize\",(()=>{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)}))})),e(this,\"play\",(()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then((()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(e){this.onAdError(e)}})).catch((()=>{}))})),e(this,\"resumeContent\",(()=>{this.elements.container.style.zIndex=\"\",this.playing=!1,ie(this.player.media.play())})),e(this,\"pauseContent\",(()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()})),e(this,\"cancel\",(()=>{this.initialized&&this.resumeContent(),this.trigger(\"error\"),this.loadAds()})),e(this,\"loadAds\",(()=>{this.managerPromise.then((()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise((e=>{this.on(\"loaded\",e),this.player.debug.log(this.manager)})),this.initialized=!1,this.requestAds()})).catch((()=>{}))})),e(this,\"trigger\",((e,...t)=>{const i=this.events[e];S.array(i)&&i.forEach((e=>{S.function(e)&&e.apply(this,t)}))})),e(this,\"on\",((e,t)=>(S.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this))),e(this,\"startSafetyTimer\",((e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout((()=>{this.cancel(),this.clearSafetyTimer(\"startSafetyTimer()\")}),e)})),e(this,\"clearSafetyTimer\",(e=>{S.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)})),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise(((e,t)=>{this.on(\"loaded\",e),this.on(\"error\",t)})),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!S.empty(e.publisherId)||S.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(S.url(e.tagUrl))return e.tagUrl;return`https://go.aniview.com/api/adserver6/vast/?${Ne({AV_PUBLISHERID:\"58c25bb0073ef448b1087ad6\",AV_CHANNELID:\"5a0458dc28a06145e4519d21\",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId})}`}}function Ge(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}const Ze=e=>{const t=[];return e.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/).forEach((e=>{const i={};e.split(/\\r\\n|\\n|\\r/).forEach((e=>{if(S.number(i.startTime)){if(!S.empty(e.trim())&&S.empty(i.text)){const t=e.trim().split(\"#xywh=\");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(\",\"))}}else{const t=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}})),i.text&&t.push(i)})),t},et=(e,t)=>{const i={};return e>t.width/t.height?(i.width=t.width,i.height=1/e*t.width):(i.height=t.height,i.width=e*t.height),i};class tt{constructor(t){e(this,\"load\",(()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)}))})),e(this,\"getThumbnails\",(()=>new Promise((e=>{const{src:t}=this.player.config.previewThumbnails;if(S.empty(t))throw new Error(\"Missing previewThumbnails.src config attribute\");const i=()=>{this.thumbnails.sort(((e,t)=>e.height-t.height)),this.player.debug.log(\"Preview thumbnails\",this.thumbnails),e()};if(S.function(t))t((e=>{this.thumbnails=e,i()}));else{const e=(S.string(t)?[t]:t).map((e=>this.getThumbnail(e)));Promise.all(e).then(i)}})))),e(this,\"getThumbnail\",(e=>new Promise((t=>{Te(e).then((i=>{const s={frames:Ze(i),height:null,urlPrefix:\"\"};s.frames[0].text.startsWith(\"/\")||s.frames[0].text.startsWith(\"http://\")||s.frames[0].text.startsWith(\"https://\")||(s.urlPrefix=e.substring(0,e.lastIndexOf(\"/\")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text}))})))),e(this,\"startMove\",(e=>{if(this.loaded&&S.event(e)&&[\"touchmove\",\"mousemove\"].includes(e.type)&&this.player.media.duration){if(\"touchmove\"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t,i;const s=this.player.elements.progress.getBoundingClientRect(),n=100/s.width*(e.pageX-s.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Ee(this.seekTime);const a=null===(t=this.player.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(this.seekTime)));a&&this.elements.thumb.time.insertAdjacentHTML(\"afterbegin\",`${a.label}<br>`)}this.showImageAtCurrentTime()}})),e(this,\"endMove\",(()=>{this.toggleThumbContainer(!1,!0)})),e(this,\"startScrubbing\",(e=>{(S.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))})),e(this,\"endScrubbing\",(()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):G.call(this.player,this.player.media,\"timeupdate\",(()=>{this.mouseDown||this.toggleScrubbingContainer(!1)}))})),e(this,\"listeners\",(()=>{this.player.on(\"play\",(()=>{this.toggleThumbContainer(!1,!0)})),this.player.on(\"seeked\",(()=>{this.toggleThumbContainer(!1)})),this.player.on(\"timeupdate\",(()=>{this.lastTime=this.player.media.currentTime}))})),e(this,\"render\",(()=>{this.elements.thumb.container=$(\"div\",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=$(\"div\",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=$(\"div\",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=$(\"span\",{},\"00:00\"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),S.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=$(\"div\",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)})),e(this,\"destroy\",(()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()})),e(this,\"showImageAtCurrentTime\",(()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex((e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime)),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)})),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))})),e(this,\"loadImage\",((e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,l=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=l,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${l}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}})),e(this,\"showImage\",((e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))})),e(this,\"removeOldImages\",(e=>{Array.from(this.currentImageContainer.children).forEach((t=>{if(\"img\"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout((()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)}),i)}}))})),e(this,\"preloadNearby\",((e,t=!0)=>new Promise((i=>{setTimeout((()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach((e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}})),a||i()}}),300)})))),e(this,\"getHigherQuality\",((e,t,i,s)=>{if(e<this.thumbnails.length-1){let n=t.naturalHeight;this.usingSprites&&(n=i.h),n<this.thumbContainerHeight&&setTimeout((()=>{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))}),300)}})),e(this,\"toggleThumbContainer\",((e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,\"toggleScrubbingContainer\",((e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,\"determineContainerAutoSizing\",(()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)})),e(this,\"setThumbContainerSizeAndPos\",(()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()})),e(this,\"setThumbContainerPos\",(()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,l=Ge(a,s,n);i.style.left=`${l}px`,i.style.setProperty(\"--preview-arrow-offset\",a-l+\"px\")})),e(this,\"setScrubbingContainerSize\",(()=>{const{width:e,height:t}=et(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`})),e(this,\"setImageSizeAndOffset\",((e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+\"px\",e.style.width=e.naturalWidth*i+\"px\",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`})),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes(\"w\")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=et(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}const it={insertElements(e,t){S.string(t)?_(e,this.media,{src:t}):S.array(t)&&t.forEach((t=>{_(e,this.media,t)}))},change(e){N(e,\"sources.length\")?(de.cancelRequests.call(this),this.destroy.call(this,(()=>{this.options.quality=[],O(this.media),this.media=null,S.element(this.elements.container)&&this.elements.container.removeAttribute(\"class\");const{sources:t,type:i}=e,[{provider:s=_e.html5,src:n}]=t,a=\"html5\"===s?i:\"div\",l=\"html5\"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:K.check(i,s,this.config.playsinline),media:$(a,l)}),this.elements.container.appendChild(this.media),S.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute(\"crossorigin\",\"\"),this.config.autoplay&&this.media.setAttribute(\"autoplay\",\"\"),S.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute(\"loop\",\"\"),this.config.muted&&this.media.setAttribute(\"muted\",\"\"),this.config.playsinline&&this.media.setAttribute(\"playsinline\",\"\")),Fe.addStyleHook.call(this),this.isHTML5&&it.insertElements.call(this,\"source\",t),this.config.title=e.title,Xe.setup.call(this),this.isHTML5&&Object.keys(e).includes(\"tracks\")&&it.insertElements.call(this,\"track\",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&Fe.build.call(this),this.isHTML5&&this.media.load(),S.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))),this.fullscreen.update()}),!0)):this.debug.warn(\"Invalid source format\")}};class st{constructor(t,i){if(e(this,\"play\",(()=>S.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((()=>this.ads.play())).catch((()=>ie(this.media.play()))),this.media.play()):null)),e(this,\"pause\",(()=>this.playing&&S.function(this.media.pause)?this.media.pause():null)),e(this,\"togglePlay\",(e=>(S.boolean(e)?e:!this.playing)?this.play():this.pause())),e(this,\"stop\",(()=>{this.isHTML5?(this.pause(),this.restart()):S.function(this.media.stop)&&this.media.stop()})),e(this,\"restart\",(()=>{this.currentTime=0})),e(this,\"rewind\",(e=>{this.currentTime-=S.number(e)?e:this.config.seekTime})),e(this,\"forward\",(e=>{this.currentTime+=S.number(e)?e:this.config.seekTime})),e(this,\"increaseVolume\",(e=>{const t=this.media.muted?0:this.volume;this.volume=t+(S.number(e)?e:0)})),e(this,\"decreaseVolume\",(e=>{this.increaseVolume(-e)})),e(this,\"airplay\",(()=>{K.airplay&&this.media.webkitShowPlaybackTargetPicker()})),e(this,\"toggleControls\",(e=>{if(this.supported.ui&&!this.isAudio){const t=F(this.elements.container,this.config.classNames.hideControls),i=void 0===e?void 0:!e,s=R(this.elements.container,this.config.classNames.hideControls,i);if(s&&S.array(this.config.controls)&&this.config.controls.includes(\"settings\")&&!S.empty(this.config.settings)&&Pe.toggleMenu.call(this,!1),s!==t){const e=s?\"controlshidden\":\"controlsshown\";Z.call(this,this.media,e)}return!s}return!1})),e(this,\"on\",((e,t)=>{X.call(this,this.elements.container,e,t)})),e(this,\"once\",((e,t)=>{G.call(this,this.elements.container,e,t)})),e(this,\"off\",((e,t)=>{J(this.elements.container,e,t)})),e(this,\"destroy\",((e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow=\"\",this.embed=null,t?(Object.keys(this.elements).length&&(O(this.elements.buttons.play),O(this.elements.captions),O(this.elements.controls),O(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),S.function(e)&&e()):(ee.call(this),de.cancelRequests.call(this),q(this.elements.original,this.elements.container),Z.call(this,this.elements.original,\"destroyed\",!0),S.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout((()=>{this.elements=null,this.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(Fe.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&S.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))})),e(this,\"supports\",(e=>K.mime.call(this,e))),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=K.touch,this.media=t,S.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||S.nodeList(this.media)||S.array(this.media))&&(this.media=this.media[0]),this.config=x({},Le,st.defaults,i||{},(()=>{try{return JSON.parse(this.media.getAttribute(\"data-plyr-config\"))}catch(e){return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new De(this.config.debug),this.debug.log(\"Config\",this.config),this.debug.log(\"Support\",K),S.nullOrUndefined(this.media)||!S.element(this.media))return void this.debug.error(\"Setup failed: no suitable element passed\");if(this.media.plyr)return void this.debug.warn(\"Target already setup\");if(!this.config.enabled)return void this.debug.error(\"Setup failed: disabled by config\");if(!K.check().api)return void this.debug.error(\"Setup failed: no support\");const s=this.media.cloneNode(!0);s.autoplay=!1,this.elements.original=s;const n=this.media.tagName.toLowerCase();let a=null,l=null;switch(n){case\"div\":if(a=this.media.querySelector(\"iframe\"),S.element(a)){if(l=Me(a.getAttribute(\"src\")),this.provider=function(e){return/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(e)?_e.youtube:/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(e)?_e.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className=\"\",l.search.length){const e=[\"1\",\"true\"];e.includes(l.searchParams.get(\"autoplay\"))&&(this.config.autoplay=!0),e.includes(l.searchParams.get(\"loop\"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(l.searchParams.get(\"playsinline\")),this.config.youtube.hl=l.searchParams.get(\"hl\")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(S.empty(this.provider)||!Object.values(_e).includes(this.provider))return void this.debug.error(\"Setup failed: Invalid provider\");this.type=je;break;case\"video\":case\"audio\":this.type=n,this.provider=_e.html5,this.media.hasAttribute(\"crossorigin\")&&(this.config.crossorigin=!0),this.media.hasAttribute(\"autoplay\")&&(this.config.autoplay=!0),(this.media.hasAttribute(\"playsinline\")||this.media.hasAttribute(\"webkit-playsinline\"))&&(this.config.playsinline=!0),this.media.hasAttribute(\"muted\")&&(this.config.muted=!0),this.media.hasAttribute(\"loop\")&&(this.config.loop.active=!0);break;default:return void this.debug.error(\"Setup failed: unsupported type\")}this.supported=K.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Ve(this),this.storage=new we(this),this.media.plyr=this,S.element(this.elements.container)||(this.elements.container=$(\"div\"),L(this.media,this.elements.container)),Fe.migrateStyles.call(this),Fe.addStyleHook.call(this),Xe.setup.call(this),this.config.debug&&X.call(this,this.elements.container,this.config.events.join(\" \"),(e=>{this.debug.log(`event: ${e.type}`)})),this.fullscreen=new He(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&Fe.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Je(this)),this.isHTML5&&this.config.autoplay&&this.once(\"canplay\",(()=>ie(this.play()))),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))):this.debug.error(\"Setup failed: no support\")}get isHTML5(){return this.provider===_e.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===_e.youtube}get isVimeo(){return this.provider===_e.vimeo}get isVideo(){return this.type===je}get isAudio(){return this.type===Oe}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=S.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return S.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=parseFloat(this.config.duration),t=(this.media||{}).duration,i=S.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;S.string(t)&&(t=Number(t)),S.number(t)||(t=this.storage.get(\"volume\")),S.number(t)||({volume:t}=this.config),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!S.empty(e)&&this.muted&&t>0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;S.boolean(t)||(t=this.storage.get(\"muted\")),S.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;S.number(e)&&(t=e),S.number(t)||(t=this.storage.get(\"speed\")),S.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=Ge(t,i,s),this.config.speed.selected=t,setTimeout((()=>{this.media&&(this.media.playbackRate=t)}),0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!S.empty(e)&&Number(e),this.storage.get(\"quality\"),t.selected,t.default].find(S.number),n=!0;if(!i.includes(s)){const e=ne(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=S.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){it.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return S.url(e)?e:this.source}set download(e){S.url(e)&&(this.config.urls.download=e,Pe.setDownloadUrl.call(this))}set poster(e){this.isVideo?Fe.setPoster.call(this,e,!1).catch((()=>{})):this.debug.warn(\"Poster can only be set for video\")}get poster(){return this.isVideo?this.media.getAttribute(\"poster\")||this.media.getAttribute(\"data-poster\"):null}get ratio(){if(!this.isVideo)return null;const e=oe(ce.call(this));return S.array(e)?e.join(\":\"):e}set ratio(e){this.isVideo?S.string(e)&&re(e)?(this.config.ratio=oe(e),ue.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn(\"Aspect ratio can only be set for video\")}set autoplay(e){this.config.autoplay=S.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){xe.toggle.call(this,e,!1)}set currentTrack(e){xe.set.call(this,e,!1),xe.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){xe.setLanguage.call(this,e,!1)}get language(){return(xe.getCurrentTrack.call(this)||{}).language}set pip(e){if(!K.pip)return;const t=S.boolean(e)?e:!this.pip;S.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Ie:$e),S.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return K.pip?S.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Ie:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))}static supported(e,t){return K.check(e,t)}static loadSprite(e,t){return ke(e,t)}static setup(e,t={}){let i=null;return S.string(e)?i=Array.from(document.querySelectorAll(e)):S.nodeList(e)?i=Array.from(e):S.array(e)&&(i=e.filter(S.element)),S.empty(i)?null:i.map((e=>new st(e,t)))}}var nt;return st.defaults=(nt=Le,JSON.parse(JSON.stringify(nt))),st}));\n//# sourceMappingURL=plyr.min.js.map\n","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if(\"function\"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[e[t]+\"CancelAnimationFrame\"]||window[e[t]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),o=Math.max(0,16-(n-r)),a=window.setTimeout((function(){e(n+o)}),o);return r=n+o,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})})(),(function(e,t){\"function\"==typeof define&&define.amd?define([],(function(){return t(e)})):\"object\"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,(function(M){\"use strict\";var q={ignore:\"[data-scroll-ignore]\",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:\"easeInOutCubic\",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},I=function(){var n={};return Array.prototype.forEach.call(arguments,(function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}})),n},r=function(e){\"#\"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,a=-1,r=\"\",i=n.charCodeAt(0);++a<o;){if(0===(t=n.charCodeAt(a)))throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");1<=t&&t<=31||127==t||0===a&&48<=t&&t<=57||1===a&&48<=t&&t<=57&&45===i?r+=\"\\\\\"+t.toString(16)+\" \":r+=128<=t||45===t||95===t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122?n.charAt(a):\"\\\\\"+n.charAt(a)}return\"#\"+r},F=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},L=function(e){return e?(t=e,parseInt(M.getComputedStyle(t).height,10)+e.offsetTop):0;var t},x=function(e,t,n){0===e&&document.body.focus(),n||(e.focus(),document.activeElement!==e&&(e.setAttribute(\"tabindex\",\"-1\"),e.focus(),e.style.outline=\"none\"),M.scrollTo(0,t))},H=function(e,t,n,o){if(t.emitEvents&&\"function\"==typeof M.CustomEvent){var a=new CustomEvent(e,{bubbles:!0,detail:{anchor:n,toggle:o}});document.dispatchEvent(a)}};return function(o,e){var b,a,A,O,C={};C.cancelScroll=function(e){cancelAnimationFrame(O),O=null,e||H(\"scrollCancel\",b)},C.animateScroll=function(a,r,e){C.cancelScroll();var i=I(b||q,e||{}),c=\"[object Number]\"===Object.prototype.toString.call(a),t=c||!a.tagName?null:a;if(c||t){var s=M.pageYOffset;i.header&&!A&&(A=document.querySelector(i.header));var n,o,u,l,m,d,f,h,p=L(A),g=c?a:(function(e,t,n,o){var a=0;if(e.offsetParent)for(;a+=e.offsetTop,e=e.offsetParent;);return a=Math.max(a-t-n,0),o&&(a=Math.min(a,F()-M.innerHeight)),a})(t,p,parseInt(\"function\"==typeof i.offset?i.offset(a,r):i.offset,10),i.clip),y=g-s,v=F(),w=0,S=(n=y,u=(o=i).speedAsDuration?o.speed:Math.abs(n/1e3*o.speed),o.durationMax&&u>o.durationMax?o.durationMax:o.durationMin&&u<o.durationMin?o.durationMin:parseInt(u,10)),E=function(e){var t,n,o;l||(l=e),w+=e-l,d=s+y*(n=m=1<(m=0===S?0:w/S)?1:m,\"easeInQuad\"===(t=i).easing&&(o=n*n),\"easeOutQuad\"===t.easing&&(o=n*(2-n)),\"easeInOutQuad\"===t.easing&&(o=n<.5?2*n*n:(4-2*n)*n-1),\"easeInCubic\"===t.easing&&(o=n*n*n),\"easeOutCubic\"===t.easing&&(o=--n*n*n+1),\"easeInOutCubic\"===t.easing&&(o=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),\"easeInQuart\"===t.easing&&(o=n*n*n*n),\"easeOutQuart\"===t.easing&&(o=1- --n*n*n*n),\"easeInOutQuart\"===t.easing&&(o=n<.5?8*n*n*n*n:1-8*--n*n*n*n),\"easeInQuint\"===t.easing&&(o=n*n*n*n*n),\"easeOutQuint\"===t.easing&&(o=1+--n*n*n*n*n),\"easeInOutQuint\"===t.easing&&(o=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),t.customEasing&&(o=t.customEasing(n)),o||n),M.scrollTo(0,Math.floor(d)),(function(e,t){var n=M.pageYOffset;if(e==t||n==t||(s<t&&M.innerHeight+n)>=v)return C.cancelScroll(!0),x(a,t,c),H(\"scrollStop\",i,a,r),!(O=l=null)})(d,g)||(O=M.requestAnimationFrame(E),l=e)};0===M.pageYOffset&&M.scrollTo(0,0),f=a,h=i,c||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?\"#top\":\"#\"+f.id),\"matchMedia\"in M&&M.matchMedia(\"(prefers-reduced-motion)\").matches?x(a,Math.floor(g),!1):(H(\"scrollStart\",i,a,r),C.cancelScroll(!0),M.requestAnimationFrame(E))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&\"closest\"in e.target&&(a=e.target.closest(o))&&\"a\"===a.tagName.toLowerCase()&&!e.target.closest(b.ignore)&&a.hostname===M.location.hostname&&a.pathname===M.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if(\"#\"===t){if(!b.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||\"#top\"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=M.location.hash;t=t||\"\",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||M.pageYOffset},document.title,t||M.location.href)}})(b),C.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(b)){var t=history.state.anchor;\"string\"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||C.animateScroll(t,null,{updateURL:!1})}};C.destroy=function(){b&&(document.removeEventListener(\"click\",t,!1),M.removeEventListener(\"popstate\",n,!1),C.cancelScroll(),O=A=a=b=null)};return (function(){if(!(\"querySelector\"in document&&\"addEventListener\"in M&&\"requestAnimationFrame\"in M&&\"closest\"in M.Element.prototype))throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";C.destroy(),b=I(q,e||{}),A=b.header?document.querySelector(b.header):null,document.addEventListener(\"click\",t,!1),b.updateURL&&b.popstate&&M.addEventListener(\"popstate\",n,!1)})(),C}}));","import api from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../css-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[1]!../../postcss-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[2]!./tippy.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","/*! tabbyjs v12.0.3 | (c) 2019 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/tabby */\nElement.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),(function(e,t){\"function\"==typeof define&&define.amd?define([],(function(){return t(e)})):\"object\"==typeof exports?module.exports=t(e):e.Tabby=t(e)})(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,(function(e){\"use strict\";var t={idPrefix:\"tabby-toggle_\",default:\"[data-tabby-default]\"},r=function(t){if(t&&\"true\"!=t.getAttribute(\"aria-selected\")){var r=document.querySelector(t.hash);if(r){var o=(function(e){var t=e.closest('[role=\"tablist\"]');if(!t)return{};var r=t.querySelector('[role=\"tab\"][aria-selected=\"true\"]');if(!r)return{};var o=document.querySelector(r.hash);return r.setAttribute(\"aria-selected\",\"false\"),r.setAttribute(\"tabindex\",\"-1\"),o?(o.setAttribute(\"hidden\",\"hidden\"),{previousTab:r,previousContent:o}):{previousTab:r}})(t);!(function(e,t){e.setAttribute(\"aria-selected\",\"true\"),e.setAttribute(\"tabindex\",\"0\"),t.removeAttribute(\"hidden\"),e.focus()})(t,r),o.tab=t,o.content=r,(function(t,r){var o;\"function\"==typeof e.CustomEvent?o=new CustomEvent(\"tabby\",{bubbles:!0,cancelable:!0,detail:r}):(o=document.createEvent(\"CustomEvent\")).initCustomEvent(\"tabby\",!0,!0,r),t.dispatchEvent(o)})(t,o)}}},o=function(e,t){var o=(function(e){var t=e.closest('[role=\"tablist\"]'),r=t?t.querySelectorAll('[role=\"tab\"]'):null;if(r)return{tabs:r,index:Array.prototype.indexOf.call(r,e)}})(e);if(o){var n,i=o.tabs.length-1;[\"ArrowUp\",\"ArrowLeft\",\"Up\",\"Left\"].indexOf(t)>-1?n=o.index<1?i:o.index-1:[\"ArrowDown\",\"ArrowRight\",\"Down\",\"Right\"].indexOf(t)>-1?n=o.index===i?0:o.index+1:\"Home\"===t?n=0:\"End\"===t&&(n=i),r(o.tabs[n])}};return function(n,i){var a,u,l={};l.destroy=function(){var e=u.querySelectorAll(\"a\");Array.prototype.forEach.call(e,(function(e){var t=document.querySelector(e.hash);t&&(function(e,t,r){e.id.slice(0,r.idPrefix.length)===r.idPrefix&&(e.id=\"\"),e.removeAttribute(\"role\"),e.removeAttribute(\"aria-controls\"),e.removeAttribute(\"aria-selected\"),e.removeAttribute(\"tabindex\"),e.closest(\"li\").removeAttribute(\"role\"),t.removeAttribute(\"role\"),t.removeAttribute(\"aria-labelledby\"),t.removeAttribute(\"hidden\")})(e,t,a)})),u.removeAttribute(\"role\"),document.documentElement.removeEventListener(\"click\",c,!0),u.removeEventListener(\"keydown\",d,!0),a=null,u=null},l.setup=function(){if(u=document.querySelector(n)){var e=u.querySelectorAll(\"a\");u.setAttribute(\"role\",\"tablist\"),Array.prototype.forEach.call(e,(function(e){var t=document.querySelector(e.hash);t&&(function(e,t,r){e.id||(e.id=r.idPrefix+t.id),e.setAttribute(\"role\",\"tab\"),e.setAttribute(\"aria-controls\",t.id),e.closest(\"li\").setAttribute(\"role\",\"presentation\"),t.setAttribute(\"role\",\"tabpanel\"),t.setAttribute(\"aria-labelledby\",e.id),e.matches(r.default)?e.setAttribute(\"aria-selected\",\"true\"):(e.setAttribute(\"aria-selected\",\"false\"),e.setAttribute(\"tabindex\",\"-1\"),t.setAttribute(\"hidden\",\"hidden\"))})(e,t,a)}))}},l.toggle=function(e){var t=e;\"string\"==typeof e&&(t=document.querySelector(n+' [role=\"tab\"][href*=\"'+e+'\"]')),r(t)};var c=function(e){var t=e.target.closest(n+' [role=\"tab\"]');t&&(e.preventDefault(),r(t))},d=function(e){var t=document.activeElement;t.matches(n+' [role=\"tab\"]')&&([\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\",\"Up\",\"Down\",\"Left\",\"Right\",\"Home\",\"End\"].indexOf(e.key)<0||o(t,e.key))};return a=(function(){var e={};return Array.prototype.forEach.call(arguments,(function(t){for(var r in t){if(!t.hasOwnProperty(r))return;e[r]=t[r]}})),e})(t,i||{}),l.setup(),(function(t){if(!(e.location.hash.length<1)){var o=document.querySelector(t+' [role=\"tab\"][href*=\"'+e.location.hash+'\"]');r(o)}})(n),document.documentElement.addEventListener(\"click\",c,!0),u.addEventListener(\"keydown\",d,!0),l}}));","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n  passive: true,\n  capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n  return document.body;\n};\n\nfunction hasOwnProperty(obj, key) {\n  return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n  if (Array.isArray(value)) {\n    var v = value[index];\n    return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n  }\n\n  return value;\n}\nfunction isType(value, type) {\n  var str = {}.toString.call(value);\n  return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n  return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n  // Avoid wrapping in `setTimeout` if ms is 0 anyway\n  if (ms === 0) {\n    return fn;\n  }\n\n  var timeout;\n  return function (arg) {\n    clearTimeout(timeout);\n    timeout = setTimeout(function () {\n      fn(arg);\n    }, ms);\n  };\n}\nfunction removeProperties(obj, keys) {\n  var clone = Object.assign({}, obj);\n  keys.forEach(function (key) {\n    delete clone[key];\n  });\n  return clone;\n}\nfunction splitBySpaces(value) {\n  return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n  return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n  if (arr.indexOf(value) === -1) {\n    arr.push(value);\n  }\n}\nfunction unique(arr) {\n  return arr.filter(function (item, index) {\n    return arr.indexOf(item) === index;\n  });\n}\nfunction getBasePlacement(placement) {\n  return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n  return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n  return Object.keys(obj).reduce(function (acc, key) {\n    if (obj[key] !== undefined) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n\nfunction div() {\n  return document.createElement('div');\n}\nfunction isElement(value) {\n  return ['Element', 'Fragment'].some(function (type) {\n    return isType(value, type);\n  });\n}\nfunction isNodeList(value) {\n  return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n  return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n  return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n  if (isElement(value)) {\n    return [value];\n  }\n\n  if (isNodeList(value)) {\n    return arrayFrom(value);\n  }\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n  els.forEach(function (el) {\n    if (el) {\n      el.style.transitionDuration = value + \"ms\";\n    }\n  });\n}\nfunction setVisibilityState(els, state) {\n  els.forEach(function (el) {\n    if (el) {\n      el.setAttribute('data-state', state);\n    }\n  });\n}\nfunction getOwnerDocument(elementOrElements) {\n  var _element$ownerDocumen;\n\n  var _normalizeToArray = normalizeToArray(elementOrElements),\n      element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body\n\n\n  return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n  var clientX = event.clientX,\n      clientY = event.clientY;\n  return popperTreeData.every(function (_ref) {\n    var popperRect = _ref.popperRect,\n        popperState = _ref.popperState,\n        props = _ref.props;\n    var interactiveBorder = props.interactiveBorder;\n    var basePlacement = getBasePlacement(popperState.placement);\n    var offsetData = popperState.modifiersData.offset;\n\n    if (!offsetData) {\n      return true;\n    }\n\n    var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n    var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n    var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n    var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n    var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n    var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n    var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n    var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n    return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n  });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n  var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n  // `webkitTransitionEnd`...\n\n  ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n    box[method](event, listener);\n  });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n  var target = child;\n\n  while (target) {\n    var _target$getRootNode;\n\n    if (parent.contains(target)) {\n      return true;\n    }\n\n    target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n  }\n\n  return false;\n}\n\nvar currentInput = {\n  isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n  if (currentInput.isTouch) {\n    return;\n  }\n\n  currentInput.isTouch = true;\n\n  if (window.performance) {\n    document.addEventListener('mousemove', onDocumentMouseMove);\n  }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n  var now = performance.now();\n\n  if (now - lastMouseMoveTime < 20) {\n    currentInput.isTouch = false;\n    document.removeEventListener('mousemove', onDocumentMouseMove);\n  }\n\n  lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n  var activeElement = document.activeElement;\n\n  if (isReferenceElement(activeElement)) {\n    var instance = activeElement._tippy;\n\n    if (activeElement.blur && !instance.state.isVisible) {\n      activeElement.blur();\n    }\n  }\n}\nfunction bindGlobalEventListeners() {\n  document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n  window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ? // @ts-ignore\n!!window.msCrypto : false;\n\nfunction createMemoryLeakWarning(method) {\n  var txt = method === 'destroy' ? 'n already-' : ' ';\n  return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n  var spacesAndTabs = /[ \\t]{2,}/g;\n  var lineStartWithSpaces = /^[ \\t]*/gm;\n  return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n  return clean(\"\\n  %ctippy.js\\n\\n  %c\" + clean(message) + \"\\n\\n  %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n  \");\n}\n\nfunction getFormattedMessage(message) {\n  return [getDevMessage(message), // title\n  'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n  'line-height: 1.5', // footer\n  'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n  resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n  visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n  if (condition && !visitedMessages.has(message)) {\n    var _console;\n\n    visitedMessages.add(message);\n\n    (_console = console).warn.apply(_console, getFormattedMessage(message));\n  }\n}\nfunction errorWhen(condition, message) {\n  if (condition && !visitedMessages.has(message)) {\n    var _console2;\n\n    visitedMessages.add(message);\n\n    (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n  }\n}\nfunction validateTargets(targets) {\n  var didPassFalsyValue = !targets;\n  var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n  errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n  errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n  animateFill: false,\n  followCursor: false,\n  inlinePositioning: false,\n  sticky: false\n};\nvar renderProps = {\n  allowHTML: false,\n  animation: 'fade',\n  arrow: true,\n  content: '',\n  inertia: false,\n  maxWidth: 350,\n  role: 'tooltip',\n  theme: '',\n  zIndex: 9999\n};\nvar defaultProps = Object.assign({\n  appendTo: TIPPY_DEFAULT_APPEND_TO,\n  aria: {\n    content: 'auto',\n    expanded: 'auto'\n  },\n  delay: 0,\n  duration: [300, 250],\n  getReferenceClientRect: null,\n  hideOnClick: true,\n  ignoreAttributes: false,\n  interactive: false,\n  interactiveBorder: 2,\n  interactiveDebounce: 0,\n  moveTransition: '',\n  offset: [0, 10],\n  onAfterUpdate: function onAfterUpdate() {},\n  onBeforeUpdate: function onBeforeUpdate() {},\n  onCreate: function onCreate() {},\n  onDestroy: function onDestroy() {},\n  onHidden: function onHidden() {},\n  onHide: function onHide() {},\n  onMount: function onMount() {},\n  onShow: function onShow() {},\n  onShown: function onShown() {},\n  onTrigger: function onTrigger() {},\n  onUntrigger: function onUntrigger() {},\n  onClickOutside: function onClickOutside() {},\n  placement: 'top',\n  plugins: [],\n  popperOptions: {},\n  render: null,\n  showOnCreate: false,\n  touch: true,\n  trigger: 'mouseenter focus',\n  triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n  /* istanbul ignore else */\n  if (process.env.NODE_ENV !== \"production\") {\n    validateProps(partialProps, []);\n  }\n\n  var keys = Object.keys(partialProps);\n  keys.forEach(function (key) {\n    defaultProps[key] = partialProps[key];\n  });\n};\nfunction getExtendedPassedProps(passedProps) {\n  var plugins = passedProps.plugins || [];\n  var pluginProps = plugins.reduce(function (acc, plugin) {\n    var name = plugin.name,\n        defaultValue = plugin.defaultValue;\n\n    if (name) {\n      var _name;\n\n      acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n    }\n\n    return acc;\n  }, {});\n  return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n  var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n    plugins: plugins\n  }))) : defaultKeys;\n  var props = propKeys.reduce(function (acc, key) {\n    var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n    if (!valueAsString) {\n      return acc;\n    }\n\n    if (key === 'content') {\n      acc[key] = valueAsString;\n    } else {\n      try {\n        acc[key] = JSON.parse(valueAsString);\n      } catch (e) {\n        acc[key] = valueAsString;\n      }\n    }\n\n    return acc;\n  }, {});\n  return props;\n}\nfunction evaluateProps(reference, props) {\n  var out = Object.assign({}, props, {\n    content: invokeWithArgsOrReturn(props.content, [reference])\n  }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n  out.aria = Object.assign({}, defaultProps.aria, out.aria);\n  out.aria = {\n    expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n    content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n  };\n  return out;\n}\nfunction validateProps(partialProps, plugins) {\n  if (partialProps === void 0) {\n    partialProps = {};\n  }\n\n  if (plugins === void 0) {\n    plugins = [];\n  }\n\n  var keys = Object.keys(partialProps);\n  keys.forEach(function (prop) {\n    var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n    var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n    if (didPassUnknownProp) {\n      didPassUnknownProp = plugins.filter(function (plugin) {\n        return plugin.name === prop;\n      }).length === 0;\n    }\n\n    warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n  });\n}\n\nvar innerHTML = function innerHTML() {\n  return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n  element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n  var arrow = div();\n\n  if (value === true) {\n    arrow.className = ARROW_CLASS;\n  } else {\n    arrow.className = SVG_ARROW_CLASS;\n\n    if (isElement(value)) {\n      arrow.appendChild(value);\n    } else {\n      dangerouslySetInnerHTML(arrow, value);\n    }\n  }\n\n  return arrow;\n}\n\nfunction setContent(content, props) {\n  if (isElement(props.content)) {\n    dangerouslySetInnerHTML(content, '');\n    content.appendChild(props.content);\n  } else if (typeof props.content !== 'function') {\n    if (props.allowHTML) {\n      dangerouslySetInnerHTML(content, props.content);\n    } else {\n      content.textContent = props.content;\n    }\n  }\n}\nfunction getChildren(popper) {\n  var box = popper.firstElementChild;\n  var boxChildren = arrayFrom(box.children);\n  return {\n    box: box,\n    content: boxChildren.find(function (node) {\n      return node.classList.contains(CONTENT_CLASS);\n    }),\n    arrow: boxChildren.find(function (node) {\n      return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n    }),\n    backdrop: boxChildren.find(function (node) {\n      return node.classList.contains(BACKDROP_CLASS);\n    })\n  };\n}\nfunction render(instance) {\n  var popper = div();\n  var box = div();\n  box.className = BOX_CLASS;\n  box.setAttribute('data-state', 'hidden');\n  box.setAttribute('tabindex', '-1');\n  var content = div();\n  content.className = CONTENT_CLASS;\n  content.setAttribute('data-state', 'hidden');\n  setContent(content, instance.props);\n  popper.appendChild(box);\n  box.appendChild(content);\n  onUpdate(instance.props, instance.props);\n\n  function onUpdate(prevProps, nextProps) {\n    var _getChildren = getChildren(popper),\n        box = _getChildren.box,\n        content = _getChildren.content,\n        arrow = _getChildren.arrow;\n\n    if (nextProps.theme) {\n      box.setAttribute('data-theme', nextProps.theme);\n    } else {\n      box.removeAttribute('data-theme');\n    }\n\n    if (typeof nextProps.animation === 'string') {\n      box.setAttribute('data-animation', nextProps.animation);\n    } else {\n      box.removeAttribute('data-animation');\n    }\n\n    if (nextProps.inertia) {\n      box.setAttribute('data-inertia', '');\n    } else {\n      box.removeAttribute('data-inertia');\n    }\n\n    box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n    if (nextProps.role) {\n      box.setAttribute('role', nextProps.role);\n    } else {\n      box.removeAttribute('role');\n    }\n\n    if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n      setContent(content, instance.props);\n    }\n\n    if (nextProps.arrow) {\n      if (!arrow) {\n        box.appendChild(createArrowElement(nextProps.arrow));\n      } else if (prevProps.arrow !== nextProps.arrow) {\n        box.removeChild(arrow);\n        box.appendChild(createArrowElement(nextProps.arrow));\n      }\n    } else if (arrow) {\n      box.removeChild(arrow);\n    }\n  }\n\n  return {\n    popper: popper,\n    onUpdate: onUpdate\n  };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n  var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n  // 🔒 Private members\n  // ===========================================================================\n\n  var showTimeout;\n  var hideTimeout;\n  var scheduleHideAnimationFrame;\n  var isVisibleFromClick = false;\n  var didHideDueToDocumentMouseDown = false;\n  var didTouchMove = false;\n  var ignoreOnFirstUpdate = false;\n  var lastTriggerEvent;\n  var currentTransitionEndListener;\n  var onFirstUpdate;\n  var listeners = [];\n  var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n  var currentTarget; // ===========================================================================\n  // 🔑 Public members\n  // ===========================================================================\n\n  var id = idCounter++;\n  var popperInstance = null;\n  var plugins = unique(props.plugins);\n  var state = {\n    // Is the instance currently enabled?\n    isEnabled: true,\n    // Is the tippy currently showing and not transitioning out?\n    isVisible: false,\n    // Has the instance been destroyed?\n    isDestroyed: false,\n    // Is the tippy currently mounted to the DOM?\n    isMounted: false,\n    // Has the tippy finished transitioning in?\n    isShown: false\n  };\n  var instance = {\n    // properties\n    id: id,\n    reference: reference,\n    popper: div(),\n    popperInstance: popperInstance,\n    props: props,\n    state: state,\n    plugins: plugins,\n    // methods\n    clearDelayTimeouts: clearDelayTimeouts,\n    setProps: setProps,\n    setContent: setContent,\n    show: show,\n    hide: hide,\n    hideWithInteractivity: hideWithInteractivity,\n    enable: enable,\n    disable: disable,\n    unmount: unmount,\n    destroy: destroy\n  }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n  // it doesn't seem to happen in the browser\n\n  /* istanbul ignore if */\n\n  if (!props.render) {\n    if (process.env.NODE_ENV !== \"production\") {\n      errorWhen(true, 'render() function has not been supplied.');\n    }\n\n    return instance;\n  } // ===========================================================================\n  // Initial mutations\n  // ===========================================================================\n\n\n  var _props$render = props.render(instance),\n      popper = _props$render.popper,\n      onUpdate = _props$render.onUpdate;\n\n  popper.setAttribute('data-tippy-root', '');\n  popper.id = \"tippy-\" + instance.id;\n  instance.popper = popper;\n  reference._tippy = instance;\n  popper._tippy = instance;\n  var pluginsHooks = plugins.map(function (plugin) {\n    return plugin.fn(instance);\n  });\n  var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n  addListeners();\n  handleAriaExpandedAttribute();\n  handleStyles();\n  invokeHook('onCreate', [instance]);\n\n  if (props.showOnCreate) {\n    scheduleShow();\n  } // Prevent a tippy with a delay from hiding if the cursor left then returned\n  // before it started hiding\n\n\n  popper.addEventListener('mouseenter', function () {\n    if (instance.props.interactive && instance.state.isVisible) {\n      instance.clearDelayTimeouts();\n    }\n  });\n  popper.addEventListener('mouseleave', function () {\n    if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n      getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    }\n  });\n  return instance; // ===========================================================================\n  // 🔒 Private methods\n  // ===========================================================================\n\n  function getNormalizedTouchSettings() {\n    var touch = instance.props.touch;\n    return Array.isArray(touch) ? touch : [touch, 0];\n  }\n\n  function getIsCustomTouchBehavior() {\n    return getNormalizedTouchSettings()[0] === 'hold';\n  }\n\n  function getIsDefaultRenderFn() {\n    var _instance$props$rende;\n\n    // @ts-ignore\n    return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n  }\n\n  function getCurrentTarget() {\n    return currentTarget || reference;\n  }\n\n  function getDocument() {\n    var parent = getCurrentTarget().parentNode;\n    return parent ? getOwnerDocument(parent) : document;\n  }\n\n  function getDefaultTemplateChildren() {\n    return getChildren(popper);\n  }\n\n  function getDelay(isShow) {\n    // For touch or keyboard input, force `0` delay for UX reasons\n    // Also if the instance is mounted but not visible (transitioning out),\n    // ignore delay\n    if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n      return 0;\n    }\n\n    return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n  }\n\n  function handleStyles(fromHide) {\n    if (fromHide === void 0) {\n      fromHide = false;\n    }\n\n    popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n    popper.style.zIndex = \"\" + instance.props.zIndex;\n  }\n\n  function invokeHook(hook, args, shouldInvokePropsHook) {\n    if (shouldInvokePropsHook === void 0) {\n      shouldInvokePropsHook = true;\n    }\n\n    pluginsHooks.forEach(function (pluginHooks) {\n      if (pluginHooks[hook]) {\n        pluginHooks[hook].apply(pluginHooks, args);\n      }\n    });\n\n    if (shouldInvokePropsHook) {\n      var _instance$props;\n\n      (_instance$props = instance.props)[hook].apply(_instance$props, args);\n    }\n  }\n\n  function handleAriaContentAttribute() {\n    var aria = instance.props.aria;\n\n    if (!aria.content) {\n      return;\n    }\n\n    var attr = \"aria-\" + aria.content;\n    var id = popper.id;\n    var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach(function (node) {\n      var currentValue = node.getAttribute(attr);\n\n      if (instance.state.isVisible) {\n        node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n      } else {\n        var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n        if (nextValue) {\n          node.setAttribute(attr, nextValue);\n        } else {\n          node.removeAttribute(attr);\n        }\n      }\n    });\n  }\n\n  function handleAriaExpandedAttribute() {\n    if (hasAriaExpanded || !instance.props.aria.expanded) {\n      return;\n    }\n\n    var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach(function (node) {\n      if (instance.props.interactive) {\n        node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n      } else {\n        node.removeAttribute('aria-expanded');\n      }\n    });\n  }\n\n  function cleanupInteractiveMouseListeners() {\n    getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n    mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n      return listener !== debouncedOnMouseMove;\n    });\n  }\n\n  function onDocumentPress(event) {\n    // Moved finger to scroll instead of an intentional tap outside\n    if (currentInput.isTouch) {\n      if (didTouchMove || event.type === 'mousedown') {\n        return;\n      }\n    }\n\n    var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n    if (instance.props.interactive && actualContains(popper, actualTarget)) {\n      return;\n    } // Clicked on the event listeners target\n\n\n    if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n      return actualContains(el, actualTarget);\n    })) {\n      if (currentInput.isTouch) {\n        return;\n      }\n\n      if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n        return;\n      }\n    } else {\n      invokeHook('onClickOutside', [instance, event]);\n    }\n\n    if (instance.props.hideOnClick === true) {\n      instance.clearDelayTimeouts();\n      instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n      // currentTarget. This lets a tippy with `focus` trigger know that it\n      // should not show\n\n      didHideDueToDocumentMouseDown = true;\n      setTimeout(function () {\n        didHideDueToDocumentMouseDown = false;\n      }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n      // before it shows, and hide()'s early bail-out behavior can prevent it\n      // from being cleaned up\n\n      if (!instance.state.isMounted) {\n        removeDocumentPress();\n      }\n    }\n  }\n\n  function onTouchMove() {\n    didTouchMove = true;\n  }\n\n  function onTouchStart() {\n    didTouchMove = false;\n  }\n\n  function addDocumentPress() {\n    var doc = getDocument();\n    doc.addEventListener('mousedown', onDocumentPress, true);\n    doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function removeDocumentPress() {\n    var doc = getDocument();\n    doc.removeEventListener('mousedown', onDocumentPress, true);\n    doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function onTransitionedOut(duration, callback) {\n    onTransitionEnd(duration, function () {\n      if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n        callback();\n      }\n    });\n  }\n\n  function onTransitionedIn(duration, callback) {\n    onTransitionEnd(duration, callback);\n  }\n\n  function onTransitionEnd(duration, callback) {\n    var box = getDefaultTemplateChildren().box;\n\n    function listener(event) {\n      if (event.target === box) {\n        updateTransitionEndListener(box, 'remove', listener);\n        callback();\n      }\n    } // Make callback synchronous if duration is 0\n    // `transitionend` won't fire otherwise\n\n\n    if (duration === 0) {\n      return callback();\n    }\n\n    updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n    updateTransitionEndListener(box, 'add', listener);\n    currentTransitionEndListener = listener;\n  }\n\n  function on(eventType, handler, options) {\n    if (options === void 0) {\n      options = false;\n    }\n\n    var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach(function (node) {\n      node.addEventListener(eventType, handler, options);\n      listeners.push({\n        node: node,\n        eventType: eventType,\n        handler: handler,\n        options: options\n      });\n    });\n  }\n\n  function addListeners() {\n    if (getIsCustomTouchBehavior()) {\n      on('touchstart', onTrigger, {\n        passive: true\n      });\n      on('touchend', onMouseLeave, {\n        passive: true\n      });\n    }\n\n    splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n      if (eventType === 'manual') {\n        return;\n      }\n\n      on(eventType, onTrigger);\n\n      switch (eventType) {\n        case 'mouseenter':\n          on('mouseleave', onMouseLeave);\n          break;\n\n        case 'focus':\n          on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n          break;\n\n        case 'focusin':\n          on('focusout', onBlurOrFocusOut);\n          break;\n      }\n    });\n  }\n\n  function removeListeners() {\n    listeners.forEach(function (_ref) {\n      var node = _ref.node,\n          eventType = _ref.eventType,\n          handler = _ref.handler,\n          options = _ref.options;\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function onTrigger(event) {\n    var _lastTriggerEvent;\n\n    var shouldScheduleClickHide = false;\n\n    if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n      return;\n    }\n\n    var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n    lastTriggerEvent = event;\n    currentTarget = event.currentTarget;\n    handleAriaExpandedAttribute();\n\n    if (!instance.state.isVisible && isMouseEvent(event)) {\n      // If scrolling, `mouseenter` events can be fired if the cursor lands\n      // over a new target, but `mousemove` events don't get fired. This\n      // causes interactive tooltips to get stuck open until the cursor is\n      // moved\n      mouseMoveListeners.forEach(function (listener) {\n        return listener(event);\n      });\n    } // Toggle show/hide when clicking click-triggered tooltips\n\n\n    if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n      shouldScheduleClickHide = true;\n    } else {\n      scheduleShow(event);\n    }\n\n    if (event.type === 'click') {\n      isVisibleFromClick = !shouldScheduleClickHide;\n    }\n\n    if (shouldScheduleClickHide && !wasFocused) {\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseMove(event) {\n    var target = event.target;\n    var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n    if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n      return;\n    }\n\n    var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n      var _instance$popperInsta;\n\n      var instance = popper._tippy;\n      var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n      if (state) {\n        return {\n          popperRect: popper.getBoundingClientRect(),\n          popperState: state,\n          props: props\n        };\n      }\n\n      return null;\n    }).filter(Boolean);\n\n    if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n      cleanupInteractiveMouseListeners();\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseLeave(event) {\n    var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n    if (shouldBail) {\n      return;\n    }\n\n    if (instance.props.interactive) {\n      instance.hideWithInteractivity(event);\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function onBlurOrFocusOut(event) {\n    if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n      return;\n    } // If focus was moved to within the popper\n\n\n    if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function isEventListenerStopped(event) {\n    return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n  }\n\n  function createPopperInstance() {\n    destroyPopperInstance();\n    var _instance$props2 = instance.props,\n        popperOptions = _instance$props2.popperOptions,\n        placement = _instance$props2.placement,\n        offset = _instance$props2.offset,\n        getReferenceClientRect = _instance$props2.getReferenceClientRect,\n        moveTransition = _instance$props2.moveTransition;\n    var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n    var computedReference = getReferenceClientRect ? {\n      getBoundingClientRect: getReferenceClientRect,\n      contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n    } : reference;\n    var tippyModifier = {\n      name: '$$tippy',\n      enabled: true,\n      phase: 'beforeWrite',\n      requires: ['computeStyles'],\n      fn: function fn(_ref2) {\n        var state = _ref2.state;\n\n        if (getIsDefaultRenderFn()) {\n          var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n              box = _getDefaultTemplateCh.box;\n\n          ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n            if (attr === 'placement') {\n              box.setAttribute('data-placement', state.placement);\n            } else {\n              if (state.attributes.popper[\"data-popper-\" + attr]) {\n                box.setAttribute(\"data-\" + attr, '');\n              } else {\n                box.removeAttribute(\"data-\" + attr);\n              }\n            }\n          });\n          state.attributes.popper = {};\n        }\n      }\n    };\n    var modifiers = [{\n      name: 'offset',\n      options: {\n        offset: offset\n      }\n    }, {\n      name: 'preventOverflow',\n      options: {\n        padding: {\n          top: 2,\n          bottom: 2,\n          left: 5,\n          right: 5\n        }\n      }\n    }, {\n      name: 'flip',\n      options: {\n        padding: 5\n      }\n    }, {\n      name: 'computeStyles',\n      options: {\n        adaptive: !moveTransition\n      }\n    }, tippyModifier];\n\n    if (getIsDefaultRenderFn() && arrow) {\n      modifiers.push({\n        name: 'arrow',\n        options: {\n          element: arrow,\n          padding: 3\n        }\n      });\n    }\n\n    modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n    instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n      placement: placement,\n      onFirstUpdate: onFirstUpdate,\n      modifiers: modifiers\n    }));\n  }\n\n  function destroyPopperInstance() {\n    if (instance.popperInstance) {\n      instance.popperInstance.destroy();\n      instance.popperInstance = null;\n    }\n  }\n\n  function mount() {\n    var appendTo = instance.props.appendTo;\n    var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n    // it's directly after the reference element so the elements inside the\n    // tippy can be tabbed to\n    // If there are clipping issues, the user can specify a different appendTo\n    // and ensure focus management is handled correctly manually\n\n    var node = getCurrentTarget();\n\n    if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n      parentNode = node.parentNode;\n    } else {\n      parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n    } // The popper element needs to exist on the DOM before its position can be\n    // updated as Popper needs to read its dimensions\n\n\n    if (!parentNode.contains(popper)) {\n      parentNode.appendChild(popper);\n    }\n\n    instance.state.isMounted = true;\n    createPopperInstance();\n    /* istanbul ignore else */\n\n    if (process.env.NODE_ENV !== \"production\") {\n      // Accessibility check\n      warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n    }\n  }\n\n  function getNestedPopperTree() {\n    return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n  }\n\n  function scheduleShow(event) {\n    instance.clearDelayTimeouts();\n\n    if (event) {\n      invokeHook('onTrigger', [instance, event]);\n    }\n\n    addDocumentPress();\n    var delay = getDelay(true);\n\n    var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n        touchValue = _getNormalizedTouchSe[0],\n        touchDelay = _getNormalizedTouchSe[1];\n\n    if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n      delay = touchDelay;\n    }\n\n    if (delay) {\n      showTimeout = setTimeout(function () {\n        instance.show();\n      }, delay);\n    } else {\n      instance.show();\n    }\n  }\n\n  function scheduleHide(event) {\n    instance.clearDelayTimeouts();\n    invokeHook('onUntrigger', [instance, event]);\n\n    if (!instance.state.isVisible) {\n      removeDocumentPress();\n      return;\n    } // For interactive tippies, scheduleHide is added to a document.body handler\n    // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n    // events when trigger contains mouseenter and click, and the tip is\n    // currently shown as a result of a click.\n\n\n    if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n      return;\n    }\n\n    var delay = getDelay(false);\n\n    if (delay) {\n      hideTimeout = setTimeout(function () {\n        if (instance.state.isVisible) {\n          instance.hide();\n        }\n      }, delay);\n    } else {\n      // Fixes a `transitionend` problem when it fires 1 frame too\n      // late sometimes, we don't want hide() to be called.\n      scheduleHideAnimationFrame = requestAnimationFrame(function () {\n        instance.hide();\n      });\n    }\n  } // ===========================================================================\n  // 🔑 Public methods\n  // ===========================================================================\n\n\n  function enable() {\n    instance.state.isEnabled = true;\n  }\n\n  function disable() {\n    // Disabling the instance should also hide it\n    // https://github.com/atomiks/tippy.js-react/issues/106\n    instance.hide();\n    instance.state.isEnabled = false;\n  }\n\n  function clearDelayTimeouts() {\n    clearTimeout(showTimeout);\n    clearTimeout(hideTimeout);\n    cancelAnimationFrame(scheduleHideAnimationFrame);\n  }\n\n  function setProps(partialProps) {\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== \"production\") {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    invokeHook('onBeforeUpdate', [instance, partialProps]);\n    removeListeners();\n    var prevProps = instance.props;\n    var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n      ignoreAttributes: true\n    }));\n    instance.props = nextProps;\n    addListeners();\n\n    if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n      cleanupInteractiveMouseListeners();\n      debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n    } // Ensure stale aria-expanded attributes are removed\n\n\n    if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n      normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n        node.removeAttribute('aria-expanded');\n      });\n    } else if (nextProps.triggerTarget) {\n      reference.removeAttribute('aria-expanded');\n    }\n\n    handleAriaExpandedAttribute();\n    handleStyles();\n\n    if (onUpdate) {\n      onUpdate(prevProps, nextProps);\n    }\n\n    if (instance.popperInstance) {\n      createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n      // and the nested ones get re-rendered first.\n      // https://github.com/atomiks/tippyjs-react/issues/177\n      // TODO: find a cleaner / more efficient solution(!)\n\n      getNestedPopperTree().forEach(function (nestedPopper) {\n        // React (and other UI libs likely) requires a rAF wrapper as it flushes\n        // its work in one\n        requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n      });\n    }\n\n    invokeHook('onAfterUpdate', [instance, partialProps]);\n  }\n\n  function setContent(content) {\n    instance.setProps({\n      content: content\n    });\n  }\n\n  function show() {\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== \"production\") {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n    } // Early bail-out\n\n\n    var isAlreadyVisible = instance.state.isVisible;\n    var isDestroyed = instance.state.isDestroyed;\n    var isDisabled = !instance.state.isEnabled;\n    var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n    var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n    if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n      return;\n    } // Normalize `disabled` behavior across browsers.\n    // Firefox allows events on disabled elements, but Chrome doesn't.\n    // Using a wrapper element (i.e. <span>) is recommended.\n\n\n    if (getCurrentTarget().hasAttribute('disabled')) {\n      return;\n    }\n\n    invokeHook('onShow', [instance], false);\n\n    if (instance.props.onShow(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = true;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'visible';\n    }\n\n    handleStyles();\n    addDocumentPress();\n\n    if (!instance.state.isMounted) {\n      popper.style.transition = 'none';\n    } // If flipping to the opposite side after hiding at least once, the\n    // animation will use the wrong placement without resetting the duration\n\n\n    if (getIsDefaultRenderFn()) {\n      var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n          box = _getDefaultTemplateCh2.box,\n          content = _getDefaultTemplateCh2.content;\n\n      setTransitionDuration([box, content], 0);\n    }\n\n    onFirstUpdate = function onFirstUpdate() {\n      var _instance$popperInsta2;\n\n      if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n        return;\n      }\n\n      ignoreOnFirstUpdate = true; // reflow\n\n      void popper.offsetHeight;\n      popper.style.transition = instance.props.moveTransition;\n\n      if (getIsDefaultRenderFn() && instance.props.animation) {\n        var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n            _box = _getDefaultTemplateCh3.box,\n            _content = _getDefaultTemplateCh3.content;\n\n        setTransitionDuration([_box, _content], duration);\n        setVisibilityState([_box, _content], 'visible');\n      }\n\n      handleAriaContentAttribute();\n      handleAriaExpandedAttribute();\n      pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n      // popper has been positioned for the first time\n\n      (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n      invokeHook('onMount', [instance]);\n\n      if (instance.props.animation && getIsDefaultRenderFn()) {\n        onTransitionedIn(duration, function () {\n          instance.state.isShown = true;\n          invokeHook('onShown', [instance]);\n        });\n      }\n    };\n\n    mount();\n  }\n\n  function hide() {\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== \"production\") {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n    } // Early bail-out\n\n\n    var isAlreadyHidden = !instance.state.isVisible;\n    var isDestroyed = instance.state.isDestroyed;\n    var isDisabled = !instance.state.isEnabled;\n    var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n    if (isAlreadyHidden || isDestroyed || isDisabled) {\n      return;\n    }\n\n    invokeHook('onHide', [instance], false);\n\n    if (instance.props.onHide(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = false;\n    instance.state.isShown = false;\n    ignoreOnFirstUpdate = false;\n    isVisibleFromClick = false;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'hidden';\n    }\n\n    cleanupInteractiveMouseListeners();\n    removeDocumentPress();\n    handleStyles(true);\n\n    if (getIsDefaultRenderFn()) {\n      var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n          box = _getDefaultTemplateCh4.box,\n          content = _getDefaultTemplateCh4.content;\n\n      if (instance.props.animation) {\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'hidden');\n      }\n    }\n\n    handleAriaContentAttribute();\n    handleAriaExpandedAttribute();\n\n    if (instance.props.animation) {\n      if (getIsDefaultRenderFn()) {\n        onTransitionedOut(duration, instance.unmount);\n      }\n    } else {\n      instance.unmount();\n    }\n  }\n\n  function hideWithInteractivity(event) {\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== \"production\") {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n    }\n\n    getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n    debouncedOnMouseMove(event);\n  }\n\n  function unmount() {\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== \"production\") {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n    }\n\n    if (instance.state.isVisible) {\n      instance.hide();\n    }\n\n    if (!instance.state.isMounted) {\n      return;\n    }\n\n    destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n    // tree by default. This seems mainly for interactive tippies, but we should\n    // find a workaround if possible\n\n    getNestedPopperTree().forEach(function (nestedPopper) {\n      nestedPopper._tippy.unmount();\n    });\n\n    if (popper.parentNode) {\n      popper.parentNode.removeChild(popper);\n    }\n\n    mountedInstances = mountedInstances.filter(function (i) {\n      return i !== instance;\n    });\n    instance.state.isMounted = false;\n    invokeHook('onHidden', [instance]);\n  }\n\n  function destroy() {\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== \"production\") {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    instance.clearDelayTimeouts();\n    instance.unmount();\n    removeListeners();\n    delete reference._tippy;\n    instance.state.isDestroyed = true;\n    invokeHook('onDestroy', [instance]);\n  }\n}\n\nfunction tippy(targets, optionalProps) {\n  if (optionalProps === void 0) {\n    optionalProps = {};\n  }\n\n  var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n  /* istanbul ignore else */\n\n  if (process.env.NODE_ENV !== \"production\") {\n    validateTargets(targets);\n    validateProps(optionalProps, plugins);\n  }\n\n  bindGlobalEventListeners();\n  var passedProps = Object.assign({}, optionalProps, {\n    plugins: plugins\n  });\n  var elements = getArrayOfElements(targets);\n  /* istanbul ignore else */\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var isSingleContentElement = isElement(passedProps.content);\n    var isMoreThanOneReferenceElement = elements.length > 1;\n    warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n  }\n\n  var instances = elements.reduce(function (acc, reference) {\n    var instance = reference && createTippy(reference, passedProps);\n\n    if (instance) {\n      acc.push(instance);\n    }\n\n    return acc;\n  }, []);\n  return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      excludedReferenceOrInstance = _ref.exclude,\n      duration = _ref.duration;\n\n  mountedInstances.forEach(function (instance) {\n    var isExcluded = false;\n\n    if (excludedReferenceOrInstance) {\n      isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n    }\n\n    if (!isExcluded) {\n      var originalDuration = instance.props.duration;\n      instance.setProps({\n        duration: duration\n      });\n      instance.hide();\n\n      if (!instance.state.isDestroyed) {\n        instance.setProps({\n          duration: originalDuration\n        });\n      }\n    }\n  });\n};\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n  effect: function effect(_ref) {\n    var state = _ref.state;\n    var initialStyles = {\n      popper: {\n        position: state.options.strategy,\n        left: '0',\n        top: '0',\n        margin: '0'\n      },\n      arrow: {\n        position: 'absolute'\n      },\n      reference: {}\n    };\n    Object.assign(state.elements.popper.style, initialStyles.popper);\n    state.styles = initialStyles;\n\n    if (state.elements.arrow) {\n      Object.assign(state.elements.arrow.style, initialStyles.arrow);\n    } // intentionally return no cleanup function\n    // return () => { ... }\n\n  }\n});\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n  var _optionalProps$popper;\n\n  if (optionalProps === void 0) {\n    optionalProps = {};\n  }\n\n  /* istanbul ignore else */\n  if (process.env.NODE_ENV !== \"production\") {\n    errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n  }\n\n  var individualInstances = tippyInstances;\n  var references = [];\n  var triggerTargets = [];\n  var currentTarget;\n  var overrides = optionalProps.overrides;\n  var interceptSetPropsCleanups = [];\n  var shownOnCreate = false;\n\n  function setTriggerTargets() {\n    triggerTargets = individualInstances.map(function (instance) {\n      return normalizeToArray(instance.props.triggerTarget || instance.reference);\n    }).reduce(function (acc, item) {\n      return acc.concat(item);\n    }, []);\n  }\n\n  function setReferences() {\n    references = individualInstances.map(function (instance) {\n      return instance.reference;\n    });\n  }\n\n  function enableInstances(isEnabled) {\n    individualInstances.forEach(function (instance) {\n      if (isEnabled) {\n        instance.enable();\n      } else {\n        instance.disable();\n      }\n    });\n  }\n\n  function interceptSetProps(singleton) {\n    return individualInstances.map(function (instance) {\n      var originalSetProps = instance.setProps;\n\n      instance.setProps = function (props) {\n        originalSetProps(props);\n\n        if (instance.reference === currentTarget) {\n          singleton.setProps(props);\n        }\n      };\n\n      return function () {\n        instance.setProps = originalSetProps;\n      };\n    });\n  } // have to pass singleton, as it maybe undefined on first call\n\n\n  function prepareInstance(singleton, target) {\n    var index = triggerTargets.indexOf(target); // bail-out\n\n    if (target === currentTarget) {\n      return;\n    }\n\n    currentTarget = target;\n    var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n      acc[prop] = individualInstances[index].props[prop];\n      return acc;\n    }, {});\n    singleton.setProps(Object.assign({}, overrideProps, {\n      getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n        var _references$index;\n\n        return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n      }\n    }));\n  }\n\n  enableInstances(false);\n  setReferences();\n  setTriggerTargets();\n  var plugin = {\n    fn: function fn() {\n      return {\n        onDestroy: function onDestroy() {\n          enableInstances(true);\n        },\n        onHidden: function onHidden() {\n          currentTarget = null;\n        },\n        onClickOutside: function onClickOutside(instance) {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            currentTarget = null;\n          }\n        },\n        onShow: function onShow(instance) {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            prepareInstance(instance, references[0]);\n          }\n        },\n        onTrigger: function onTrigger(instance, event) {\n          prepareInstance(instance, event.currentTarget);\n        }\n      };\n    }\n  };\n  var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n    plugins: [plugin].concat(optionalProps.plugins || []),\n    triggerTarget: triggerTargets,\n    popperOptions: Object.assign({}, optionalProps.popperOptions, {\n      modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n    })\n  }));\n  var originalShow = singleton.show;\n\n  singleton.show = function (target) {\n    originalShow(); // first time, showOnCreate or programmatic call with no params\n    // default to showing first instance\n\n    if (!currentTarget && target == null) {\n      return prepareInstance(singleton, references[0]);\n    } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n    // programmatic call with no params when already visible (do nothing again)\n\n\n    if (currentTarget && target == null) {\n      return;\n    } // target is index of instance\n\n\n    if (typeof target === 'number') {\n      return references[target] && prepareInstance(singleton, references[target]);\n    } // target is a child tippy instance\n\n\n    if (individualInstances.indexOf(target) >= 0) {\n      var ref = target.reference;\n      return prepareInstance(singleton, ref);\n    } // target is a ReferenceElement\n\n\n    if (references.indexOf(target) >= 0) {\n      return prepareInstance(singleton, target);\n    }\n  };\n\n  singleton.showNext = function () {\n    var first = references[0];\n\n    if (!currentTarget) {\n      return singleton.show(0);\n    }\n\n    var index = references.indexOf(currentTarget);\n    singleton.show(references[index + 1] || first);\n  };\n\n  singleton.showPrevious = function () {\n    var last = references[references.length - 1];\n\n    if (!currentTarget) {\n      return singleton.show(last);\n    }\n\n    var index = references.indexOf(currentTarget);\n    var target = references[index - 1] || last;\n    singleton.show(target);\n  };\n\n  var originalSetProps = singleton.setProps;\n\n  singleton.setProps = function (props) {\n    overrides = props.overrides || overrides;\n    originalSetProps(props);\n  };\n\n  singleton.setInstances = function (nextInstances) {\n    enableInstances(true);\n    interceptSetPropsCleanups.forEach(function (fn) {\n      return fn();\n    });\n    individualInstances = nextInstances;\n    enableInstances(false);\n    setReferences();\n    setTriggerTargets();\n    interceptSetPropsCleanups = interceptSetProps(singleton);\n    singleton.setProps({\n      triggerTarget: triggerTargets\n    });\n  };\n\n  interceptSetPropsCleanups = interceptSetProps(singleton);\n  return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n  mouseover: 'mouseenter',\n  focusin: 'focus',\n  click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n  /* istanbul ignore else */\n  if (process.env.NODE_ENV !== \"production\") {\n    errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n  }\n\n  var listeners = [];\n  var childTippyInstances = [];\n  var disabled = false;\n  var target = props.target;\n  var nativeProps = removeProperties(props, ['target']);\n  var parentProps = Object.assign({}, nativeProps, {\n    trigger: 'manual',\n    touch: false\n  });\n  var childProps = Object.assign({\n    touch: defaultProps.touch\n  }, nativeProps, {\n    showOnCreate: true\n  });\n  var returnValue = tippy(targets, parentProps);\n  var normalizedReturnValue = normalizeToArray(returnValue);\n\n  function onTrigger(event) {\n    if (!event.target || disabled) {\n      return;\n    }\n\n    var targetNode = event.target.closest(target);\n\n    if (!targetNode) {\n      return;\n    } // Get relevant trigger with fallbacks:\n    // 1. Check `data-tippy-trigger` attribute on target node\n    // 2. Fallback to `trigger` passed to `delegate()`\n    // 3. Fallback to `defaultProps.trigger`\n\n\n    var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n    if (targetNode._tippy) {\n      return;\n    }\n\n    if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n      return;\n    }\n\n    if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n      return;\n    }\n\n    var instance = tippy(targetNode, childProps);\n\n    if (instance) {\n      childTippyInstances = childTippyInstances.concat(instance);\n    }\n  }\n\n  function on(node, eventType, handler, options) {\n    if (options === void 0) {\n      options = false;\n    }\n\n    node.addEventListener(eventType, handler, options);\n    listeners.push({\n      node: node,\n      eventType: eventType,\n      handler: handler,\n      options: options\n    });\n  }\n\n  function addEventListeners(instance) {\n    var reference = instance.reference;\n    on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n    on(reference, 'mouseover', onTrigger);\n    on(reference, 'focusin', onTrigger);\n    on(reference, 'click', onTrigger);\n  }\n\n  function removeEventListeners() {\n    listeners.forEach(function (_ref) {\n      var node = _ref.node,\n          eventType = _ref.eventType,\n          handler = _ref.handler,\n          options = _ref.options;\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function applyMutations(instance) {\n    var originalDestroy = instance.destroy;\n    var originalEnable = instance.enable;\n    var originalDisable = instance.disable;\n\n    instance.destroy = function (shouldDestroyChildInstances) {\n      if (shouldDestroyChildInstances === void 0) {\n        shouldDestroyChildInstances = true;\n      }\n\n      if (shouldDestroyChildInstances) {\n        childTippyInstances.forEach(function (instance) {\n          instance.destroy();\n        });\n      }\n\n      childTippyInstances = [];\n      removeEventListeners();\n      originalDestroy();\n    };\n\n    instance.enable = function () {\n      originalEnable();\n      childTippyInstances.forEach(function (instance) {\n        return instance.enable();\n      });\n      disabled = false;\n    };\n\n    instance.disable = function () {\n      originalDisable();\n      childTippyInstances.forEach(function (instance) {\n        return instance.disable();\n      });\n      disabled = true;\n    };\n\n    addEventListeners(instance);\n  }\n\n  normalizedReturnValue.forEach(applyMutations);\n  return returnValue;\n}\n\nvar animateFill = {\n  name: 'animateFill',\n  defaultValue: false,\n  fn: function fn(instance) {\n    var _instance$props$rende;\n\n    // @ts-ignore\n    if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n      }\n\n      return {};\n    }\n\n    var _getChildren = getChildren(instance.popper),\n        box = _getChildren.box,\n        content = _getChildren.content;\n\n    var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n    return {\n      onCreate: function onCreate() {\n        if (backdrop) {\n          box.insertBefore(backdrop, box.firstElementChild);\n          box.setAttribute('data-animatefill', '');\n          box.style.overflow = 'hidden';\n          instance.setProps({\n            arrow: false,\n            animation: 'shift-away'\n          });\n        }\n      },\n      onMount: function onMount() {\n        if (backdrop) {\n          var transitionDuration = box.style.transitionDuration;\n          var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n          // tooltip element. `clip-path` is the other alternative but is not\n          // well-supported and is buggy on some devices.\n\n          content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n          backdrop.style.transitionDuration = transitionDuration;\n          setVisibilityState([backdrop], 'visible');\n        }\n      },\n      onShow: function onShow() {\n        if (backdrop) {\n          backdrop.style.transitionDuration = '0ms';\n        }\n      },\n      onHide: function onHide() {\n        if (backdrop) {\n          setVisibilityState([backdrop], 'hidden');\n        }\n      }\n    };\n  }\n};\n\nfunction createBackdropElement() {\n  var backdrop = div();\n  backdrop.className = BACKDROP_CLASS;\n  setVisibilityState([backdrop], 'hidden');\n  return backdrop;\n}\n\nvar mouseCoords = {\n  clientX: 0,\n  clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n  var clientX = _ref.clientX,\n      clientY = _ref.clientY;\n  mouseCoords = {\n    clientX: clientX,\n    clientY: clientY\n  };\n}\n\nfunction addMouseCoordsListener(doc) {\n  doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n  doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n  name: 'followCursor',\n  defaultValue: false,\n  fn: function fn(instance) {\n    var reference = instance.reference;\n    var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n    var isInternalUpdate = false;\n    var wasFocusEvent = false;\n    var isUnmounted = true;\n    var prevProps = instance.props;\n\n    function getIsInitialBehavior() {\n      return instance.props.followCursor === 'initial' && instance.state.isVisible;\n    }\n\n    function addListener() {\n      doc.addEventListener('mousemove', onMouseMove);\n    }\n\n    function removeListener() {\n      doc.removeEventListener('mousemove', onMouseMove);\n    }\n\n    function unsetGetReferenceClientRect() {\n      isInternalUpdate = true;\n      instance.setProps({\n        getReferenceClientRect: null\n      });\n      isInternalUpdate = false;\n    }\n\n    function onMouseMove(event) {\n      // If the instance is interactive, avoid updating the position unless it's\n      // over the reference element\n      var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n      var followCursor = instance.props.followCursor;\n      var clientX = event.clientX,\n          clientY = event.clientY;\n      var rect = reference.getBoundingClientRect();\n      var relativeX = clientX - rect.left;\n      var relativeY = clientY - rect.top;\n\n      if (isCursorOverReference || !instance.props.interactive) {\n        instance.setProps({\n          // @ts-ignore - unneeded DOMRect properties\n          getReferenceClientRect: function getReferenceClientRect() {\n            var rect = reference.getBoundingClientRect();\n            var x = clientX;\n            var y = clientY;\n\n            if (followCursor === 'initial') {\n              x = rect.left + relativeX;\n              y = rect.top + relativeY;\n            }\n\n            var top = followCursor === 'horizontal' ? rect.top : y;\n            var right = followCursor === 'vertical' ? rect.right : x;\n            var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n            var left = followCursor === 'vertical' ? rect.left : x;\n            return {\n              width: right - left,\n              height: bottom - top,\n              top: top,\n              right: right,\n              bottom: bottom,\n              left: left\n            };\n          }\n        });\n      }\n    }\n\n    function create() {\n      if (instance.props.followCursor) {\n        activeInstances.push({\n          instance: instance,\n          doc: doc\n        });\n        addMouseCoordsListener(doc);\n      }\n    }\n\n    function destroy() {\n      activeInstances = activeInstances.filter(function (data) {\n        return data.instance !== instance;\n      });\n\n      if (activeInstances.filter(function (data) {\n        return data.doc === doc;\n      }).length === 0) {\n        removeMouseCoordsListener(doc);\n      }\n    }\n\n    return {\n      onCreate: create,\n      onDestroy: destroy,\n      onBeforeUpdate: function onBeforeUpdate() {\n        prevProps = instance.props;\n      },\n      onAfterUpdate: function onAfterUpdate(_, _ref2) {\n        var followCursor = _ref2.followCursor;\n\n        if (isInternalUpdate) {\n          return;\n        }\n\n        if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n          destroy();\n\n          if (followCursor) {\n            create();\n\n            if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n              addListener();\n            }\n          } else {\n            removeListener();\n            unsetGetReferenceClientRect();\n          }\n        }\n      },\n      onMount: function onMount() {\n        if (instance.props.followCursor && !wasFocusEvent) {\n          if (isUnmounted) {\n            onMouseMove(mouseCoords);\n            isUnmounted = false;\n          }\n\n          if (!getIsInitialBehavior()) {\n            addListener();\n          }\n        }\n      },\n      onTrigger: function onTrigger(_, event) {\n        if (isMouseEvent(event)) {\n          mouseCoords = {\n            clientX: event.clientX,\n            clientY: event.clientY\n          };\n        }\n\n        wasFocusEvent = event.type === 'focus';\n      },\n      onHidden: function onHidden() {\n        if (instance.props.followCursor) {\n          unsetGetReferenceClientRect();\n          removeListener();\n          isUnmounted = true;\n        }\n      }\n    };\n  }\n};\n\nfunction getProps(props, modifier) {\n  var _props$popperOptions;\n\n  return {\n    popperOptions: Object.assign({}, props.popperOptions, {\n      modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n        var name = _ref.name;\n        return name !== modifier.name;\n      }), [modifier])\n    })\n  };\n}\n\nvar inlinePositioning = {\n  name: 'inlinePositioning',\n  defaultValue: false,\n  fn: function fn(instance) {\n    var reference = instance.reference;\n\n    function isEnabled() {\n      return !!instance.props.inlinePositioning;\n    }\n\n    var placement;\n    var cursorRectIndex = -1;\n    var isInternalUpdate = false;\n    var triedPlacements = [];\n    var modifier = {\n      name: 'tippyInlinePositioning',\n      enabled: true,\n      phase: 'afterWrite',\n      fn: function fn(_ref2) {\n        var state = _ref2.state;\n\n        if (isEnabled()) {\n          if (triedPlacements.indexOf(state.placement) !== -1) {\n            triedPlacements = [];\n          }\n\n          if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n            triedPlacements.push(state.placement);\n            instance.setProps({\n              // @ts-ignore - unneeded DOMRect properties\n              getReferenceClientRect: function getReferenceClientRect() {\n                return _getReferenceClientRect(state.placement);\n              }\n            });\n          }\n\n          placement = state.placement;\n        }\n      }\n    };\n\n    function _getReferenceClientRect(placement) {\n      return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n    }\n\n    function setInternalProps(partialProps) {\n      isInternalUpdate = true;\n      instance.setProps(partialProps);\n      isInternalUpdate = false;\n    }\n\n    function addModifier() {\n      if (!isInternalUpdate) {\n        setInternalProps(getProps(instance.props, modifier));\n      }\n    }\n\n    return {\n      onCreate: addModifier,\n      onAfterUpdate: addModifier,\n      onTrigger: function onTrigger(_, event) {\n        if (isMouseEvent(event)) {\n          var rects = arrayFrom(instance.reference.getClientRects());\n          var cursorRect = rects.find(function (rect) {\n            return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n          });\n          var index = rects.indexOf(cursorRect);\n          cursorRectIndex = index > -1 ? index : cursorRectIndex;\n        }\n      },\n      onHidden: function onHidden() {\n        cursorRectIndex = -1;\n      }\n    };\n  }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n  // Not an inline element, or placement is not yet known\n  if (clientRects.length < 2 || currentBasePlacement === null) {\n    return boundingRect;\n  } // There are two rects and they are disjoined\n\n\n  if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n    return clientRects[cursorRectIndex] || boundingRect;\n  }\n\n  switch (currentBasePlacement) {\n    case 'top':\n    case 'bottom':\n      {\n        var firstRect = clientRects[0];\n        var lastRect = clientRects[clientRects.length - 1];\n        var isTop = currentBasePlacement === 'top';\n        var top = firstRect.top;\n        var bottom = lastRect.bottom;\n        var left = isTop ? firstRect.left : lastRect.left;\n        var right = isTop ? firstRect.right : lastRect.right;\n        var width = right - left;\n        var height = bottom - top;\n        return {\n          top: top,\n          bottom: bottom,\n          left: left,\n          right: right,\n          width: width,\n          height: height\n        };\n      }\n\n    case 'left':\n    case 'right':\n      {\n        var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n          return rects.left;\n        }));\n        var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n          return rects.right;\n        }));\n        var measureRects = clientRects.filter(function (rect) {\n          return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n        });\n        var _top = measureRects[0].top;\n        var _bottom = measureRects[measureRects.length - 1].bottom;\n        var _left = minLeft;\n        var _right = maxRight;\n\n        var _width = _right - _left;\n\n        var _height = _bottom - _top;\n\n        return {\n          top: _top,\n          bottom: _bottom,\n          left: _left,\n          right: _right,\n          width: _width,\n          height: _height\n        };\n      }\n\n    default:\n      {\n        return boundingRect;\n      }\n  }\n}\n\nvar sticky = {\n  name: 'sticky',\n  defaultValue: false,\n  fn: function fn(instance) {\n    var reference = instance.reference,\n        popper = instance.popper;\n\n    function getReference() {\n      return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n    }\n\n    function shouldCheck(value) {\n      return instance.props.sticky === true || instance.props.sticky === value;\n    }\n\n    var prevRefRect = null;\n    var prevPopRect = null;\n\n    function updatePosition() {\n      var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n      var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n      if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n        if (instance.popperInstance) {\n          instance.popperInstance.update();\n        }\n      }\n\n      prevRefRect = currentRefRect;\n      prevPopRect = currentPopRect;\n\n      if (instance.state.isMounted) {\n        requestAnimationFrame(updatePosition);\n      }\n    }\n\n    return {\n      onMount: function onMount() {\n        if (instance.props.sticky) {\n          updatePosition();\n        }\n      }\n    };\n  }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n  if (rectA && rectB) {\n    return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n  }\n\n  return true;\n}\n\ntippy.setDefaultProps({\n  render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","/**\n * This module used to unify mouse wheel behavior between different browsers in 2014\n * Now it's just a wrapper around addEventListener('wheel');\n *\n * Usage:\n *  var addWheelListener = require('wheel').addWheelListener;\n *  var removeWheelListener = require('wheel').removeWheelListener;\n *  addWheelListener(domElement, function (e) {\n *    // mouse wheel event\n *  });\n *  removeWheelListener(domElement, function);\n */\n\nmodule.exports = addWheelListener;\n\n// But also expose \"advanced\" api with unsubscribe:\nmodule.exports.addWheelListener = addWheelListener;\nmodule.exports.removeWheelListener = removeWheelListener;\n\n\nfunction addWheelListener(element, listener, useCapture) {\n  element.addEventListener('wheel', listener, useCapture);\n}\n\nfunction removeWheelListener( element, listener, useCapture ) {\n  element.removeEventListener('wheel', listener, useCapture);\n}","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n  _update(date = Date.now()) {\n    let remaining = 0;\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n      for (; i >= 0; --i) {\n        item = items[i];\n        if (item._active) {\n          if (item._total > anims.duration) {\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n      remaining += items.length;\n    });\n    this._lastDate = date;\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  color(from, to, factor) {\n    const c0 = color(from || transparent);\n    const c1 = c0.valid && color(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\nclass Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n  active() {\n    return this._active;\n  }\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n  cancel() {\n    if (this._active) {\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n    this._active = from !== to && (loop || (elapsed < duration));\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n    this._target[prop] = this._fn(from, to, factor);\n  }\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n  delay: undefined,\n  duration: 1000,\n  easing: 'easeOutQuart',\n  fn: undefined,\n  from: undefined,\n  loop: undefined,\n  to: undefined,\n  type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n  _fallback: false,\n  _indexable: false,\n  _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n  colors: {\n    type: 'color',\n    properties: colors\n  },\n  numbers: {\n    type: 'number',\n    properties: numbers\n  },\n});\ndefaults.describe('animations', {\n  _fallback: 'animation',\n});\ndefaults.set('transitions', {\n  active: {\n    animation: {\n      duration: 400\n    }\n  },\n  resize: {\n    animation: {\n      duration: 0\n    }\n  },\n  show: {\n    animations: {\n      colors: {\n        from: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        duration: 0\n      },\n    }\n  },\n  hide: {\n    animations: {\n      colors: {\n        to: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        easing: 'linear',\n        fn: v => v | 0\n      },\n    }\n  }\n});\nclass Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n    const animatedProps = this._properties;\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n      });\n    }\n    return animations;\n  }\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n      if (animation) {\n        if (cfg && animation.active()) {\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        target[prop] = value;\n        continue;\n      }\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n  update(target, values) {\n    if (this._properties.size === 0) {\n      Object.assign(target, values);\n      return;\n    }\n    const animations = this._createAnimations(target, values);\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\nfunction toClip(value) {\n  let t, r, b, l;\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n  if (value === null) {\n    return;\n  }\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\n}\nfunction convertObjectDataToArray(data) {\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      x: key,\n      y: data[key]\n    };\n  }\n  return adata;\n}\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n  return null;\n}\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {});\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n  }\n}\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\nfunction clearStacks(meta, items) {\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n  }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.initialize();\n  }\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n  }\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n  reset() {\n    this._update('reset');\n  }\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        unlistenArrayEvents(_data, this);\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n  addElements() {\n    const meta = this._cachedMeta;\n    this._dataCheck();\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n    this._dataCheck();\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n    this._resyncElements(resetNewElements);\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        break;\n      }\n    }\n    if (sorted) {\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isNumberFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n  getMaxOverflow() {\n    return false;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n  update(mode) {}\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    const context = () => this.getContext(index, active);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n    if (values.$shared) {\n      values.$shared = sharing;\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n    return values;\n  }\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n    if (count) {\n      this.parse(0, count);\n    }\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n  updateElements(element, start, count, mode) {}\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      return;\n    }\n    if (defined(prev)) {\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n  return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n  if (prev === null) {\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n  if (next === null) {\n    next = curr + curr - prev;\n  }\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n  item[vScale.axis] = barEnd;\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\nclass BarController extends DatasetController {\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n  getMaxOverflow() {\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n    const skipNull = (meta) => {\n      const parsed = meta.controller.getParsed(dataIndex);\n      const val = parsed && parsed[meta.vScale.axis];\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n    return stacks;\n  }\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1;\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      head = base;\n    }\n    size = head - base;\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n    }\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'bar',\n  categoryPercentage: 0.8,\n  barPercentage: 0.9,\n  grouped: true,\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'base', 'width', 'height']\n    }\n  }\n};\nBarController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n      offset: true,\n      grid: {\n        offset: true\n      }\n    },\n    _value_: {\n      type: 'linear',\n      beginAtZero: true,\n    }\n  }\n};\n\nclass BubbleController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n    return {\n      label: meta.label,\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n  update(mode) {\n    const points = this._cachedMeta.data;\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n    return values;\n  }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'borderWidth', 'radius']\n    }\n  }\n};\nBubbleController.overrides = {\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        }\n      }\n    }\n  }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n  linkScales() {}\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n    meta.total = this.calculateTotal();\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n    return total;\n  }\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n    if (!arcs) {\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n    if (!arcs) {\n      return 0;\n    }\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n  getMaxOffset(arcs) {\n    let max = 0;\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n    return ringWeightOffset;\n  }\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: false\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n    },\n  },\n  cutout: '50%',\n  rotation: 0,\n  circumference: 360,\n  radius: '100%',\n  spacing: 0,\n  indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n  _scriptable: (name) => name !== 'spacing',\n  _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(tooltipItem) {\n          let dataLabel = tooltipItem.label;\n          const value = ': ' + tooltipItem.formattedValue;\n          if (isArray(dataLabel)) {\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n          return dataLabel;\n        }\n      }\n    }\n  }\n};\n\nclass LineController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n    this.updateElements(points, start, count, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\nLineController.id = 'line';\nLineController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  showLine: true,\n  spanGaps: false,\n};\nLineController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n    },\n    _value_: {\n      type: 'linear',\n    },\n  }\n};\n\nclass PolarAreaController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n    return range;\n  }\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n    const defaultAngle = 360 / this.countVisibleElements();\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n    return count;\n  }\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: true\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n    },\n  },\n  indexAxis: 'r',\n  startAngle: 0,\n};\nPolarAreaController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(context) {\n          return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n        }\n      }\n    }\n  },\n  scales: {\n    r: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      beginAtZero: true,\n      grid: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      startAngle: 0\n    }\n  }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n  cutout: 0,\n  rotation: 0,\n  circumference: 360,\n  radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n    line.points = points;\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n      this.updateElement(line, undefined, properties, mode);\n    }\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  indexAxis: 'r',\n  showLine: true,\n  elements: {\n    line: {\n      fill: 'start'\n    }\n  },\n};\nRadarController.overrides = {\n  aspectRatio: 1,\n  scales: {\n    r: {\n      type: 'radialLinear',\n    }\n  }\n};\n\nclass Element {\n  constructor() {\n    this.x = undefined;\n    this.y = undefined;\n    this.active = false;\n    this.options = undefined;\n    this.$animations = undefined;\n  }\n  tooltipPosition(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n  getProps(props, final) {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      return this;\n    }\n    const ret = {};\n    props.forEach(prop => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n    });\n    return ret;\n  }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n  values(value) {\n    return isArray(value) ? value : '' + value;\n  },\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue;\n    if (ticks.length > 1) {\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n      delta = calculateDelta(tickValue, ticks);\n    }\n    const logDelta = log10(Math.abs(delta));\n    const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n    return formatNumber(tickValue, locale, options);\n  },\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n    if (remain === 1 || remain === 2 || remain === 5) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n};\nfunction calculateDelta(tickValue, ticks) {\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n  display: true,\n  offset: false,\n  reverse: false,\n  beginAtZero: false,\n  bounds: 'ticks',\n  grace: 0,\n  grid: {\n    display: true,\n    lineWidth: 1,\n    drawBorder: true,\n    drawOnChartArea: true,\n    drawTicks: true,\n    tickLength: 8,\n    tickWidth: (_ctx, options) => options.lineWidth,\n    tickColor: (_ctx, options) => options.color,\n    offset: false,\n    borderDash: [],\n    borderDashOffset: 0.0,\n    borderWidth: 1\n  },\n  title: {\n    display: false,\n    text: '',\n    padding: {\n      top: 4,\n      bottom: 4\n    }\n  },\n  ticks: {\n    minRotation: 0,\n    maxRotation: 50,\n    mirror: false,\n    textStrokeWidth: 0,\n    textStrokeColor: '',\n    padding: 3,\n    display: true,\n    autoSkip: true,\n    autoSkipPadding: 3,\n    labelOffset: 0,\n    callback: Ticks.formatters.values,\n    minor: {},\n    major: {},\n    align: 'center',\n    crossAlign: 'near',\n    showLabelBackdrop: false,\n    backdropColor: 'rgba(255, 255, 255, 0.75)',\n    backdropPadding: 2,\n  }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n  _fallback: false,\n  _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n  _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n  _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n  _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n  _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n  next = start;\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n  if (len < 2) {\n    return false;\n  }\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6;\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n  return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\nfunction titleAlign(align, position, reverse) {\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n  constructor(cfg) {\n    super();\n    this.id = cfg.id;\n    this.type = cfg.type;\n    this.options = undefined;\n    this.ctx = cfg.ctx;\n    this.chart = cfg.chart;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.maxWidth = undefined;\n    this.maxHeight = undefined;\n    this.paddingTop = undefined;\n    this.paddingBottom = undefined;\n    this.paddingLeft = undefined;\n    this.paddingRight = undefined;\n    this.axis = undefined;\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    this.ticks = [];\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    this._startPixel = undefined;\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n  init(options) {\n    this.options = options.setContext(this.getContext());\n    this.axis = options.axis;\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n  parse(raw, index) {\n    return raw;\n  }\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isNumberFinite(_userMin),\n      maxDefined: isNumberFinite(_userMax)\n    };\n  }\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n  getTicks() {\n    return this.ticks;\n  }\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n  beforeUpdate() {\n    callback(this.options.beforeUpdate, [this]);\n  }\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n    this.beforeUpdate();\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n    this.beforeBuildTicks();\n    this.ticks = this.buildTicks() || [];\n    this.afterBuildTicks();\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n    this.configure();\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation();\n    this.afterCalculateLabelRotation();\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n    if (samplingEnabled) {\n      this._convertTicksToLabels(this.ticks);\n    }\n    this.beforeFit();\n    this.fit();\n    this.afterFit();\n    this.afterUpdate();\n  }\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n  afterUpdate() {\n    callback(this.options.afterUpdate, [this]);\n  }\n  beforeSetDimensions() {\n    callback(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = 0;\n      this.bottom = this.height;\n    }\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    callback(this.options.afterSetDimensions, [this]);\n  }\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    callback(this.options[name], [this]);\n  }\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n  beforeTickToLabelConversion() {\n    callback(this.options.beforeTickToLabelConversion, [this]);\n  }\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    callback(this.options.afterTickToLabelConversion, [this]);\n  }\n  beforeCalculateLabelRotation() {\n    callback(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = this.ticks.length;\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    callback(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n  beforeFit() {\n    callback(this.options.beforeFit, [this]);\n  }\n  fit() {\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight;\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n        if (isHorizontal) {\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n    this._handleMargins();\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n  afterFit() {\n    callback(this.options.afterFit, [this]);\n  }\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  isFullSize() {\n    return this.options.fullSize;\n  }\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n    this.generateTickLabels(ticks);\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n    this.afterTickToLabelConversion();\n  }\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n    }\n    return labelSizes;\n  }\n  _computeLabelSizes(ticks, length) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j];\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n  getLabelForValue(value) {\n    return value;\n  }\n  getPixelForValue(value, index) {\n    return NaN;\n  }\n  getValueForPixel(pixel) {}\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n  getBaseValue() {\n    const {min, max} = this;\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n  getContext(index) {\n    const ticks = this.ticks || [];\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n  _isVisible() {\n    const display = this.options.display;\n    if (display !== 'auto') {\n      return !!display;\n    }\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const optsAtIndex = grid.setContext(this.getContext(i));\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndex.borderDash || [];\n      const borderDashOffset = optsAtIndex.borderDashOffset;\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n      lineValue = getPixelForGridLine(this, i, offset);\n      if (lineValue === undefined) {\n        continue;\n      }\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n    return items;\n  }\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n      if (isHorizontal) {\n        x = pixel;\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n      let backdrop;\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n        let top = y + textOffset - labelPadding.top;\n        let left = x - labelPadding.left;\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        }\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        }\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n          color: optsAtIndex.backdropColor,\n        };\n      }\n      items.push({\n        rotation,\n        label,\n        font,\n        color,\n        strokeColor,\n        strokeWidth,\n        textOffset,\n        textAlign: tickTextAlign,\n        textBaseline,\n        translation: [x, y],\n        backdrop,\n      });\n    }\n    return items;\n  }\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n    let align = 'center';\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n    return align;\n  }\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n    let textAlign;\n    let x;\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n    return {textAlign, x};\n  }\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n    const chart = this.chart;\n    const position = this.options.position;\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n  drawBorder() {\n    const {chart, ctx, options: {grid}} = this;\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.borderWidth;\n    ctx.strokeStyle = borderOpts.borderColor;\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n    ctx.restore();\n  }\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n    if (!optionTicks.display) {\n      return;\n    }\n    const ctx = this.ctx;\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    let i, ilen;\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      const item = items[i];\n      const tickFont = item.font;\n      const label = item.label;\n      if (item.backdrop) {\n        ctx.fillStyle = item.backdrop.color;\n        ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n      }\n      let y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, item);\n    }\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n    if (!title.display) {\n      return;\n    }\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: gz + 1,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n\nclass TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n    if (isIChartComponent(proto)) {\n      parentScope = this.register(proto);\n    }\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n    if (id in items) {\n      return scope;\n    }\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n    return scope;\n  }\n  get(id) {\n    return this.items[id];\n  }\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n    if (id in items) {\n      delete items[id];\n    }\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\nfunction registerDefaults(item, scope, parentScope) {\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n  defaults.set(scope, itemDefaults);\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n  add(...args) {\n    this._each('register', args);\n  }\n  remove(...args) {\n    this._each('unregister', args);\n  }\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        each(arg, item => {\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    callback(component['before' + camelMethod], [], component);\n    registry[method](component);\n    callback(component['after' + camelMethod], [], component);\n  }\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    return this.plugins;\n  }\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    if (this.options.showLine) {\n      const {dataset: line, _dataset} = meta;\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    }\n    this.updateElements(points, start, count, mode);\n  }\n  addElements() {\n    const {showLine} = this.options;\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = registry.getElement('line');\n    }\n    super.addElements();\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  showLine: false,\n  fill: false\n};\nScatterController.overrides = {\n  interaction: {\n    mode: 'point'\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(item) {\n          return '(' + item.label + ', ' + item.formattedValue + ')';\n        }\n      }\n    }\n  },\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n  constructor(options) {\n    this.options = options || {};\n  }\n  init(chartOptions) {}\n  formats() {\n    return abstract();\n  }\n  parse(value, format) {\n    return abstract();\n  }\n  format(timestamp, format) {\n    return abstract();\n  }\n  add(timestamp, amount, unit) {\n    return abstract();\n  }\n  diff(a, b, unit) {\n    return abstract();\n  }\n  startOf(timestamp, unit, weekday) {\n    return abstract();\n  }\n  endOf(timestamp, unit) {\n    return abstract();\n  }\n}\nDateAdapter.override = function(members) {\n  Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n  _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\nvar Interaction = {\n  evaluateInteractionItems,\n  modes: {\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n      if (!items.length) {\n        return [];\n      }\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n      return elements;\n    },\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n      return items;\n    },\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n  if (!isObject(pos)) {\n    if (layout.size) {\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n    refit |= same && refitBoxes.length;\n    changed = changed || other;\n    if (!box.fullSize) {\n      refitBoxes.push(layout);\n    }\n  }\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n  chartArea.x = x;\n  chartArea.y = y;\n}\ndefaults.set('layout', {\n  autoPadding: true,\n  padding: {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n});\nvar layouts = {\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n    chart.boxes.push(item);\n  },\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n    handleMaxPadding(chartArea);\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n\nclass BasePlatform {\n  acquireContext(canvas, aspectRatio) {}\n  releaseContext(context) {\n    return false;\n  }\n  addEventListener(chart, type, listener) {}\n  removeEventListener(chart, type, listener) {}\n  getDevicePixelRatio() {\n    return 1;\n  }\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n  isAttached(canvas) {\n    return true;\n  }\n  updateConfig(config) {\n  }\n}\n\nclass BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n  style.display = style.display || 'block';\n  style.boxSizing = style.boxSizing || 'border-box';\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n  return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n  node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n  chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      listener();\n    }\n  }, window);\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n  return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart, (args) => {\n    const event = args[0];\n    return [event, event.offsetX, event.offsetY];\n  });\n  addListener(canvas, type, proxy);\n  return proxy;\n}\nclass DomPlatform extends BasePlatform {\n  acquireContext(canvas, aspectRatio) {\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n    if (context && context.canvas === canvas) {\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n    return null;\n  }\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n    canvas.width = canvas.width;\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n  addEventListener(chart, type, listener) {\n    this.removeEventListener(chart, type);\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n    if (!proxy) {\n      return;\n    }\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n\nfunction _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nclass PluginService {\n  constructor() {\n    this._init = [];\n  }\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n    return true;\n  }\n  invalidate() {\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n    const descriptors = this._cache = this._createDescriptors(chart);\n    this._notifyStateChanges(chart);\n    return descriptors;\n  }\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n  return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n  return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n\nfunction getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\nfunction determineAxis(id, scaleOptions) {\n  if (id === 'x' || id === 'y') {\n    return id;\n  }\n  return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const firstIDs = Object.create(null);\n  const scales = Object.create(null);\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    firstIDs[axis] = firstIDs[axis] || id;\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n  return scales;\n}\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n  initOptions(config);\n  return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\nclass Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n  get platform() {\n    return this._config.platform;\n  }\n  get type() {\n    return this._config.type;\n  }\n  set type(type) {\n    this._config.type = type;\n  }\n  get data() {\n    return this._config.data;\n  }\n  set data(data) {\n    this._config.data = initData(data);\n  }\n  get options() {\n    return this._config.options;\n  }\n  set options(options) {\n    this._config.options = options;\n  }\n  get plugins() {\n    return this._config.plugins;\n  }\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n    const scopes = new Set();\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n  chartOptionScopes() {\n    const {options, type} = this;\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {},\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  chart.notifyPlugins('afterRender');\n  callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    item = item[0];\n  }\n  if (item && item.canvas) {\n    item = item.canvas;\n  }\n  return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\nclass Chart {\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n    instances[this.id] = this;\n    if (!context || !canvas) {\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      return aspectRatio;\n    }\n    if (maintainAspectRatio && _aspectRatio) {\n      return _aspectRatio;\n    }\n    return height ? width / height : null;\n  }\n  get data() {\n    return this.config.data;\n  }\n  set data(data) {\n    this.config.data = data;\n  }\n  get options() {\n    return this._options;\n  }\n  set options(options) {\n    this.config.options = options;\n  }\n  _initialize() {\n    this.notifyPlugins('beforeInit');\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n    this.bindEvents();\n    this.notifyPlugins('afterInit');\n    return this;\n  }\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n    this.notifyPlugins('resize', {size: newSize});\n    callback(options.onResize, [this, newSize], this);\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        this.render();\n      }\n    }\n  }\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n      scale.init(scaleOptions, options);\n    });\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n    this._removeUnreferencedMetasets();\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass.prototype, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n    this._updateMetasets();\n    return newControllers;\n  }\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n  update(mode) {\n    const config = this.config;\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n    this._plugins.invalidate();\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    const newControllers = this.buildOrUpdateControllers();\n    this.notifyPlugins('beforeElementsUpdate');\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n    if (!animsDisabled) {\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n    this._updateDatasets(mode);\n    this.notifyPlugins('afterUpdate', {mode});\n    this._layers.sort(compare2Level('z', '_idx'));\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n    this.render();\n  }\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n    layouts.update(this, this.width, this.height, minPadding);\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        return;\n      }\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n    this.notifyPlugins('afterLayout');\n  }\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n    meta.controller._update(mode);\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      this._resize(width, height);\n      this._resizeBeforeDraw = null;\n    }\n    this.clear();\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this._drawDatasets();\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this.notifyPlugins('afterDraw');\n  }\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = this.chartArea;\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n    meta.controller.draw();\n    if (useClip) {\n      unclipArea(ctx);\n    }\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n    return [];\n  }\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n    return meta;\n  }\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n    const meta = this.getDatasetMeta(datasetIndex);\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n    this._stop();\n    this.config.clearCache();\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n    this.notifyPlugins('destroy');\n    delete instances[this.id];\n    this.notifyPlugins('afterDestroy');\n  }\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n    each(this.options.events, (type) => _add(type, listener));\n  }\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n    let detached;\n    const attached = () => {\n      _remove('attach', attached);\n      this.attached = true;\n      this.resize();\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n    detached = () => {\n      this.attached = false;\n      _remove('resize', listener);\n      this._stop();\n      this._resize(0, 0);\n      _add('attach', attached);\n    };\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed) {\n      this._active = active;\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n    if (changed || args.changed) {\n      this.render();\n    }\n    return this;\n  }\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n    if (inChartArea) {\n      this._lastEvent = null;\n      callback(options.onHover, [e, active, this], this);\n      if (isClick) {\n        callback(options.onClick, [e, active, this], this);\n      }\n    }\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n    this._lastEvent = lastEvent;\n    return changed;\n  }\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n  defaults: {\n    enumerable,\n    value: defaults\n  },\n  instances: {\n    enumerable,\n    value: instances\n  },\n  overrides: {\n    enumerable,\n    value: overrides\n  },\n  registry: {\n    enumerable,\n    value: registry\n  },\n  version: {\n    enumerable,\n    value: version\n  },\n  getChart: {\n    enumerable,\n    value: getChart\n  },\n  register: {\n    enumerable,\n    value: (...items) => {\n      registry.add(...items);\n      invalidatePlugins();\n    }\n  },\n  unregister: {\n    enumerable,\n    value: (...items) => {\n      registry.remove(...items);\n      invalidatePlugins();\n    }\n  }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\nfunction rThetaToXY(r, theta, x, y) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n  let spacingOffset = 0;\n  const alpha = end - start;\n  if (spacing) {\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n  ctx.beginPath();\n  if (circular) {\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n  ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + circumference % TAU;\n      if (circumference % TAU === 0) {\n        endAngle += TAU;\n      }\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n  const {x, y, startAngle, pixelMargin, fullCircles} = element;\n  const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n  const innerRadius = element.innerRadius + pixelMargin;\n  let i;\n  if (inner) {\n    clipArc(ctx, element, startAngle + TAU);\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n  const {options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const inner = options.borderAlign === 'inner';\n  if (!borderWidth) {\n    return;\n  }\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n  if (element.fullCircles) {\n    drawFullCircleBorders(ctx, element, inner);\n  }\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.stroke();\n}\nclass ArcElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(chartX, chartY, useFinalPosition) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = this.options.spacing / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n    return (betweenAngles && withinRadius);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference',\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n  tooltipPosition(useFinalPosition) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n  draw(ctx) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 2;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n    ctx.save();\n    let radiusOffset = 0;\n    if (offset) {\n      radiusOffset = offset / 2;\n      const halfAngle = (this.startAngle + this.endAngle) / 2;\n      ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n      if (this.circumference >= PI) {\n        radiusOffset = offset;\n      }\n    }\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n    ctx.restore();\n  }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n  borderAlign: 'center',\n  borderColor: '#fff',\n  borderJoinStyle: undefined,\n  borderRadius: 0,\n  borderWidth: 2,\n  offset: 0,\n  spacing: 0,\n  angle: undefined,\n  circular: true,\n};\nArcElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n  return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n    if (point.skip) {\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n    prev = point;\n  }\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n  return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n    if (point.skip) {\n      continue;\n    }\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      ctx.lineTo(x, y);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    lastY = y;\n  }\n  drawX();\n}\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n  return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\nclass LineElement extends Element {\n  constructor(cfg) {\n    super();\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n  get points() {\n    return this._points;\n  }\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n    if (!segments.length) {\n      return;\n    }\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n    start = start || 0;\n    count = count || (this.points.length - start);\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n    if (points.length && options.borderWidth) {\n      ctx.save();\n      draw(ctx, this, start, count);\n      ctx.restore();\n    }\n    if (this.animated) {\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderWidth: 3,\n  capBezierPoints: true,\n  cubicInterpolationMode: 'default',\n  fill: false,\n  spanGaps: false,\n  stepped: false,\n  tension: 0,\n};\nLineElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n  _scriptable: true,\n  _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange$1(this, mouseX, 'x', useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange$1(this, mouseY, 'y', useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  size(options) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n  draw(ctx, area) {\n    const options = this.options;\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n  getRange() {\n    const options = this.options || {};\n    return options.radius + options.hitRadius;\n  }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n  borderWidth: 1,\n  hitRadius: 1,\n  hoverBorderWidth: 1,\n  hoverRadius: 4,\n  pointStyle: 'circle',\n  radius: 3,\n  rotation: 0\n};\nPointElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n  let left, right, top, bottom, half;\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n  return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n  const enableBorder = enableBorderRadius || isObject(value);\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\nclass BarElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n    ctx.save();\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n    ctx.restore();\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n  borderSkipped: 'start',\n  borderWidth: 0,\n  borderRadius: 0,\n  inflateAmount: 'auto',\n  pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  const samples = options.samples || availableWidth;\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n  const decimated = [];\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n  decimated[sampledIndex++] = data[a];\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n    maxArea = area = -1;\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n  decimated[sampledIndex++] = data[endIndex];\n  return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      const lastIndex = i - 1;\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n      if (i > 0 && lastIndex !== startIndex) {\n        decimated.push(data[lastIndex]);\n      }\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n  return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {value: data});\n  }\n}\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n  let start = 0;\n  let count;\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n  return {start, count};\n}\nvar plugin_decimation = {\n  id: 'decimation',\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      cleanDecimatedData(chart);\n      return;\n    }\n    const availableWidth = chart.width;\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        return;\n      }\n      if (!meta.controller.supportsDecimation) {\n        return;\n      }\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        return;\n      }\n      if (chart.options.parsing) {\n        return;\n      }\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n      if (isNullOrUndef(_data)) {\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n      dataset._decimated = decimated;\n    });\n  },\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n\nfunction _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n    if (!target.segments) {\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n    const targetSegments = _boundSegments(target, bounds);\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n  if (isArray(boundary)) {\n    _loop = true;\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\nfunction _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n  if (!propagate) {\n    return fill;\n  }\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isNumberFinite(fill)) {\n      return fill;\n    }\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n    if (target.visible) {\n      return fill;\n    }\n    visited.push(fill);\n    fill = target.fill;\n  }\n  return false;\n}\nfunction _decodeFill(line, index, count) {\n  const fill = parseFillOption(line);\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n  let target = parseFloat(fill);\n  if (isNumberFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n  return target;\n}\nfunction _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n  let value;\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n  if (fill === false || fill === null) {\n    return false;\n  }\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n\nfunction _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n\nclass simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n\nfunction _getTarget(source) {\n  const {chart, fill, line} = source;\n  if (isNumberFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n  if (fill === 'shape') {\n    return true;\n  }\n  const boundary = computeBoundary(source);\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n  return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n  if (isNumberFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n  return null;\n}\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n  ctx.save();\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n  ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n    ctx.beginPath();\n    const lineLoop = !!line.pathSegment(ctx, src);\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n    ctx.restore();\n  }\n}\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\nvar index = {\n  id: 'filler',\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n      meta.$filler = source;\n      sources.push(source);\n    }\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n  constructor(config) {\n    super();\n    this._added = false;\n    this.legendHitBoxes = [];\n    this._hoveredItem = null;\n    this.doughnutMode = false;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n    this.legendItems = legendItems;\n  }\n  fit() {\n    const {options, ctx} = this;\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n    let width, height;\n    ctx.font = labelFont.string;\n    if (this.isHorizontal()) {\n      width = this.maxWidth;\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight;\n      width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    }\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n    return totalHeight;\n  }\n  _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n    let left = 0;\n    let col = 0;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight});\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight});\n    return totalWidth;\n  }\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n      this._draw();\n      unclipArea(ctx);\n    }\n  }\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {color: fontColor, padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n    this.drawTitle();\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n      ctx.save();\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n      if (labelOpts.usePointStyle) {\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n        ctx.beginPath();\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\n    };\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n    overrideTextDirection(this.ctx, opts.textDirection);\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor || fontColor;\n      ctx.fillStyle = legendItem.fontColor || fontColor;\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n      rtlHelper.setWidth(this.width);\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n      const realX = rtlHelper.x(x);\n      drawLegendBox(realX, y, legendItem);\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n      fillText(rtlHelper.x(x), y, legendItem);\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    if (!titleOpts.display) {\n      return;\n    }\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n    let left = this.left;\n    let maxWidth = this.width;\n    if (this.isHorizontal()) {\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n    const x = _alignStartEnd(position, left, left + maxWidth);\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          return this.legendItems[i];\n        }\n      }\n    }\n    return null;\n  }\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        callback(opts.onLeave, [e, previous, this], this);\n      }\n      this._hoveredItem = hoveredItem;\n      if (hoveredItem && !sameItem) {\n        callback(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      callback(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\nvar plugin_legend = {\n  id: 'legend',\n  _element: Legend,\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n    onHover: null,\n    onLeave: null,\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: 0,\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n\nclass Title extends Element {\n  constructor(config) {\n    super();\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n    this.left = 0;\n    this.top = 0;\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    if (!opts.display) {\n      return;\n    }\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\nvar plugin_title = {\n  id: 'title',\n  _element: Title,\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n  id: 'subtitle',\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst positioners = {\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n    let i, len;\n    let x = 0;\n    let y = 0;\n    let count = 0;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        x += pos.x;\n        y += pos.y;\n        ++count;\n      }\n    }\n    return {\n      x: x / count,\n      y: y / count\n    };\n  },\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n    return {\n      x,\n      y\n    };\n  }\n};\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n  return base;\n}\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n  ctx.save();\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n  widthPadding = 0;\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n  ctx.restore();\n  width += padding.width;\n  return {width, height};\n}\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n  return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n  constructor(config) {\n    super();\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart || config._chart;\n    this._chart = this.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n    if (cached) {\n      return cached;\n    }\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n  getTitle(context, options) {\n    const {callbacks} = options;\n    const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n    const title = callbacks.title.apply(this, [context]);\n    const afterTitle = callbacks.afterTitle.apply(this, [context]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n    return lines;\n  }\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n  }\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n      pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n      bodyItems.push(bodyItem);\n    });\n    return bodyItems;\n  }\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n  }\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n    const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n    const footer = callbacks.footer.apply(this, [tooltipItems]);\n    const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n    return lines;\n  }\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(scoped.labelColor.call(this, context));\n      labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n      labelTextColors.push(scoped.labelTextColor.call(this, context));\n    });\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.titleAlign, options);\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing;\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing;\n        }\n      }\n    }\n  }\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColors = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2,\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.fillStyle = labelColors.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.setLineDash(labelColors.borderDash || []);\n      ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n      const borderRadius = toTRBLCorners(labelColors.borderRadius);\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n      lines = bodyItem.lines;\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n      each(bodyItem.after, fillLineOfText);\n    }\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing;\n  }\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n      footerFont = toFont(options.footerFont);\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n    ctx.fill();\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n  _willRender() {\n    return !!this.opacity;\n  }\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n    if (!opacity) {\n      return;\n    }\n    this._updateAnimationTarget(options);\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n    const padding = toPadding(options.padding);\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n      this.drawBackground(pt, ctx, tooltipSize, options);\n      overrideTextDirection(ctx, options.textDirection);\n      pt.y += padding.top;\n      this.drawTitle(pt, ctx, options);\n      this.drawBody(pt, ctx, options);\n      this.drawFooter(pt, ctx, options);\n      restoreTextDirection(ctx, options.textDirection);\n      ctx.restore();\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n    const positionChanged = this._positionChanged(active, e);\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n    if (changed) {\n      this._active = active;\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n        this.update(true, replay);\n      }\n    }\n    return changed;\n  }\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n    if (options.reverse) {\n      active.reverse();\n    }\n    return active;\n  }\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n      if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n        return;\n      }\n      tooltip.draw(chart.ctx);\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        args.changed = true;\n      }\n    }\n  },\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: {\n      beforeTitle: noop,\n      title(tooltipItems) {\n        if (tooltipItems.length > 0) {\n          const item = tooltipItems[0];\n          const labels = item.chart.data.labels;\n          const labelCount = labels ? labels.length : 0;\n          if (this && this.options && this.options.mode === 'dataset') {\n            return item.dataset.label || '';\n          } else if (item.label) {\n            return item.label;\n          } else if (labelCount > 0 && item.dataIndex < labelCount) {\n            return labels[item.dataIndex];\n          }\n        }\n        return '';\n      },\n      afterTitle: noop,\n      beforeBody: noop,\n      beforeLabel: noop,\n      label(tooltipItem) {\n        if (this && this.options && this.options.mode === 'dataset') {\n          return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n        }\n        let label = tooltipItem.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        const value = tooltipItem.formattedValue;\n        if (!isNullOrUndef(value)) {\n          label += value;\n        }\n        return label;\n      },\n      labelColor(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          borderColor: options.borderColor,\n          backgroundColor: options.backgroundColor,\n          borderWidth: options.borderWidth,\n          borderDash: options.borderDash,\n          borderDashOffset: options.borderDashOffset,\n          borderRadius: 0,\n        };\n      },\n      labelTextColor() {\n        return this.options.bodyColor;\n      },\n      labelPointStyle(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          pointStyle: options.pointStyle,\n          rotation: options.rotation,\n        };\n      },\n      afterLabel: noop,\n      afterBody: noop,\n      beforeFooter: noop,\n      footer: noop,\n      afterFooter: noop\n    }\n  },\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n  additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    const labels = this.getLabels();\n    if (value >= 0 && value < labels.length) {\n      return labels[value];\n    }\n    return value;\n  }\n  configure() {\n    super.configure();\n    if (!this.isHorizontal()) {\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n  getBasePixel() {\n    return this.bottom;\n  }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n  ticks: {\n    callback: CategoryScale.prototype.getLabelForValue\n  }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n  const ticks = [];\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n  if (!isNullOrUndef(precision)) {\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    numSpaces = (niceMax - niceMin) / spacing;\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n      if (niceMin < min) {\n        j++;\n      }\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n  for (; j < numSpaces; ++j) {\n    ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n  }\n  if (maxDefined && includeBounds && niceMax !== max) {\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n  return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n    return +raw;\n  }\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n    if (min === max) {\n      let offset = 1;\n      if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n        offset = Math.abs(max * 0.05);\n      }\n      setMax(max + offset);\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n    return maxTicks;\n  }\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n    super.configure();\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n\nclass LinearScale extends LinearScaleBase {\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? min : 0;\n    this.max = isNumberFinite(max) ? max : 1;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.numeric\n  }\n};\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n  return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n  const endExp = Math.floor(log10(dataRange.max));\n  const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n  const ticks = [];\n  let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n  let exp = Math.floor(log10(tickVal));\n  let significand = Math.floor(tickVal / Math.pow(10, exp));\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  do {\n    ticks.push({value: tickVal, major: isMajor(tickVal)});\n    ++significand;\n    if (significand === 10) {\n      significand = 1;\n      ++exp;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n  } while (exp < endExp || (exp === endExp && significand < endSignificand));\n  const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n  ticks.push({value: lastTick, major: isMajor(tickVal)});\n  return ticks;\n}\nclass LogarithmicScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isNumberFinite(value) && value > 0 ? value : null;\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n    this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n    this.handleTickRangeOptions();\n  }\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n    if (min === max) {\n      if (min <= 0) {\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(exp(min, -1));\n        setMax(exp(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(exp(max, -1));\n    }\n    if (max <= 0) {\n      setMax(exp(min, +1));\n    }\n    if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n      setMin(exp(min, -1));\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n  configure() {\n    const start = this.min;\n    super.configure();\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.logarithmic,\n    major: {\n      enabled: true\n    }\n  }\n};\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\nfunction fitWithPointLabels(scale) {\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const extra = getTickBackdropHeight(opts) / 2;\n  const outerDistance = scale.drawingArea;\n  const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n    const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n    const size = labelSizes[i];\n    const y = yForAngle(pointLabelPosition.y, size.h, angle);\n    const textAlign = getTextAlignForAngle(angle);\n    const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n    items.push({\n      x: pointLabelPosition.x,\n      y,\n      textAlign,\n      left,\n      top: y,\n      right: left + size.w,\n      bottom: y + size.h\n    });\n  }\n  return items;\n}\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n  return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n    const {backdropColor} = optsAtIndex;\n    if (!isNullOrUndef(backdropColor)) {\n      const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n      const padding = toPadding(optsAtIndex.backdropPadding);\n      ctx.fillStyle = backdropColor;\n      const backdropLeft = left - padding.left;\n      const backdropTop = top - padding.top;\n      const backdropWidth = right - left + padding.width;\n      const backdropHeight = bottom - top + padding.height;\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: backdropLeft,\n          y: backdropTop,\n          w: backdropWidth,\n          h: backdropHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n      }\n    }\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n  const {color, lineWidth} = gridLineOpts;\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(gridLineOpts.borderDash);\n  ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\nclass RadialLinearScale extends LinearScaleBase {\n  constructor(cfg) {\n    super(cfg);\n    this.xCenter = undefined;\n    this.yCenter = undefined;\n    this.drawingArea = undefined;\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n  setDimensions() {\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n    this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n  fit() {\n    const opts = this.options;\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid} = opts;\n    const labelCount = this._pointLabels.length;\n    let i, offset, position;\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const optsAtIndex = grid.setContext(this.getContext(index - 1));\n          drawRadiusLine(this, optsAtIndex, offset, labelCount);\n        }\n      });\n    }\n    if (angleLines.display) {\n      ctx.save();\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n        if (!lineWidth || !color) {\n          continue;\n        }\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n        offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n      ctx.restore();\n    }\n  }\n  drawBorder() {}\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    if (!tickOpts.display) {\n      return;\n    }\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    this.ticks.forEach((tick, index) => {\n      if (index === 0 && !opts.reverse) {\n        return;\n      }\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n      });\n    });\n    ctx.restore();\n  }\n  drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n  display: true,\n  animate: true,\n  position: 'chartArea',\n  angleLines: {\n    display: true,\n    lineWidth: 1,\n    borderDash: [],\n    borderDashOffset: 0.0\n  },\n  grid: {\n    circular: false\n  },\n  startAngle: 0,\n  ticks: {\n    showLabelBackdrop: true,\n    callback: Ticks.formatters.numeric\n  },\n  pointLabels: {\n    backdropColor: undefined,\n    backdropPadding: 2,\n    display: true,\n    font: {\n      size: 10\n    },\n    callback(label) {\n      return label;\n    },\n    padding: 5,\n    centerPointLabels: false\n  }\n};\nRadialLinearScale.defaultRoutes = {\n  'angleLines.color': 'borderColor',\n  'pointLabels.color': 'color',\n  'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n  angleLines: {\n    _fallback: 'grid'\n  }\n};\n\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n  return a - b;\n}\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n  if (!isNumberFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, parser)\n      : adapter.parse(value);\n  }\n  if (value === null) {\n    return null;\n  }\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n  return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n  return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n  constructor(props) {\n    super(props);\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n    this._unit = 'day';\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n  init(scaleOpts, opts) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n    adapter.init(opts);\n    mergeIf(time.displayFormats, adapter.formats());\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n    super.init(scaleOpts);\n    this._normalized = opts.normalized;\n  }\n  parse(raw, index) {\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n    if (!minDefined || !maxDefined) {\n      _applyBounds(this._getLabelBounds());\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n    min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n    const min = this.min;\n    const max = this.max;\n    const ticks = _filterBetween(timestamps, min, max);\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n    if (options.reverse) {\n      ticks.reverse();\n    }\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n  afterAutoSkip() {\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n  initOffsets(timestamps) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n    return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n  }\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n    const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n    const formatter = options.ticks.callback;\n    return formatter ? callback(formatter, [label, index, ticks], this) : label;\n  }\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const metas = this.getMatchingVisibleMetas();\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n    return (this._cache.data = this.normalize(timestamps));\n  }\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n  normalize(values) {\n    return _arrayUnique(values.sort(sorter));\n  }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n  bounds: 'data',\n  adapters: {},\n  time: {\n    parser: false,\n    unit: false,\n    round: false,\n    isoWeekday: false,\n    minUnit: 'millisecond',\n    displayFormats: {}\n  },\n  ticks: {\n    source: 'auto',\n    major: {\n      enabled: false\n    }\n  }\n};\n\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n  constructor(props) {\n    super(props);\n    this._table = [];\n    this._minPos = undefined;\n    this._tableRange = undefined;\n  }\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n    if (items.length < 2) {\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n    return timestamps;\n  }\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n  let id = 0;\n  return function() {\n    return id++;\n  };\n}());\nfunction isNullOrUndef(value) {\n  return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\nfunction isObject(value) {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : value / dimension;\nconst toDimension = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\nfunction callback(fn, args, thisArg) {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n  let i, len, keys;\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\nfunction _elementsEqual(a0, a1) {\n  let i, ilen, v0, v1;\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone$1(source) {\n  if (isArray(source)) {\n    return source.map(clone$1);\n  }\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone$1(source[keys[k]]);\n    }\n    return target;\n  }\n  return source;\n}\nfunction isValidKey(key) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone$1(sval);\n  }\n}\nfunction merge(target, source, options) {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n  if (!isObject(target)) {\n    return target;\n  }\n  options = options || {};\n  const merger = options.merger || _merger;\n  for (let i = 0; i < ilen; ++i) {\n    source = sources[i];\n    if (!isObject(source)) {\n      continue;\n    }\n    const keys = Object.keys(source);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, source, options);\n    }\n  }\n  return target;\n}\nfunction mergeIf(target, source) {\n  return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone$1(sval);\n  }\n}\nfunction _deprecated(scope, value, previous, current) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\nconst keyResolvers = {\n  '': v => v,\n  x: o => o.x,\n  y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\nfunction _splitKey(key) {\n  const parts = key.split('.');\n  const keys = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\nfunction _capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n};\nfunction _isClickEvent(e) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n  const result = [];\n  const sqrt = Math.sqrt(value);\n  let i;\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) {\n    result.push(sqrt);\n  }\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\nfunction isNumber(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n  return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n  let i, ilen, value;\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\nfunction toRadians(degrees) {\n  return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n  return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n  if (!isNumberFinite(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n  if (angle < (-0.5 * PI)) {\n    angle += TAU;\n  }\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n  return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n  return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n  return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid;\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n  return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n  _lookup(table, value, last\n    ? index => table[index][key] <= value\n    : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n  let start = 0;\n  let end = values.length;\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n        return res;\n      }\n    });\n  });\n}\nfunction unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n  if (listeners.length > 0) {\n    return;\n  }\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n  delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n  const set = new Set();\n  let i, ilen;\n  for (i = 0, ilen = items.length; i < ilen; ++i) {\n    set.add(items[i]);\n  }\n  if (set.size === ilen) {\n    return items;\n  }\n  return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n  const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n  let ticking = false;\n  let args = [];\n  return function(...rest) {\n    args = updateArgs(rest);\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, args);\n      });\n    }\n  };\n}\nfunction debounce(fn, delay) {\n  let timeout;\n  return function(...args) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n  const pointCount = points.length;\n  let start = 0;\n  let count = pointCount;\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        _lookupByKey(_parsed, iScale.axis, min).lo,\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n  return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n  linear: t => t,\n  easeInQuad: t => t * t,\n  easeOutQuad: t => -t * (t - 2),\n  easeInOutQuad: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n  easeInCubic: t => t * t * t,\n  easeOutCubic: t => (t -= 1) * t * t + 1,\n  easeInOutCubic: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n  easeInQuart: t => t * t * t * t,\n  easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n  easeInOutQuart: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n  easeInQuint: t => t * t * t * t * t,\n  easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n  easeInOutQuint: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n  easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n  easeOutSine: t => Math.sin(t * HALF_PI),\n  easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n  easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n  easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n  easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n  easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n  easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n  easeInOutCirc: t => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n  easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n  easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n  easeInOutElastic(t) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n  easeInBack(t) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n  easeOutBack(t) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n  easeInOutBack(t) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n  easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n  easeOutBounce(t) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n  easeInOutBounce: t => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n  x: 'dark',\n  Z: 'light',\n  Y: 're',\n  X: 'blu',\n  W: 'gr',\n  V: 'medium',\n  U: 'slate',\n  A: 'ee',\n  T: 'ol',\n  S: 'or',\n  B: 'ra',\n  C: 'lateg',\n  D: 'ights',\n  R: 'in',\n  Q: 'turquois',\n  E: 'hi',\n  P: 'ro',\n  O: 'al',\n  N: 'le',\n  M: 'de',\n  L: 'yello',\n  F: 'en',\n  K: 'ch',\n  G: 'arks',\n  H: 'ea',\n  I: 'ightg',\n  J: 'wh'\n};\nconst names$1 = {\n  OiceXe: 'f0f8ff',\n  antiquewEte: 'faebd7',\n  aqua: 'ffff',\n  aquamarRe: '7fffd4',\n  azuY: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '0',\n  blanKedOmond: 'ffebcd',\n  Xe: 'ff',\n  XeviTet: '8a2be2',\n  bPwn: 'a52a2a',\n  burlywood: 'deb887',\n  caMtXe: '5f9ea0',\n  KartYuse: '7fff00',\n  KocTate: 'd2691e',\n  cSO: 'ff7f50',\n  cSnflowerXe: '6495ed',\n  cSnsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: 'ffff',\n  xXe: '8b',\n  xcyan: '8b8b',\n  xgTMnPd: 'b8860b',\n  xWay: 'a9a9a9',\n  xgYF: '6400',\n  xgYy: 'a9a9a9',\n  xkhaki: 'bdb76b',\n  xmagFta: '8b008b',\n  xTivegYF: '556b2f',\n  xSange: 'ff8c00',\n  xScEd: '9932cc',\n  xYd: '8b0000',\n  xsOmon: 'e9967a',\n  xsHgYF: '8fbc8f',\n  xUXe: '483d8b',\n  xUWay: '2f4f4f',\n  xUgYy: '2f4f4f',\n  xQe: 'ced1',\n  xviTet: '9400d3',\n  dAppRk: 'ff1493',\n  dApskyXe: 'bfff',\n  dimWay: '696969',\n  dimgYy: '696969',\n  dodgerXe: '1e90ff',\n  fiYbrick: 'b22222',\n  flSOwEte: 'fffaf0',\n  foYstWAn: '228b22',\n  fuKsia: 'ff00ff',\n  gaRsbSo: 'dcdcdc',\n  ghostwEte: 'f8f8ff',\n  gTd: 'ffd700',\n  gTMnPd: 'daa520',\n  Way: '808080',\n  gYF: '8000',\n  gYFLw: 'adff2f',\n  gYy: '808080',\n  honeyMw: 'f0fff0',\n  hotpRk: 'ff69b4',\n  RdianYd: 'cd5c5c',\n  Rdigo: '4b0082',\n  ivSy: 'fffff0',\n  khaki: 'f0e68c',\n  lavFMr: 'e6e6fa',\n  lavFMrXsh: 'fff0f5',\n  lawngYF: '7cfc00',\n  NmoncEffon: 'fffacd',\n  ZXe: 'add8e6',\n  ZcSO: 'f08080',\n  Zcyan: 'e0ffff',\n  ZgTMnPdLw: 'fafad2',\n  ZWay: 'd3d3d3',\n  ZgYF: '90ee90',\n  ZgYy: 'd3d3d3',\n  ZpRk: 'ffb6c1',\n  ZsOmon: 'ffa07a',\n  ZsHgYF: '20b2aa',\n  ZskyXe: '87cefa',\n  ZUWay: '778899',\n  ZUgYy: '778899',\n  ZstAlXe: 'b0c4de',\n  ZLw: 'ffffe0',\n  lime: 'ff00',\n  limegYF: '32cd32',\n  lRF: 'faf0e6',\n  magFta: 'ff00ff',\n  maPon: '800000',\n  VaquamarRe: '66cdaa',\n  VXe: 'cd',\n  VScEd: 'ba55d3',\n  VpurpN: '9370db',\n  VsHgYF: '3cb371',\n  VUXe: '7b68ee',\n  VsprRggYF: 'fa9a',\n  VQe: '48d1cc',\n  VviTetYd: 'c71585',\n  midnightXe: '191970',\n  mRtcYam: 'f5fffa',\n  mistyPse: 'ffe4e1',\n  moccasR: 'ffe4b5',\n  navajowEte: 'ffdead',\n  navy: '80',\n  Tdlace: 'fdf5e6',\n  Tive: '808000',\n  TivedBb: '6b8e23',\n  Sange: 'ffa500',\n  SangeYd: 'ff4500',\n  ScEd: 'da70d6',\n  pOegTMnPd: 'eee8aa',\n  pOegYF: '98fb98',\n  pOeQe: 'afeeee',\n  pOeviTetYd: 'db7093',\n  papayawEp: 'ffefd5',\n  pHKpuff: 'ffdab9',\n  peru: 'cd853f',\n  pRk: 'ffc0cb',\n  plum: 'dda0dd',\n  powMrXe: 'b0e0e6',\n  purpN: '800080',\n  YbeccapurpN: '663399',\n  Yd: 'ff0000',\n  Psybrown: 'bc8f8f',\n  PyOXe: '4169e1',\n  saddNbPwn: '8b4513',\n  sOmon: 'fa8072',\n  sandybPwn: 'f4a460',\n  sHgYF: '2e8b57',\n  sHshell: 'fff5ee',\n  siFna: 'a0522d',\n  silver: 'c0c0c0',\n  skyXe: '87ceeb',\n  UXe: '6a5acd',\n  UWay: '708090',\n  UgYy: '708090',\n  snow: 'fffafa',\n  sprRggYF: 'ff7f',\n  stAlXe: '4682b4',\n  tan: 'd2b48c',\n  teO: '8080',\n  tEstN: 'd8bfd8',\n  tomato: 'ff6347',\n  Qe: '40e0d0',\n  viTet: 'ee82ee',\n  JHt: 'f5deb3',\n  wEte: 'ffffff',\n  wEtesmoke: 'f5f5f5',\n  Lw: 'ffff00',\n  LwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n  return false;\n}\nfunction color(value) {\n  return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope$1(root, scope), values);\n  }\n  return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n  constructor(_descriptors) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n    this.describe(_descriptors);\n  }\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n  get(scope) {\n    return getScope$1(this, scope);\n  }\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope$1(this, scope);\n    const targetScopeObject = getScope$1(this, targetScope);\n    const privateName = '_' + name;\n    Object.defineProperties(scopeObject, {\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n}\nvar defaults = new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n});\n\nfunction toFontString(font) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n  ctx.save();\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i, j, jlen, thing, nestedThing;\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n    if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n  ctx.restore();\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n  ctx = ctx || canvas.getContext('2d');\n  ctx.save();\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n  drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n  let type, xOffset, yOffset, size, cornerRadius, width;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n  ctx.beginPath();\n  switch (style) {\n  default:\n    if (w) {\n      ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n    } else {\n      ctx.arc(x, y, radius, 0, TAU);\n    }\n    ctx.closePath();\n    break;\n  case 'triangle':\n    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n    ctx.closePath();\n    break;\n  case 'rect':\n    if (!rotation) {\n      size = Math.SQRT1_2 * radius;\n      width = w ? w / 2 : size;\n      ctx.rect(x - width, y - size, 2 * width, 2 * size);\n      break;\n    }\n    rad += QUARTER_PI;\n  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n  case 'cross':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'line':\n    xOffset = w ? w / 2 : Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    break;\n  case 'dash':\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\nfunction _isPointInArea(point, area, margin) {\n  margin = margin || 0.5;\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\nfunction unclipArea(ctx) {\n  ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i, line;\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n    y += font.lineHeight;\n  }\n  ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n  if (opts.strikethrough || opts.underline) {\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\nfunction addRoundedRectPath(ctx, rect) {\n  const {x, y, w, h, radius} = rect;\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n  ctx.lineTo(x + w, y + radius.topRight);\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n  ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n  value = +matches[2];\n  switch (matches[3]) {\n  case 'px':\n    return value;\n  case '%':\n    value /= 100;\n    break;\n  }\n  return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\nfunction toTRBL(value) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n  const obj = toTRBL(value);\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n  return obj;\n}\nfunction toFont(options, fallback) {\n  options = options || {};\n  fallback = fallback || defaults.font;\n  let size = valueOrDefault(options.size, fallback.size);\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = '';\n  }\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n  font.string = toFontString(font);\n  return font;\n}\nfunction resolve(inputs, context, index, info) {\n  let cacheable = true;\n  let i, ilen, value;\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\nfunction createContext(parentContext, context) {\n  return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n  if (!defined(fallback)) {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: rootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete target._keys;\n      delete scopes[0][prop];\n      return true;\n    },\n    get(target, prop) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n    has(target, prop) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n    set(target, prop, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value;\n      delete target._keys;\n      return true;\n    }\n  });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n  const cache = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete proxy[prop];\n      return true;\n    },\n    get(target, prop, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n    set(target, prop, value) {\n      proxy[prop] = value;\n      delete target[prop];\n      return true;\n    }\n  });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n  const value = resolve();\n  target[prop] = value;\n  return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop];\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  value = value(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  if (defined(_context.index) && isIndexable(prop)) {\n    value = value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n        return fallback;\n      }\n    } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n      return null;\n    }\n  }\n  return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (defined(fallback) && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    return value;\n  }\n  return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n  let value;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (defined(value)) {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\nfunction _resolve(key, scopes) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (defined(value)) {\n      return value;\n    }\n  }\n}\nfunction getKeysFromAllScopes(target) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n  const set = new Set();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array(count);\n  let i, ilen, index, item;\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n  const fa = t * s01;\n  const fb = t * s12;\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n  const pointsLen = points.length;\n  let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK = Array(pointsLen).fill(0);\n  const mK = Array(pointsLen);\n  let i, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n      : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n      : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n  monotoneAdjust(points, deltaK, mK);\n  monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n  return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n  let i, ilen, point, controlPoints;\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n\nfunction _isDomSupported() {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = parent.host;\n  }\n  return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n  let valueInPixels;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n    if (styleValue.indexOf('%') !== -1) {\n      valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n  return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n  return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n  const result = {};\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n  const touches = e.touches;\n  const source = touches && touches.length ? touches[0] : e;\n  const {offsetX, offsetY} = source;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n  if ('native' in evt) {\n    return evt;\n  }\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(evt, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\nfunction getContainerSize(canvas, width, height) {\n  let maxWidth, maxHeight;\n  if (width === undefined || height === undefined) {\n    const container = _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect();\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    height = round1(width / 2);\n  }\n  return {\n    width,\n    height\n  };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n  chart.height = deviceHeight / pixelRatio;\n  chart.width = deviceWidth / pixelRatio;\n  const canvas = chart.canvas;\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\nconst supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() {\n        passiveSupported = true;\n        return false;\n      }\n    };\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (e) {\n  }\n  return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n    : mode === 'after' ? t < 1 ? p1.y : p2.y\n    : t > 0 ? p2.y : p1.y\n  };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\nfunction formatNumber(num, locale, options) {\n  return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\nconst getLeftToRightAdapter = function() {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) {\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) {\n      return x;\n    },\n  };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n  let style, original;\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n    style.setProperty('direction', direction, 'important');\n    ctx.prevTextDirection = original;\n  }\n}\nfunction restoreTextDirection(ctx, original) {\n  if (original !== undefined) {\n    delete ctx.prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  let {start, end, loop} = segment;\n  let i, ilen;\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n    if (point.skip) {\n      continue;\n    }\n    value = normalize(point[property]);\n    if (value === prevValue) {\n      continue;\n    }\n    inside = between(value, startBound, endBound);\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n  return result;\n}\nfunction _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n  if (loop && !spanGaps) {\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n  while (start < count && points[start].skip) {\n    start++;\n  }\n  start %= count;\n  if (loop) {\n    end += start;\n  }\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n  end %= count;\n  return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n  return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n  if (!count) {\n    return [];\n  }\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n  return result;\n}\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\nfunction styleChanged(style, prevStyle) {\n  return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nexport { H as HALF_PI, b1 as INFINITY, P as PI, b0 as PITAU, b3 as QUARTER_PI, b2 as RAD_PER_DEG, T as TAU, b4 as TWO_THIRDS_PI, D as _addGrace, J as _alignPixel, S as _alignStartEnd, p as _angleBetween, b5 as _angleDiff, _ as _arrayUnique, a9 as _attachContext, at as _bezierCurveTo, aq as _bezierInterpolation, ay as _boundSegment, ao as _boundSegments, W as _capitalize, an as _computeSegments, aa as _createResolver, aL as _decimalPlaces, aU as _deprecated, ab as _descriptors, ai as _elementsEqual, A as _factorize, aN as _filterBetween, a2 as _getParentNode, q as _getStartAndCountOfVisiblePoints, I as _int16Range, ak as _isBetween, aj as _isClickEvent, a6 as _isDomSupported, $ as _isPointInArea, E as _limitValue, aM as _longestText, aO as _lookup, Z as _lookupByKey, G as _measureText, aS as _merger, aT as _mergerIf, az as _normalizeAngle, y as _parseObjectDataRadialScale, ar as _pointInLine, al as _readValueToProps, Y as _rlookupByKey, w as _scaleRangesChanged, aH as _setMinAndMaxByKey, aV as _splitKey, ap as _steppedInterpolation, as as _steppedLineTo, aC as _textX, R as _toLeftRightCenter, am as _updateBezierControlPoints, av as addRoundedRectPath, aK as almostEquals, aJ as almostWhole, C as callback, ag as clearCanvas, L as clipArea, aR as clone, c as color, h as createContext, ae as debounce, j as defined, aG as distanceBetweenPoints, au as drawPoint, aE as drawPointLegend, Q as each, e as easingEffects, B as finiteOrDefault, a_ as fontString, o as formatNumber, a0 as getAngleFromPoint, aQ as getHoverColor, a1 as getMaximumSize, X as getRelativePosition, aA as getRtlAdapter, aZ as getStyle, b as isArray, g as isFinite, a8 as isFunction, k as isNullOrUndef, x as isNumber, i as isObject, aP as isPatternOrGradient, l as listenArrayEvents, z as log10, V as merge, ac as mergeIf, aI as niceNum, aF as noop, aB as overrideTextDirection, a3 as readUsedSize, M as renderText, r as requestAnimFrame, a as resolve, f as resolveObjectKey, aD as restoreTextDirection, af as retinaScale, ah as setsEqual, s as sign, aX as splineCurve, aY as splineCurveMonotone, a5 as supportsEventListenerOptions, a4 as throttled, F as toDegrees, n as toDimension, O as toFont, aW as toFontString, a$ as toLineHeight, K as toPadding, m as toPercentage, t as toRadians, aw as toTRBL, ax as toTRBLCorners, ad as uid, N as unclipArea, u as unlistenArrayEvents, v as valueOrDefault } from './chunks/helpers.segment.mjs';\n","export * from '../dist/helpers.mjs';\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    if (typeof items === 'number') {\n      super(items);\n    } else {\n      super(...(items || []));\n      makeReactive(this);\n    }\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  const uniqueArray = [];\n\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  let el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const attr = el.attributes[i];\n\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n  }\n\n  return this;\n}\n\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (const prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  let child = this[0];\n  let i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  const before = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  const after = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n\n    el = next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n\n    el = prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n\n      parent = parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(prop => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(prop => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n    Object.keys(src).forEach((key) => {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n\n  return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const {\n    activeIndex,\n    initialized,\n    loopedSlides = 0,\n    params,\n    $el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n\n    swiper.emitContainerClasses();\n  }\n\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate();\n    swiper.updateSlides();\n    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n  }\n\n  swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default {\n  checkOverflow\n};","function prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\n\nexport default function addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    $el,\n    device,\n    support\n  } = swiper; // prettier-ignore\n\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'pointer-events': !support.touch\n  }, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  $el.addClass([...classNames].join(' '));\n  swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\n};","export default function removeClasses() {\n  const swiper = this;\n  const {\n    $el,\n    classNames\n  } = swiper;\n  $el.removeClass(classNames.join(' '));\n  swiper.emitContainerClasses();\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\n\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    if (params.el && $(params.el).length > 1) {\n      const swipers = [];\n      $(params.el).each(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    } // Swiper Instance\n\n\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    }); // Extend defaults with modules params\n\n    const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params); // add event listeners\n\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    } // Save Dom lib\n\n\n    swiper.$ = $; // Extend Swiper\n\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEvents: function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3]\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2]\n        };\n        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }(),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper'); // Init\n\n    if (swiper.params.init) {\n      swiper.init();\n    } // Return app instance\n\n\n    return swiper;\n  }\n\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    swiper.emit('enable');\n  }\n\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n\n    swiper.emit('disable');\n  }\n\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.each(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper; // Breakpoints\n\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n\n    let translated;\n\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n      setTranslate();\n\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n\n      if (!translated) {\n        setTranslate();\n      }\n    }\n\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n\n    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.each(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n\n  mount(el) {\n    const swiper = this;\n    if (swiper.mounted) return true; // Find el\n\n    const $el = $(el || swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.swiper = swiper;\n\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n        res.children = options => $el.children(options);\n\n        return res;\n      }\n\n      return $el.children(getWrapperSelector());\n    }; // Find Wrapper\n\n\n    let $wrapperEl = getWrapper();\n\n    if ($wrapperEl.length === 0 && swiper.params.createElements) {\n      const document = getDocument();\n      const wrapper = document.createElement('div');\n      $wrapperEl = $(wrapper);\n      wrapper.className = swiper.params.wrapperClass;\n      $el.append(wrapper);\n      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n        $wrapperEl.append(slideEl);\n      });\n    }\n\n    Object.assign(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n    });\n    return true;\n  }\n\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit'); // Set breakpoint\n\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    } // Add Classes\n\n\n    swiper.addClasses(); // Create loop\n\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    } // Update size\n\n\n    swiper.updateSize(); // Update slides\n\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    } // Set Grab Cursor\n\n\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    } // Slide To Initial Slide\n\n\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    } // Attach events\n\n\n    swiper.attachEvents(); // Init Flag\n\n    swiper.initialized = true; // Emit\n\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params,\n      $el,\n      $wrapperEl,\n      slides\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy'); // Init Flag\n\n    swiper.initialized = false; // Detach events\n\n    swiper.detachEvents(); // Destroy loop\n\n    if (params.loop) {\n      swiper.loopDestroy();\n    } // Cleanup styles\n\n\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n\n      if (slides && slides.length) {\n        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy'); // Detach emitter events\n\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      deleteProps(swiper);\n    }\n\n    swiper.destroyed = true;\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n\n    Swiper.installModule(module);\n    return Swiper;\n  }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n\n      handler.apply(self, args);\n    }\n\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n};","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    touchEvents,\n    el,\n    wrapperEl,\n    device,\n    support\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method; // Touch Events\n\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n      passive: false,\n      capture\n    } : capture);\n    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n    }\n  } // Prevent Links Clicks\n\n\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  } // Resize handler\n\n\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    support\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(swiper, 'on');\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};","export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}","export default function onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return; // Breakpoints\n\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  } // Save locks\n\n\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper; // Disable locks on resize\n\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  } // Return locks after resize\n\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}","export default function onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  } // eslint-disable-next-line\n\n\n  if (swiper.translate === -0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n\n  data.allowTouchCallbacks = false;\n\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  } // Return Grab Cursor\n\n\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  } // Time diff\n\n\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n    swiper.emit('tap click', e);\n\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  } // Find current slide\n\n\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  } // Find current slide size\n\n\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n\n  if (!data.startMoving) {\n    return;\n  }\n\n  swiper.allowClick = false;\n\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop && !params.cssMode) {\n      swiper.loopFix();\n    }\n\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n\n    data.allowMomentumBounce = false; // Grab Cursor\n\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n\n    swiper.emit('sliderFirstMove', e);\n  }\n\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n\n  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  } // Directions locks\n\n\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  } // Threshold\n\n\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  } // Update progress\n\n\n  swiper.updateProgress(data.currentTranslate); // Update translate\n\n  swiper.setTranslate(data.currentTranslate);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    return found || __closestFrom(el.getRootNode().host);\n  }\n\n  return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n    $targetEl = $(event.path[0]);\n  }\n\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n    swiper.allowClick = true;\n    return;\n  }\n\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n    if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n      e.preventDefault();\n    }\n  }\n\n  swiper.emit('touchStart', e);\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n  const swiper = this;\n\n  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n\n  function onReady() {\n    if (callback) callback();\n  }\n\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n\n      if (sizes) {\n        image.sizes = sizes;\n      }\n\n      if (srcset) {\n        image.srcset = srcset;\n      }\n\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}","export default function preloadImages() {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n  }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    $wrapperEl\n  } = swiper; // Remove duplicated slides\n\n  const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $selector.append(blankNode);\n      }\n\n      slides = $selector.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n\n    if (index < swiper.loopedSlides) {\n      appendSlides.push(el);\n    }\n\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n      prependSlides.push(el);\n    }\n\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}","export default function loopDestroy() {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    slides\n  } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}","export default function loopFix() {\n  const swiper = this;\n  swiper.emit('beforeLoopFix');\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  swiper.emit('loopFix');\n}","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        auto: true\n      };\n    }\n\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n\n  const init = () => {\n    if (!swiper.params.observer) return;\n\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    } // Observe container\n\n\n    attach(swiper.$el[0], {\n      childList: swiper.params.observeSlideChildren\n    }); // Observe wrapper\n\n    attach(swiper.$wrapperEl[0], {\n      attributes: false\n    });\n  };\n\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = null;\n\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      const {\n        width,\n        height\n      } = swiper;\n      let newWidth = width;\n      let newHeight = height;\n      entries.forEach(({\n        contentBoxSize,\n        contentRect,\n        target\n      }) => {\n        if (target && target !== swiper.el) return;\n        newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n        newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n      });\n\n      if (newWidth !== width || newHeight !== height) {\n        resizeHandler();\n      }\n    });\n    observer.observe(swiper.el);\n  };\n\n  const removeObserver = () => {\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    animating,\n    enabled,\n    params\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    animating,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return swiper;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n\n  let prevIndex = 0;\n\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n\n  if (params.rewind && swiper.isBeginning) {\n    return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n  if (typeof index !== 'number' && typeof index !== 'string') {\n    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n  }\n\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n    } // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n\n\n    index = indexAsNumber;\n  }\n\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex]; // Update progress\n\n  swiper.updateProgress(translate); // Normalize slideIndex\n\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  } // Directions locks\n\n\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex); // Update Height\n\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n\n    swiper.updateSlidesClasses();\n\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n\n    return false;\n  }\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._swiperImmediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n\n    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n  }\n\n  return true;\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};","export default function setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n\n  swiper.emit(`transition${step}`);\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n\n    swiper.emit(`slideChangeTransition${step}`);\n\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    $wrapperEl\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};","export default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function minTranslate() {\n  return -this.snapGrid[0];\n}","export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    $wrapperEl,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n\n    if (!swiper.animating) {\n      swiper.animating = true;\n\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};","export default function updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    } // Normalize slideIndex\n\n\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n\n    return;\n  } // Get real index\n\n\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n  Object.assign(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}","export default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n    }\n\n    return swiper.slides.eq(index)[0];\n  }; // Find slides currently in view\n\n\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  } // Find new height from highest slide in view\n\n\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  } // Update Height\n\n\n  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  let slideIndex;\n\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}","export default function updateProgress(translate) {\n  const swiper = this;\n\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n\n  Object.assign(swiper, {\n    progress,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}","export default function updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  } // Subtract paddings\n\n\n  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n  const swiper = this;\n\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    } // prettier-ignore\n\n\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n\n  const params = swiper.params;\n  const {\n    $wrapperEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween; // reset margins\n\n  if (rtl) slides.css({\n    marginLeft: '',\n    marginBottom: '',\n    marginTop: ''\n  });else slides.css({\n    marginRight: '',\n    marginBottom: '',\n    marginTop: ''\n  }); // reset cssMode offsets\n\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n  }\n\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  } // Calc slides\n\n\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n\n      const slideStyles = getComputedStyle(slide[0]);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide[0];\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n\n    slidesSizesGrid.push(slideSize);\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({\n      width: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (params.setWrapperSize) {\n    $wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  } // Remove last grid elements depending on width\n\n\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n\n    snapGrid = newSlidesGrid;\n\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode) return true;\n\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n\n      return true;\n    }).css({\n      [key]: `${spaceBetween}px`\n    });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n}","export default function updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    $wrapperEl,\n    activeIndex,\n    realIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n  let activeSlide;\n\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  } // Active classes\n\n\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    }\n  } // Next Slide\n\n\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  } // Prev Slide\n\n\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    }\n\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    }\n  }\n\n  swiper.emitSlidesClasses();\n}","export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate; // Visible Slides\n\n  slides.removeClass(params.slideVisibleClass);\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides.eq(i).addClass(params.slideVisibleClass);\n    }\n\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group'\n    }\n  });\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\n\n  function getRandomNumber(size = 16) {\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n\n  function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n  }\n\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const $targetEl = $(e.target);\n\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.each(bulletEl => {\n      const $bulletEl = $(bulletEl);\n\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable($bulletEl);\n\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n        }\n      }\n\n      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n        $bulletEl.attr('aria-current', 'true');\n      } else {\n        $bulletEl.removeAttr('aria-current');\n      }\n    });\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n\n  function init() {\n    const params = swiper.params.a11y;\n    swiper.$el.append(liveRegion); // Container\n\n    const $containerEl = swiper.$el;\n\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    } // Wrapper\n\n\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live); // Slide\n\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    addElRole($(swiper.slides), params.slideRole);\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n    swiper.slides.each((slideEl, index) => {\n      const $slideEl = $(slideEl);\n      const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n      const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n      addElLabel($slideEl, ariaLabelMessage);\n    }); // Navigation\n\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    }\n  }\n\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    }\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n    updateNavigation();\n  });\n  on('toEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('fromEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  let timeout;\n  swiper.autoplay = {\n    running: false,\n    paused: false\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n\n  function run() {\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n\n    clearTimeout(timeout);\n    timeout = nextTick(() => {\n      let autoplayResult;\n\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n\n      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n\n  function stop() {\n    if (!swiper.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n\n    swiper.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n\n  function pause(speed) {\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    swiper.autoplay.paused = true;\n\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n\n  function onVisibilityChange() {\n    const document = getDocument();\n\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      pause();\n    }\n\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      run();\n      swiper.autoplay.paused = false;\n    }\n  }\n\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    swiper.autoplay.paused = false;\n\n    if (!swiper.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n\n  function onMouseEnter() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      pause();\n    }\n\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n  }\n\n  function onMouseLeave() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      return;\n    }\n\n    swiper.autoplay.paused = false;\n    run();\n  }\n\n  function attachMouseEvents() {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.$el.on('mouseenter', onMouseEnter);\n      swiper.$el.on('mouseleave', onMouseLeave);\n    }\n  }\n\n  function detachMouseEvents() {\n    swiper.$el.off('mouseenter', onMouseEnter);\n    swiper.$el.off('mouseleave', onMouseLeave);\n  }\n\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      start();\n      const document = getDocument();\n      document.addEventListener('visibilitychange', onVisibilityChange);\n      attachMouseEvents();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.autoplay.running) {\n      if (internal || !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.pause(speed);\n      } else {\n        stop();\n      }\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.autoplay.running) {\n      if (swiper.params.autoplay.disableOnInteraction) {\n        stop();\n      } else {\n        pause();\n      }\n    }\n  });\n  on('touchEnd', () => {\n    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n      run();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n\n    if (swiper.autoplay.running) {\n      stop();\n    }\n\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  });\n  Object.assign(swiper.autoplay, {\n    pause,\n    run,\n    start,\n    stop\n  });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n\n    }\n  });\n  swiper.controller = {\n    control: undefined\n  };\n\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n\n        return maxIndex;\n      };\n    }();\n\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n\n    return this;\n  } // xxx: for now i will just save one spline function to to\n\n\n  function getInterpolateFunction(c) {\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  }\n\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n\n      if (duration !== 0) {\n        c.transitionStart();\n\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n\n          c.transitionEnd();\n        });\n      }\n    }\n\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n\n  on('beforeInit', () => {\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = swiper.translate;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = $slideEl[0].swiperSlideOffset;\n\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n      }\n\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -2 * progress;\n      let tXAdd = 8 - Math.abs(progress) * 0.75;\n      const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${rotate}deg)\n        scale(${scaleString})\n      `;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.cardsEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth; // Each slide offset from center\n\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n        }\n\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.coverflowEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n  };\n\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    creativeEffect: {\n      transformEl: null,\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      $wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      } // set translate\n\n\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      }); // set rotates\n\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n      if (custom && data.shadow || !custom) {\n        let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0 && data.shadow) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform).css({\n        opacity: opacityString\n      });\n\n      if (data.origin) {\n        $targetEl.css('transform-origin', data.origin);\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.creativeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n\n        $cubeShadowEl.css({\n          height: `${swiperWidth}px`\n        });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n\n      $slideEl.transform(transform);\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  };\n\n  const setTransition = duration => {\n    const {\n      $el,\n      slides\n    } = swiper;\n    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    fadeEffect: {\n      crossFade: false,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.css({\n        opacity: slideOpacity\n      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.fadeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if (shadowBefore.length === 0) {\n          shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n        }\n\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.flipEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n  swiper,\n  extendParams,\n  emit,\n  once\n}) {\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n\n  function onTouchMove() {\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper; // Velocity\n\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n\n  function onTouchEnd({\n    currentPos\n  }) {\n    const {\n      params,\n      $wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper; // Time diff\n\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n\n      return;\n    }\n\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        } // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n\n\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n\n        newPosition = -newPosition;\n      }\n\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      } // Fix duration\n\n\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}","export default function Grid({\n  swiper,\n  extendParams\n}) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup,\n      spaceBetween\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid; // Set slides order\n\n    let newSlideOrderIndex;\n    let column;\n    let row;\n\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n\n    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      spaceBetween,\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n    });\n\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\n      const newSlidesGrid = [];\n\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  };\n\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n      emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides'\n    }\n  });\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n\n    const slide = swiper.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n\n    const currentState = window.history.state;\n\n    if (currentState && currentState.value === value) {\n      return;\n    }\n\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = slugify(slide.attr('data-history'));\n\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  const destroy = () => {\n    const window = getWindow();\n\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader'\n    }\n  });\n  swiper.lazy = {};\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate = true) {\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images.push($slideEl[0]);\n    }\n\n    if ($images.length === 0) return;\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const {\n      $wrapperEl,\n      params: swiperParams,\n      slides,\n      activeIndex\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n    let slidesPerView = swiperParams.slidesPerView;\n\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n\n    if (swiper.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        } // Prev Slides\n\n\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!swiper || swiper.destroyed) return;\n    const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const swiperOffset = swiper.$el.offset();\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let inView = false;\n    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n    for (let i = 0; i < swiperCoord.length; i += 1) {\n      const point = swiperCoord[i];\n\n      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n        inView = true;\n      }\n    }\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n      swiper.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n        if (swiper.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const {\n      lazy,\n      cssMode,\n      watchSlidesProgress,\n      touchReleaseOnEdges,\n      resistanceRatio\n    } = swiper.params;\n\n    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n      load();\n    }\n  });\n  Object.assign(swiper.lazy, {\n    load,\n    loadInSlide\n  });\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n  swiper\n}) {\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}","export default function addSlide(index, slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  const baseLength = swiper.slides.length;\n\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}","export default function appendSlide(slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n}","export default function prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  let newActiveIndex = activeIndex + 1;\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  swiper.slideTo(newActiveIndex, 0, false);\n}","export default function removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n\n  swiper.removeSlide(slidesIndexes);\n}","export default function removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n    // Legacy\n\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    } // side scrolling on FF with DOMMouseScroll\n\n\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    } // Fall-back if spin cannot be determined\n\n\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    } // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n\n\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    } // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n\n\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    } // If you got here is because an animation has been triggered so store the current time\n\n\n    lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n    return false;\n  }\n\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n\n    return false;\n  }\n\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta; // Get the scroll positions\n\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      }; // Keep the most recent events\n\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      } // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n\n\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        } // Emit event\n\n\n        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n\n    if (swiper.mousewheel.enabled) return false;\n    events('on');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n\n    if (!swiper.mousewheel.enabled) return false;\n    events('off');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!swiper.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    init();\n    update();\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl) {\n      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n\n    if ($prevEl) {\n      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const targetEl = e.target;\n\n    if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n\n      if ($nextEl) {\n        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n      } else if ($prevEl) {\n        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n\n      if ($nextEl) {\n        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if ($prevEl) {\n        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n    }\n  });\n  Object.assign(swiper.navigation, {\n    update,\n    init,\n    destroy\n  });\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  }\n\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n    $el.addClass(params.modifierClass + swiper.params.direction);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Object.assign(swiper.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(params.modifierClass + swiper.params.direction);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    init();\n    render();\n    update();\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n  Object.assign(swiper.pagination, {\n    render,\n    update,\n    init,\n    destroy\n  });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n      setTransform(el, progress);\n    });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n        setTransform(el, slideProgress);\n      });\n    });\n  };\n\n  const setTransition = (duration = swiper.params.speed) => {\n    const {\n      $el\n    } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n      const $parallaxEl = $(parallaxEl);\n      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      $parallaxEl.transition(parallaxDuration);\n    });\n  };\n\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag'\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    disableDraggable();\n  }\n\n  on('init', () => {\n    init();\n    updateSize();\n    setTranslate();\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  Object.assign(swiper.scrollbar, {\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix(); // eslint-disable-next-line\n\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n    }\n\n    swiper.slideTo(slideToIndex);\n  }\n\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        } // Find actual thumbs index to slide to\n\n\n        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    } // Activate thumbs\n\n\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    if (!swiper.thumbs.swiper) return;\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    if (swiperCreated && thumbsSwiper) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n\n    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  }\n\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n\n      swiper.updateProgress();\n      return;\n    }\n\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n\n          return slidesToRender;\n        }()\n      });\n\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      }\n\n      return;\n    }\n\n    const prependIndexes = [];\n    const appendIndexes = [];\n\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n\n    appendIndexes.forEach(index => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach(index => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  }\n\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n\n    update(true);\n  }\n\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    swiper.virtual.slides = swiper.params.virtual.slides;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\n    $slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    $imageEl: undefined,\n    $imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n\n      scale = value;\n    }\n\n  });\n\n  function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  } // Events\n\n\n  function onGestureStart(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n\n    isScaling = true;\n  }\n\n  function onGestureChange(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    }\n\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function onGestureEnd(e) {\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n\n      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n        return;\n      }\n\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  }\n\n  function onTouchMove(e) {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n    } // Define if we need image drag\n\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    e.stopPropagation();\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    } // Velocity\n\n\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY; // Define if we need image drag\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      }\n\n      if (!gesture.$slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  } // Toggle Zoom\n\n\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = swiper.support;\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = support.passiveListener ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  function getSlideSelector() {\n    return `.${swiper.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const {\n      passiveListener\n    } = getListeners();\n    const slideSelector = getSlideSelector();\n    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  } // Attach/Detach Events\n\n\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = swiper.support;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}","export default function classesToSelector(classes = '') {\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n};\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, {\n    value: Methods[methodName],\n    writable: true\n  });\n});\nexport default $;","export default function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n}","export default function effectTarget(effectParams, $slideEl) {\n  if (effectParams.transformEl) {\n    return $slideEl.find(effectParams.transformEl).css({\n      'backface-visibility': 'hidden',\n      '-webkit-backface-visibility': 'hidden'\n    });\n  }\n\n  return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n  swiper,\n  duration,\n  transformEl,\n  allSlides\n}) {\n  const {\n    slides,\n    activeIndex,\n    $wrapperEl\n  } = swiper;\n\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let $transitionEndTarget;\n\n    if (allSlides) {\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n    } else {\n      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n    }\n\n    $transitionEndTarget.transitionEnd(() => {\n      if (eventTriggered) return;\n      if (!swiper || swiper.destroyed) return;\n      eventTriggered = true;\n      swiper.animating = false;\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n      for (let i = 0; i < triggerEvents.length; i += 1) {\n        $wrapperEl.trigger(triggerEvents[i]);\n      }\n    });\n  }\n}","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n\n  return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n  userAgent\n} = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  } // Android\n\n\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  } // Export object\n\n\n  return device;\n}\n\nfunction getDevice(overrides = {}) {\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {// No support\n      }\n\n      return supportsPassive;\n    }(),\n    gestures: function checkGestures() {\n      return 'ongesturestart' in window;\n    }()\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n\n  return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {// no getter for object\n    }\n\n    try {\n      delete object[key];\n    } catch (e) {// something got wrong\n    }\n  });\n}\n\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\n\nfunction now() {\n  return Date.now();\n}\n\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n\n  if (!style) {\n    style = el.style;\n  }\n\n  return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    } // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n\n\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n\n  return curTransform || 0;\n}\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n\n  return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n  swiper,\n  targetPosition,\n  side\n}) {\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n\n  animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","/**\n * Swiper 7.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: December 24, 2021\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"/scripts/app\": 0,\n\t\"styles/main\": 0,\n\t\"styles/admin\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksixt\"] = self[\"webpackChunksixt\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [\"styles/main\",\"styles/admin\"], () => (__webpack_require__(\"./src/scripts/app.js\")))\n__webpack_require__.O(undefined, [\"styles/main\",\"styles/admin\"], () => (__webpack_require__(\"./src/styles/main.scss\")))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"styles/main\",\"styles/admin\"], () => (__webpack_require__(\"./src/styles/admin.scss\")))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":["selectAutoWidth","getCareer","form","sixt","window","formData","FormData","append","nonce","querySelector","value","response","fetch","ajaxurl","method","body","ok","Error","status","json","career","forms","document","querySelectorAll","forEach","link","selects","select","resetBtn","closest","addEventListener","event","Event","dispatchEvent","subSelect","setAttribute","classList","add","result","then","res","success","data","fields","field","doc","DOMParser","parseFromString","content","name","newSelect","innerHTML","removeAttribute","newLink","href","remove","gsap","ScrollTrigger","_throttle","registerPlugin","contentScrollAnimation","contentScrolls","contentScroll","intro","introHeadline","contentHeadline","setContentHeight","elm","mq","matchMedia","matches","style","height","clientHeight","to","ease","top","scrollTrigger","trigger","start","end","pin","scrub","markers","invalidateOnRefresh","once","copyText","cb","console","log","temporaryInputElement","createElement","type","appendChild","execCommand","removeChild","alert","CountUp","inView","itemsToCount","siteLang","documentElement","attributes","isGer","valueNum","Number","innerText","valueNumLen","Math","ceil","log10","countValue","duration","decimal","separator","decimalPlaces","on","element","labelAlign","floatingBars","widthBase","offsetWidth","width","label","nextElementSibling","left","WP_Grid_Builder","wpgb","facets","facet","slug","options","length","Houdini","SmoothScroll","flywheelAccordion","flywheelAccSets","sets","set","includes","dataset","houdiniGroupFlywheel","push","flywheelAcc","isAccordion","collapseOthers","icon","btnClass","scroller","offset","anchor","toggle","header","flywheel","wheels","wheel","svg","plug","cards","svgInteractives","interactive","target","flywheelInteractive","card","click","animateScroll","item","index","area","button","interactives","tippy","headerHeight","setProperty","languageDropdown","langSelector","html","allowHTML","arrow","nertia","placement","theme","navBtn","nav","navToggle","basicScroll","parallax","elem","modifier","getAttribute","isSVG","contains","create","from","direct","props","hyphenateHTML","hyphen","Array","el","debug","minWordLength","lozad","bus","lazy","lazyEl","observer","rootMargin","threshold","loaded","imgWrapper","placeholder","bgImage","backgroundImage","replace","observe","GLightbox","lightbox","indicator","popup","selector","touchNavigation","loop","skin","moreLength","closeOnOutsideClick","onOpen","emit","i","elements","items","goToSlide","modal","afterSlideChange","prev","next","listMarkup","uls","ul","lis","li","panzoom","require","handleZoom","e","panInstance","zoomIn","preventDefault","zoomBy","screenSize","max","clientWidth","innerWidth","innerHeight","smoothZoom","w","h","mapMarker","maps","map","mapWrapper","wrapper","centerCenter","x","y","smoothScroll","bounds","boundsPadding","minZoom","maxZoom","auoCenter","transformOrigin","beforeWheel","altKey","onDoubleClick","linkAreas","touchStart","undefined","linkArea","evt","touches","screenX","screenY","touchEnd","changedTouches","distance","sqrt","pow","parseFloat","getTransform","scale","mapControls","control","marker","country","tab","loadMore","setTimeout","scrollTop","offsetTop","mapCards","tabs","number","mapCard","sButton","mapLoadmore","cardWrapper","btn","mapAccordion","mapAccSets","houdiniGroupMapSet","timelineAcc","modals","getElementById","popupModal","scrollY","getPropertyValue","position","exits","exit","scrollTo","parseInt","isInViewport","getWrapperWidth","getItemsWidth","togglePaddles","init","itemsWidth","firstItem","lastItem","paddleLeft","paddleRight","initNavbars","navbars","navBar","paddles","scrollSize","wrapperWidth","paddle","scroll","scrollLeft","root","IntersectionObserver","observerCallback","entries","Choices","selectFields","nFselects","searchEnabled","itemSelectText","callbackOnCreateTemplates","strToEl","classNames","config","String","highlighted","highlightedState","itemSelectable","id","active","disabled","assets","choice","itemChoice","itemDisabled","groupId","jQuery","posterScrollAnimation","posterScrolls","posterScroll","images","image","transformValues","transform","PostToggle","constructor","toggleText","container","moreText","lessText","handleToggle","bind","PostShare","share","initPostToggle","toggles","initPostShare","shares","speed","updateURL","clip","popstate","searchToggle","searchBtnOpen","searchBtnClose","tempSelect","tempOption","textContent","selectedIndex","text","cssText","after","tempSelectWidth","getBoundingClientRect","getComputedStyle","selectChoices","Swiper","Navigation","Scrollbar","Pagination","EffectFade","Autoplay","Mousewheel","eventBus","sliderElements","sliderEl","slider","baseOptions","modules","scrollbar","draggable","pagination","dynamicBullets","dynamicMainBullets","clickable","navigation","nextEl","prevEl","sliderSettings","additionalSettings","JSON","parse","enableSlider","params","s","mousewheel","releaseOnEdges","slidesPerView","passedParams","Object","keys","breakpoints","currentBreakpoint","currentSlideSelection","slides","slice","realIndex","restSlides","filter","slide","viewdSlides","activeIndex","slideEl","externalSliderNav","navID","navElm","links","current","slideTo","handleMobileSlider","destroy","svgABAnimation","abs","ab","symbolA","symbolArrow","symbolB","opacity","svgPosition","svgWrappers","svgWrapper","Tabby","sTab","detail","dynamic","horizontalTabsDynamic","tabHeadline","headline","Chart","ArcElement","LineElement","BarElement","PointElement","BarController","BubbleController","DoughnutController","LineController","Interaction","PieController","PolarAreaController","RadarController","ScatterController","CategoryScale","LinearScale","LogarithmicScale","RadialLinearScale","TimeScale","TimeSeriesScale","Decimation","Filler","Legend","Title","Tooltip","SubTitle","CrosshairPlugin","Interpolate","annotationPlugin","moment","register","modes","interpolate","timeline","timelines","widget","oTimeLineData","chartJson","ctxs","activePoint","maxY","graph","sCtx","ctx","getContext","smallChart","timeLineData","assign","milestones","isBefore","colorScheme","gradientColor","createLinearGradient","gradientColorHover","borderColor","labelColor","gridColor","scatterColor","scatterHoverColor","addColorStop","afterDatasetDraw","chart","args","chartArea","bottom","right","scales","Path2D","fillStyle","stroke","spanGaps","point","lineWidth","hoverLineWidth","radius","hoverRadius","backgroundColor","hoverBackgroundColor","hitRadius","display","fill","hidden","tension","yAxis_crosshair","enabled","snapToData","layout","padding","responsive","maintainAspectRatio","events","onHover","native","cursor","datasetIndex","setActiveElements","update","onClick","time","unit","displayFormats","year","min","format","ticks","maxTicksLimit","color","grid","beginAtZero","callback","getNumberUnit","tickMarkLength","drawTicks","drawBorder","plugins","legend","tooltip","external","model","canvas","caretX","pointerEvents","title","intersect","mode","crosshair","line","zoom","sync","milestone","num","round","floor","toLocaleString","replaceAll","wunit","funit","toFixed","toString","timelineAccordion","timeLineAccSets","houdiniGroupSet","timelineLoadmore","Plyr","video","videos","download","plyrDownload","controls","player","hideControls","videoScrollAnimation","videoScrolls","videoScroll","sections","tween","xPercent","snap","autoplay","defineProperty","HTMLMediaElement","prototype","get","currentTime","paused","ended","readyState","videoElements","videoElement","imageElement","playing","play","EventBus","description","eventTarget","createComment","listener","off","removeEventListener","CustomEvent","rect"],"sourceRoot":""}