{"version":3,"sources":["jsdelivr-header.js","/npm/jquery-bootstrap-table@0.1.5/src/bootstrap-table.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCNC,SAAS,GACgB,mBAAX,QAAyB,OAAO,IACvC,OAAO,CAAC,UAAW,GACM,iBAAX,QAAuB,OAAO,QAC5C,OAAO,QAAU,EAAQ,QAAQ,WAEjC,EAAQ,OAEhB,CARA,EAQE,SAAS,EAAG,GACV,aAIA,IACI,EADA,EAAc,KAIlB,SAAS,EAAQ,GACb,IAAI,EAAO,UACP,GAAO,EACP,EAAI,EAWR,OATA,EAAM,EAAI,QAAQ,OAAO,WACrB,IAAI,EAAM,EAAK,KAEf,YAAmB,IAAR,GACP,GAAO,EACA,IAEJ,CACX,IACO,EAAO,EAAM,EACxB,CAEA,SAAS,EAAqB,EAAM,EAAM,EAAI,GAC1C,IAAI,EAAS,GAQb,OAPA,EAAE,KAAK,GAAM,SAAU,EAAG,GACtB,OAAI,EAAK,KAAU,IACf,EAAS,EAAK,IACP,EAGf,IACO,CACX,CAEA,SAAS,EAAc,EAAS,GAC5B,IAAI,GAAS,EAQb,OAPA,EAAE,KAAK,GAAS,SAAU,EAAG,GACzB,OAAI,EAAO,QAAU,IACjB,EAAQ,GACD,EAGf,IACO,CACX,CA4CA,SAAS,IACL,GAAoB,OAAhB,EAAsB,CACtB,IAEI,EAAI,EAFJ,EAAQ,EAAE,QAAQ,SAAS,4BAC3B,EAAQ,EAAE,UAAU,SAAS,4BAGjC,EAAM,OAAO,GACb,EAAE,QAAQ,OAAO,GAEjB,EAAK,EAAM,GAAG,YACd,EAAM,IAAI,WAAY,UAGlB,KAFJ,EAAK,EAAM,GAAG,eAGV,EAAK,EAAM,GAAG,aAGlB,EAAM,SACN,EAAc,EAAK,CACvB,CACA,OAAO,CACX,CAEA,SAAS,EAAqB,EAAM,EAAM,EAAM,GAC5C,IAAI,EAAO,EAEX,GAAoB,iBAAT,EAAmB,CAE1B,IAAI,EAAQ,EAAK,MAAM,KAEnB,EAAM,OAAS,GACf,EAAO,OACP,EAAE,KAAK,GAAO,SAAU,EAAG,GACvB,EAAO,EAAK,EAChB,KAEA,EAAO,OAAO,EAEtB,CACA,MAAoB,iBAAT,EACA,EAES,mBAAT,EACA,EAAK,MAAM,EAAM,IAEvB,GAAwB,iBAAT,GAAqB,EAAQ,MAAM,KAAM,CAAC,GAAM,OAAO,IAChE,EAAQ,MAAM,KAAM,CAAC,GAAM,OAAO,IAEtC,CACX,CAEA,SAAS,EAAe,EAAS,EAAS,GAEtC,IAAI,EAAoB,OAAO,oBAAoB,GAC/C,EAAoB,OAAO,oBAAoB,GAC/C,EAAW,GAEf,GAAI,GAEI,EAAkB,SAAW,EAAkB,OAC/C,OAAO,EAIf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAkB,OAAQ,IAI1C,GAHA,EAAW,EAAkB,GAGzB,EAAE,QAAQ,EAAU,IAAsB,GAEtC,EAAQ,KAAc,EAAQ,GAC9B,OAAO,EAMnB,OAAO,CACX,CAEA,SAAS,EAAW,GAChB,MAAoB,iBAAT,EACA,EACF,QAAQ,KAAM,SACd,QAAQ,KAAM,QACd,QAAQ,KAAM,QACd,QAAQ,KAAM,UACd,QAAQ,KAAM,UACd,QAAQ,KAAM,UAEhB,CACX,CAEA,SAAS,EAAgB,GACrB,IAAK,IAAI,KAAQ,EAAU,CACvB,IAAI,EAAU,EAAK,MAAM,aAAa,KAAK,KAAK,cAC5C,IAAY,IACZ,EAAS,GAAW,EAAS,UACtB,EAAS,GAExB,CAEA,OAAO,CACX,CAEA,SAAS,EAAa,EAAM,EAAO,GAC/B,IAAI,EAAQ,EAEZ,GAAqB,iBAAV,GAAsB,EAAK,eAAe,GACjD,OAAO,EAAS,EAAW,EAAK,IAAU,EAAK,GAEnD,IAAI,EAAQ,EAAM,MAAM,KACxB,IAAK,IAAI,KAAK,EACN,EAAM,eAAe,KACrB,EAAQ,GAAS,EAAM,EAAM,KAGrC,OAAO,EAAS,EAAW,GAAS,CACxC,CAEA,SAAS,IACL,SAAU,UAAU,UAAU,QAAQ,SAAW,GAAO,UAAU,UAAU,MAAM,qBACtF,CA+CA,SAAS,EAAe,EAAI,GACxB,KAAK,QAAU,EACf,KAAK,IAAM,EAAE,GACb,KAAK,KAAO,KAAK,IAAI,QACrB,KAAK,WAAa,EAClB,KAAK,eAAiB,EACtB,KAAK,MACT,CAEA,EAAe,SAAW,CACtB,QAAS,oBACT,UAAW,EACX,OAAQ,EACR,OAAQ,EACR,cAAe,IACf,SAAU,EACV,UAAW,MACX,YAAY,EACZ,SAAS,EACT,QAAS,CAAC,IACV,KAAM,GACN,WAAY,QACZ,UAAW,OACX,OAAQ,MACR,IAAK,EACL,KAAM,EACN,OAAO,EACP,YAAa,mBACb,SAAU,OACV,YAAa,CAAC,EACd,YAAa,SAAU,GACnB,OAAO,CACX,EACA,gBAAiB,QACjB,gBAAiB,SAAU,GACvB,OAAO,CACX,EACA,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,eAAgB,SAChB,UAAW,EACX,WAAY,EACZ,SAAU,GACV,SAAU,CAAC,GAAI,GAAI,GAAI,KACvB,iBAAkB,QAClB,iBAAkB,SAClB,uBAAwB,OACxB,kBAAmB,WACnB,mBAAoB,WACpB,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,YAAa,QACb,eAAgB,eAChB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,aAAc,QACd,cAAc,EACd,QAAQ,EACR,oBAAqB,EACrB,QAAS,EACT,SAAU,EACV,UAAU,EACV,YAAY,EACZ,gBAAiB,SAAU,EAAO,GAC9B,MAAO,EACX,EACA,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAS,EACT,aAAc,OACd,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,cAAe,IACf,WAAY,GACZ,SAAU,EACV,aAAc,UACd,YAAa,YACb,MAAO,CACH,qBAAsB,4CACtB,mBAAoB,wCACpB,QAAS,iCACT,OAAQ,mCACR,QAAS,uBACT,WAAY,2BACZ,YAAa,8BAGjB,aAAc,EAAE,KAEhB,WAAY,EAAE,KAEd,SAAU,SAAU,EAAK,GACrB,MAAO,CAAC,CACZ,EAEA,cAAe,SAAU,EAAK,GAC1B,MAAO,CAAC,CACZ,EAEA,YAAa,SAAU,EAAK,GACxB,MAAO,CAAC,CACZ,EAEA,MAAO,SAAU,EAAM,GACnB,OAAO,CACX,EACA,YAAa,SAAU,EAAO,EAAO,EAAK,GACtC,OAAO,CACX,EACA,eAAgB,SAAU,EAAO,EAAO,EAAK,GACzC,OAAO,CACX,EACA,WAAY,SAAU,EAAM,GACxB,OAAO,CACX,EACA,cAAe,SAAU,EAAM,GAC3B,OAAO,CACX,EACA,OAAQ,SAAU,EAAM,GACpB,OAAO,CACX,EACA,QAAS,SAAU,GACf,OAAO,CACX,EACA,UAAW,SAAU,GACjB,OAAO,CACX,EACA,WAAY,SAAU,GAClB,OAAO,CACX,EACA,aAAc,SAAU,GACpB,OAAO,CACX,EACA,YAAa,SAAU,GACnB,OAAO,CACX,EACA,cAAe,SAAU,GACrB,OAAO,CACX,EACA,cAAe,SAAU,GACrB,OAAO,CACX,EACA,YAAa,SAAU,GACnB,OAAO,CACX,EACA,eAAgB,SAAU,EAAO,GAC7B,OAAO,CACX,EACA,aAAc,SAAU,EAAQ,GAC5B,OAAO,CACX,EACA,SAAU,SAAU,GAChB,OAAO,CACX,EACA,SAAU,SAAU,GAChB,OAAO,CACX,EACA,UAAW,SAAU,GACjB,OAAO,CACX,EACA,WAAY,WACR,OAAO,CACX,EACA,aAAc,WACV,OAAO,CACX,EACA,YAAa,SAAU,EAAO,EAAK,GAC/B,OAAO,CACX,EACA,cAAe,SAAU,EAAO,GAC5B,OAAO,CACX,EACA,iBAAkB,SAAU,GACxB,OAAO,CACX,EACA,UAAW,SAAU,GACnB,OAAO,CACT,EACA,YAAa,WACT,OAAO,CACX,GAGJ,EAAe,QAAU,CAAC,EAE1B,EAAe,QAAQ,SAAW,EAAe,QAAQ,GAAK,CAC1D,qBAAsB,WAClB,MAAO,yBACX,EACA,qBAAsB,SAAU,GAC5B,OAAO,EAAQ,mBAAoB,EACvC,EACA,kBAAmB,SAAU,EAAU,EAAQ,GAC3C,OAAO,EAAQ,8BAA+B,EAAU,EAAQ,EACpE,EACA,uBAAwB,SAAU,GAC9B,OAAO,EAAQ,kBAAmB,EACtC,EACA,aAAc,WACV,MAAO,QACX,EACA,gBAAiB,WACb,MAAO,2BACX,EACA,uBAAwB,WACpB,MAAO,sBACX,EACA,cAAe,WACX,MAAO,SACX,EACA,aAAc,WACV,MAAO,QACX,EACA,cAAe,WACX,MAAO,SACX,EACA,cAAe,WACX,MAAO,KACX,GAGJ,EAAE,OAAO,EAAe,SAAU,EAAe,QAAQ,UAEzD,EAAe,gBAAkB,CAC7B,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,MAAO,EACP,MAAO,EACP,aAAc,EACd,MAAS,EACT,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,MAAO,EACP,UAAU,EACV,MAAO,MACP,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAW,EACX,gBAAiB,EACjB,OAAQ,EACR,OAAQ,EACR,SAAU,EACV,UAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,GAGjB,EAAe,OAAS,CACpB,eAAgB,QAChB,sBAAuB,cACvB,0BAA2B,iBAC3B,qBAAsB,aACtB,yBAA0B,gBAC1B,gBAAiB,SACjB,iBAAkB,UAClB,mBAAoB,YACpB,qBAAsB,aACtB,uBAAwB,eACxB,sBAAuB,cACvB,wBAAyB,gBACzB,wBAAyB,gBACzB,sBAAuB,cACvB,yBAA0B,iBAC1B,uBAAwB,eACxB,kBAAmB,WACnB,kBAAmB,WACnB,oBAAqB,YACrB,qBAAsB,aACtB,uBAAwB,eACxB,sBAAuB,cACvB,wBAAyB,gBACzB,2BAA4B,mBAC5B,sBAAuB,cACvB,mBAAoB,aAGxB,EAAe,UAAU,KAAO,WAC5B,KAAK,aACL,KAAK,gBACL,KAAK,YACL,KAAK,aACL,KAAK,WACL,KAAK,iBACL,KAAK,aACL,KAAK,cACL,KAAK,iBACL,KAAK,WACL,KAAK,iBACL,KAAK,OACT,EAEA,EAAe,UAAU,WAAa,WAClC,GAAI,KAAK,QAAQ,OAAQ,CACrB,IAAI,EAAQ,KAAK,QAAQ,OAAO,MAAM,OACtC,EAAM,GAAG,cACL,EAAM,IAAI,EAAM,GAAG,cACnB,EAAE,GAAG,eAAe,QAAQ,KAAK,QAAQ,QAEzC,EAAE,OAAO,KAAK,QAAS,EAAE,GAAG,eAAe,QAAQ,KAAK,QAAQ,SACzD,EAAE,GAAG,eAAe,QAAQ,EAAM,KAAK,MAE9C,EAAE,OAAO,KAAK,QAAS,EAAE,GAAG,eAAe,QAAQ,EAAM,KAAK,OACvD,EAAE,GAAG,eAAe,QAAQ,EAAM,KAEzC,EAAE,OAAO,KAAK,QAAS,EAAE,GAAG,eAAe,QAAQ,EAAM,IAEjE,CACJ,EAEA,EAAe,UAAU,cAAgB,WACrC,KAAK,WAAa,EAAE,CAChB,gCACA,0CACkC,QAAlC,KAAK,QAAQ,kBAAgE,SAAlC,KAAK,QAAQ,iBACpD,kEACA,GACJ,sCACA,wDACA,iCACA,oCACA,KAAK,QAAQ,qBAAqB,KAAK,MACvC,SACA,SACA,iEACkC,WAAlC,KAAK,QAAQ,kBAAmE,SAAlC,KAAK,QAAQ,iBACvD,6CACA,GACJ,SACA,UACF,KAAK,KAEP,KAAK,WAAW,YAAY,KAAK,KACjC,KAAK,gBAAkB,KAAK,WAAW,KAAK,0BAC5C,KAAK,aAAe,KAAK,WAAW,KAAK,uBACzC,KAAK,WAAa,KAAK,WAAW,KAAK,qBACvC,KAAK,cAAgB,KAAK,WAAW,KAAK,wBAC1C,KAAK,aAAe,KAAK,WAAW,KAAK,uBACzC,KAAK,SAAW,KAAK,WAAW,KAAK,wBACrC,KAAK,YAAc,KAAK,WAAW,KAAK,2BAExC,KAAK,WAAW,OAAO,KAAK,KAC5B,KAAK,WAAW,MAAM,gCAEtB,KAAK,IAAI,SAAS,KAAK,QAAQ,SAC3B,KAAK,QAAQ,SACb,KAAK,IAAI,SAAS,kBAEmD,IAArE,EAAE,QAAQ,oBAAqB,KAAK,QAAQ,QAAQ,MAAM,OAC1D,KAAK,gBAAgB,SAAS,oBAEtC,EAEA,EAAe,UAAU,UAAY,WACjC,IAAI,EAAO,KACP,EAAU,GACV,EAAO,GA6CX,GA3CA,KAAK,QAAU,KAAK,IAAI,KAAK,UACxB,KAAK,QAAQ,SACd,KAAK,QAAU,EAAE,mBAAmB,SAAS,KAAK,MAEtD,KAAK,QAAQ,KAAK,MAAM,MAAK,WACzB,IAAI,EAAS,GAEb,EAAE,MAAM,KAAK,MAAM,MAAK,gBAEiB,IAA1B,EAAE,MAAM,KAAK,WACpB,EAAE,MAAM,KAAK,QAAS,EAAE,MAAM,KAAK,SAAW,IAC9C,EAAE,MAAM,SAAS,EAAE,MAAM,KAAK,WAElC,EAAO,KAAK,EAAE,OAAO,CAAC,EAAG,CACrB,MAAO,EAAE,MAAM,OACf,MAAS,EAAE,MAAM,KAAK,SACtB,aAAc,EAAE,MAAM,KAAK,SAC3B,QAAS,EAAE,MAAM,KAAK,YAAc,EAAE,MAAM,KAAK,WAAa,EAC9D,QAAS,EAAE,MAAM,KAAK,YAAc,EAAE,MAAM,KAAK,WAAa,GAC/D,EAAE,MAAM,QACf,IACA,EAAQ,KAAK,EACjB,IACK,EAAE,QAAQ,KAAK,QAAQ,QAAQ,MAChC,KAAK,QAAQ,QAAU,CAAC,KAAK,QAAQ,UAEzC,KAAK,QAAQ,QAAU,EAAE,QAAO,EAAM,GAAI,EAAS,KAAK,QAAQ,SAChE,KAAK,QAAU,GAhmBnB,SAAuB,GACnB,IAAI,EAAG,EAAG,EACN,EAAW,EACX,EAAO,GAEX,IAAK,EAAI,EAAG,EAAI,EAAQ,GAAG,OAAQ,IAC/B,GAAY,EAAQ,GAAG,GAAG,SAAW,EAGzC,IAAK,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAE5B,IADA,EAAK,GAAK,GACL,EAAI,EAAG,EAAI,EAAU,IACtB,EAAK,GAAG,IAAK,EAIrB,IAAK,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAC5B,IAAK,EAAI,EAAG,EAAI,EAAQ,GAAG,OAAQ,IAAK,CACpC,IAAI,EAAI,EAAQ,GAAG,GACf,EAAU,EAAE,SAAW,EACvB,EAAU,EAAE,SAAW,EACvB,EAAQ,EAAE,SAAQ,EAAO,EAAK,IAUlC,IARgB,IAAZ,IACA,EAAE,WAAa,OAEQ,IAAZ,EAAE,QACT,EAAE,MAAQ,IAIb,EAAI,EAAG,EAAI,EAAS,IACrB,EAAK,EAAI,GAAG,IAAS,EAEzB,IAAK,EAAI,EAAG,EAAI,EAAS,IACrB,EAAK,GAAG,EAAQ,IAAK,CAE7B,CAER,CA2jBI,CAAc,KAAK,QAAQ,SAC3B,EAAE,KAAK,KAAK,QAAQ,SAAS,SAAU,EAAG,GACtC,EAAE,KAAK,GAAS,SAAU,EAAG,QAGQ,KAFjC,EAAS,EAAE,OAAO,CAAC,EAAG,EAAe,gBAAiB,IAEpC,aACd,EAAK,QAAQ,EAAO,YAAc,GAGtC,EAAK,QAAQ,QAAQ,GAAG,GAAK,CACjC,GACJ,KAGI,KAAK,QAAQ,KAAK,OAAtB,CAIA,IAAI,EAAI,GACR,KAAK,IAAI,KAAK,aAAa,MAAK,SAAU,GACtC,IAAI,EAAM,CAAC,EAGX,EAAI,IAAM,EAAE,MAAM,KAAK,MACvB,EAAI,OAAS,EAAE,MAAM,KAAK,SAC1B,EAAI,MAAQ,EAAgB,EAAE,MAAM,QAEpC,EAAE,MAAM,KAAK,OAAO,MAAK,SAAU,GAM/B,IALA,IAGI,EAAI,EAHJ,EAAQ,EAAE,MACV,GAAS,EAAM,KAAK,YAAc,EAClC,GAAS,EAAM,KAAK,YAAc,EAG/B,EAAE,IAAM,EAAE,GAAG,GAAI,KAExB,IAAK,EAAK,EAAG,EAAK,EAAI,EAAO,IACzB,IAAK,EAAK,EAAG,EAAK,EAAI,EAAO,IACpB,EAAE,KACH,EAAE,GAAM,IAEZ,EAAE,GAAI,IAAM,EAIpB,IAAI,EAAQ,EAAK,QAAQ,GAAG,MAE5B,EAAI,GAAS,EAAE,MAAM,OAErB,EAAI,IAAM,EAAQ,OAAS,EAAE,MAAM,KAAK,MACxC,EAAI,IAAM,EAAQ,UAAY,EAAE,MAAM,KAAK,SAC3C,EAAI,IAAM,EAAQ,YAAc,EAAE,MAAM,KAAK,WAC7C,EAAI,IAAM,EAAQ,YAAc,EAAE,MAAM,KAAK,WAC7C,EAAI,IAAM,EAAQ,UAAY,EAAE,MAAM,KAAK,SAC3C,EAAI,IAAM,EAAQ,SAAW,EAAgB,EAAE,MAAM,OACzD,IACA,EAAK,KAAK,EACd,IACA,KAAK,QAAQ,KAAO,EAChB,EAAK,SAAQ,KAAK,UAAW,EA1CjC,CA2CJ,EAEA,EAAe,UAAU,WAAa,WAClC,IAAI,EAAO,KACP,EAAiB,CAAC,EAClB,EAAO,GAEX,KAAK,OAAS,CACV,OAAQ,GACR,OAAQ,GACR,QAAS,GACT,WAAY,GACZ,OAAQ,GACR,QAAS,GACT,UAAW,GACX,WAAY,GACZ,YAAa,IAGjB,EAAE,KAAK,KAAK,QAAQ,SAAS,SAAU,EAAG,GACtC,EAAK,KAAK,QAEA,IAAN,IAAY,EAAK,QAAQ,UAAY,EAAK,QAAQ,YAClD,EAAK,KAAK,EAAQ,oEACd,EAAK,QAAQ,QAAQ,SAG7B,EAAE,KAAK,GAAS,SAAU,EAAG,GACzB,IAAI,EACA,EACA,EAAQ,GACR,EAAS,EAAQ,cAAe,EAAc,OAE9C,GADQ,EAAK,QAAQ,WAAa,EAAO,MAC7B,MACZ,EAAQ,EAAO,MAmBnB,GAjBI,EAAO,QAAU,GAAe,EAAK,QAAQ,UACjB,iBAAjB,EAAO,QACqB,IAA/B,EAAO,MAAM,QAAQ,OACrB,EAAY,KAIpB,EAAO,OAAiC,iBAAjB,EAAO,QAC9B,EAAQ,EAAO,MAAM,QAAQ,IAAK,IAAI,QAAQ,KAAM,KAGxD,EAAS,EAAQ,mBAAoB,EAAO,OAAS,EAAO,OAAS,EAAO,OAC5E,EAAQ,EAAQ,mBAAoB,EAAO,OAC3C,EAAQ,EAAQ,uBAAwB,EAAO,QAC/C,GAAS,EAAQ,eAAgB,EAAO,WAAY,EAAO,OAAW,EACxD,EAAQ,EAAQ,EAAY,EAAtC,aAE6B,IAAtB,EAAO,WAA4B,CAW1C,GAVA,EAAK,OAAO,OAAO,EAAO,YAAc,EAAO,MAC/C,EAAK,OAAO,OAAO,EAAO,YAAc,EAAQ,EAChD,EAAK,OAAO,QAAQ,EAAO,YAAc,EACzC,EAAK,OAAO,WAAW,EAAO,YAAc,EAAO,UACnD,EAAK,OAAO,OAAO,EAAO,YAAc,EAAO,OAC/C,EAAK,OAAO,QAAQ,EAAO,YAAc,EAAO,OAChD,EAAK,OAAO,UAAU,EAAO,YAAc,EAAO,SAClD,EAAK,OAAO,WAAW,EAAO,YAAc,EAAO,UACnD,EAAK,OAAO,YAAY,EAAO,YAAc,EAAO,YAE/C,EAAO,QACR,OAGJ,GAAI,EAAK,QAAQ,WAAc,EAAO,YAClC,OAGJ,EAAe,EAAO,OAAS,CACnC,CAEA,EAAK,KAAK,MAAQ,EAAQ,cAAe,EAAO,cAC5C,EAAO,UAAY,EAAO,MACtB,EAAQ,0BAA2B,EAAc,OAAK,IACtD,EACJ,EAAQ,cAAe,EAAS,GAChC,EAAQ,gBAAiB,EAAO,SAChC,EAAQ,gBAAiB,EAAO,SAChC,EAAQ,mBAAoB,EAAO,OACnC,eACA,KAEJ,EAAK,KAAK,0BACN,EAAO,WACF,EAAK,QAAQ,cAAgB,EAAK,QAAQ,gBAC9C,EAAK,KAAK,yDAEX,EAAK,OAAO,WAAa,EAAO,OACzB,EAAO,OACd,EAAK,OAAO,WAAa,EAAO,MAChC,EAAK,QAAQ,cAAe,IAE/B,EAAK,KAAK,EAAO,OACb,EAAK,QAAQ,UAAY,EAAO,UACnC,EAAK,KAAK,wCAGZ,EAAK,KAAK,UACV,EAAK,KAAK,gCACV,EAAK,KAAK,UACV,EAAK,KAAK,QACd,IACA,EAAK,KAAK,QACd,IAEA,KAAK,QAAQ,KAAK,EAAK,KAAK,KAC5B,KAAK,QAAQ,KAAK,kBAAkB,MAAK,SAAU,GAC/C,EAAE,MAAM,KAAK,EAAe,EAAE,MAAM,KAAK,UAC7C,IACA,KAAK,WAAW,IAAI,QAAS,aAAa,GAAG,QAAS,aAAa,SAAU,GACzE,IAAI,EAAS,EAAE,MAEf,GAAI,EAAK,QAAQ,YACT,EAAO,QAAQ,oBAAoB,KAAO,EAAK,WAAW,GAC1D,OAAO,EAGX,EAAK,QAAQ,UAAY,EAAO,QAAQ,aAAa,SAAS,OAAO,UACrE,EAAK,OAAO,EAEpB,IAEA,KAAK,QAAQ,WAAW,WAAW,IAAI,YAAY,GAAG,YAAY,SAAU,GACpE,EAAK,QAAQ,UAAY,EAAE,MAAM,OAAO,WAE5B,KADD,EAAM,SAAW,EAAM,QAE9B,EAAK,OAAO,GAGxB,IAEA,EAAE,QAAQ,IAAI,2BACT,KAAK,QAAQ,YAAc,KAAK,QAAQ,UACzC,KAAK,QAAQ,OACb,KAAK,aAAa,OAClB,KAAK,cAAc,IAAI,MAAO,KAE9B,KAAK,QAAQ,OACb,KAAK,aAAa,OAClB,KAAK,cAAc,IAAI,MAAO,KAAK,QAAQ,cAAgB,GAE3D,KAAK,WACL,EAAE,QAAQ,GAAG,yBAA0B,EAAE,MAAM,KAAK,WAAY,QAGpE,KAAK,WAAa,KAAK,QAAQ,KAAK,+BACpC,KAAK,WAAW,IAAI,SAAS,GAAG,SAAS,WACjC,EAAK,EAAE,MAAM,KAAK,WAAa,WAAa,gBAC5C,EAAK,gBACb,GACJ,EAEA,EAAe,UAAU,WAAa,YAC7B,KAAK,QAAQ,YAAc,KAAK,QAAQ,SACzC,KAAK,aAAa,OAElB,KAAK,aAAa,MAE1B,EAMA,EAAe,UAAU,SAAW,SAAU,EAAM,GAE5C,KAAK,KADI,WAAT,EACY,KAAK,KAAK,OAAO,GACb,YAAT,EACK,GAAG,OAAO,GAAM,OAAO,KAAK,MAE5B,GAAQ,KAAK,QAAQ,KAKjC,KAAK,QAAQ,KADJ,WAAT,EACoB,KAAK,QAAQ,KAAK,OAAO,GAC7B,YAAT,EACa,GAAG,OAAO,GAAM,OAAO,KAAK,QAAQ,MAEpC,KAAK,KAGO,WAAhC,KAAK,QAAQ,gBAIjB,KAAK,UACT,EAEA,EAAe,UAAU,SAAW,WAChC,IAAI,EAAO,KACP,EAAO,KAAK,QAAQ,SACpB,EAAmC,SAA3B,KAAK,QAAQ,WAAwB,EAAI,EACjD,EAAQ,EAAE,QAAQ,KAAK,QAAQ,SAAU,KAAK,OAAO,QACrD,EAAY,EAEZ,KAAK,QAAQ,aAAe,EAAE,MAKnB,IAAX,IACI,KAAK,QAAQ,YACb,EAAE,KAAK,KAAK,MAAM,SAAU,EAAG,GACtB,EAAI,eAAe,eAAc,EAAI,UAAY,EAC1D,IAGJ,KAAK,KAAK,MAAK,SAAU,EAAG,GACpB,EAAK,OAAO,UAAU,KACtB,EAAO,EAAK,OAAO,UAAU,IAEjC,IAAI,EAAK,EAAa,EAAG,EAAM,EAAK,QAAQ,QACxC,EAAK,EAAa,EAAG,EAAM,EAAK,QAAQ,QACxC,EAAQ,EAAqB,EAAK,OAAQ,EAAK,OAAO,QAAQ,GAAQ,CAAC,EAAI,IAE/E,OAAI,IAAU,EACH,EAAQ,GAIf,IAAO,GAAoB,OAAP,IACpB,EAAK,IAEL,IAAO,GAAoB,OAAP,IACpB,EAAK,IAGL,EAAK,QAAQ,YAAc,IAAO,IAClC,EAAK,EAAE,UACP,EAAK,EAAE,WAIP,EAAE,UAAU,IAAO,EAAE,UAAU,IAE/B,EAAK,WAAW,KAChB,EAAK,WAAW,KAEI,EAAT,EAEJ,EAGP,IAAO,EACA,GAIO,iBAAP,IACP,EAAK,EAAG,aAGkB,IAA1B,EAAG,cAAc,IACD,EAAT,EAGJ,GACX,IAEI,KAAK,QAAQ,YAAc,IAC3B,aAAa,GACb,EAAY,YAAW,WACnB,EAAK,IAAI,YAAY,EAAK,QAAQ,WAClC,IAAI,EAAQ,EAAK,QAAQ,KAAK,EAAQ,oBAClC,EAAK,QAAQ,UAAU,QAAU,GACrC,EAAK,IAAI,KAAK,EAAQ,sBAAuB,IACxC,SAAS,EAAK,QAAQ,UAC/B,GAAG,OAvEP,KAAK,QAAQ,WAAW,MAAM,KAAM,CAAC,KAAK,QAAQ,SAAU,KAAK,QAAQ,WA0EjF,EAEA,EAAe,UAAU,OAAS,SAAU,GACxC,IAAI,EAAuB,aAAf,EAAM,KAAsB,EAAE,EAAM,eAAe,QAAQ,aAAe,EAAE,EAAM,eAAe,QAAQ,aAAa,SAC9H,EAAS,KAAK,QAAQ,KAAK,MAAM,GAAG,EAAM,SAE9C,KAAK,QAAQ,IAAI,KAAK,UAAU,KAAK,cAAc,SAE/C,KAAK,QAAQ,WAAa,EAAM,KAAK,SACrC,KAAK,QAAQ,UAAuC,QAA3B,KAAK,QAAQ,UAAsB,OAAS,OAErE,KAAK,QAAQ,SAAW,EAAM,KAAK,SACnC,KAAK,QAAQ,UAAoC,QAAxB,EAAM,KAAK,SAAqB,OAAS,OAEtE,KAAK,QAAQ,OAAQ,KAAK,QAAQ,SAAU,KAAK,QAAQ,WAEzD,EAAM,IAAI,GAAQ,KAAK,QAAS,KAAK,QAAQ,WAG7C,KAAK,WAE0B,WAA3B,EAAM,KAAK,aAKf,KAAK,WACL,KAAK,YALD,KAAK,MAAM,KAAK,QAAQ,WAMhC,EAEA,EAAe,UAAU,YAAc,WACnC,IAGI,EACA,EAJA,EAAO,KACP,EAAO,GACP,EAAY,EAGZ,EAAkB,EAElB,KAAK,SAAS,KAAK,YAAY,WAAW,QAC1C,EAAE,QAAQ,OAAO,EAAE,KAAK,QAAQ,UAEpC,KAAK,SAAS,KAAK,IAEiB,iBAAzB,KAAK,QAAQ,SAAwD,iBAAzB,KAAK,QAAQ,SAChE,EAAE,EAAQ,sCAAuC,KAAK,QAAQ,eACzD,SAAS,KAAK,UACd,OAAO,EAAE,KAAK,QAAQ,UAI/B,EAAO,CAAC,EAAQ,qDACZ,KAAK,QAAQ,aAAc,KAAK,QAAQ,eAEV,iBAAvB,KAAK,QAAQ,QACpB,KAAK,QAAQ,MAAQ,EAAqB,KAAM,KAAK,QAAQ,QAG7D,KAAK,QAAQ,sBACb,EAAK,KAAK,EAAQ,qBACV,EAAQ,UAAW,KAAK,QAAQ,cAChC,EAAQ,UAAW,KAAK,QAAQ,UAChC,sDACA,KAAK,QAAQ,uBAAuB,KAAK,OAC7C,EAAQ,wBAAyB,KAAK,QAAQ,YAAa,KAAK,QAAQ,MAAM,sBAC9E,aAGJ,KAAK,QAAQ,aACb,EAAK,KAAK,EAAQ,qBACV,EAAQ,UAAW,KAAK,QAAQ,cAChC,EAAQ,UAAW,KAAK,QAAQ,UAChC,6CACA,KAAK,QAAQ,cAAc,KAAK,OACpC,EAAQ,wBAAyB,KAAK,QAAQ,YAAa,KAAK,QAAQ,MAAM,SAC9E,aAGJ,KAAK,QAAQ,YACb,EAAK,KAAK,EAAQ,qBACV,EAAQ,UAAW,KAAK,QAAQ,cAChC,EAAQ,UAAW,KAAK,QAAQ,UAChC,4CACA,KAAK,QAAQ,aAAa,KAAK,OACnC,EAAQ,wBAAyB,KAAK,QAAQ,YAAa,KAAK,QAAQ,MAAM,QAC9E,aAGJ,KAAK,QAAQ,cACb,EAAK,KAAK,EAAQ,+CACV,KAAK,QAAQ,cAAc,KAAK,OACpC,mCACA,EAAQ,UAAW,KAAK,QAAQ,cAChC,EAAQ,UAAW,KAAK,QAAQ,UAChC,4CACA,EAAQ,wBAAyB,KAAK,QAAQ,YAAa,KAAK,QAAQ,MAAM,SAC9E,+BACA,YACA,0CAEJ,EAAE,KAAK,KAAK,SAAS,SAAU,EAAG,GAC1B,EAAO,OAAS,EAAO,UAIvB,EAAK,QAAQ,WAAa,EAAO,aAIjC,EAAO,aACP,EAAK,KAAK,EAAQ,kFAEL,EAAO,MAAO,EAAI,EAAO,QAAU,qBAAuB,GAAK,EAAO,QACnF,IAER,IACA,EAAK,KAAK,QACN,WAGR,EAAK,KAAK,WAGN,KAAK,aAAe,EAAK,OAAS,IAClC,KAAK,SAAS,OAAO,EAAK,KAAK,KAG/B,KAAK,QAAQ,sBACb,KAAK,SAAS,KAAK,iCACd,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,iBAAkB,OAG7D,KAAK,QAAQ,aACb,KAAK,SAAS,KAAK,wBACd,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,QAAS,OAGpD,KAAK,QAAQ,YACb,KAAK,SAAS,KAAK,uBACd,IAAI,SAAS,GAAG,SAAS,WACtB,EAAK,YACT,IAGJ,KAAK,QAAQ,cACb,EAAY,KAAK,SAAS,KAAK,cAE3B,GAAmB,KAAK,QAAQ,qBAChC,EAAU,KAAK,SAAS,KAAK,YAAY,GAG7C,EAAU,KAAK,MAAM,IAAI,SAAS,GAAG,SAAS,SAAU,GACpD,EAAM,0BACV,IACA,EAAU,KAAK,SAAS,IAAI,SAAS,GAAG,SAAS,WAC7C,IAAI,EAAQ,EAAE,MAEd,EAAK,aAAa,EAAM,MAAO,EAAM,KAAK,YAAY,GACtD,EAAK,QAAQ,gBAAiB,EAAM,KAAK,SAAU,EAAM,KAAK,WAClE,KAGA,KAAK,QAAQ,UACb,EAAO,IACF,KACD,oBAAsB,KAAK,QAAQ,YAAc,YACjD,EAAQ,6BACJ,EAAQ,YAAa,KAAK,QAAQ,UAClC,kCACA,KAAK,QAAQ,aAAa,KAAK,OACnC,UAEJ,KAAK,SAAS,OAAO,EAAK,KAAK,MAC/B,EAAU,KAAK,SAAS,KAAK,kBACrB,IAAI,mBAAmB,GAAG,mBAAmB,SAAU,GACvD,EAAK,QAAQ,kBAAsC,KAAlB,EAAM,SAIvC,EAAE,QAAQ,EAAM,QAAS,CAAC,GAAI,GAAI,GAAI,MAAQ,IAIlD,aAAa,GACb,EAAY,YAAW,WACnB,EAAK,SAAS,EAClB,GAAG,EAAK,QAAQ,eACpB,IAEI,KACA,EAAQ,IAAI,WAAW,GAAG,WAAW,SAAU,GAC3C,aAAa,GACb,EAAY,YAAW,WACnB,EAAK,SAAS,EAClB,GAAG,EAAK,QAAQ,cACpB,IAGZ,EAEA,EAAe,UAAU,SAAW,SAAU,GAC1C,IAAI,EAAO,EAAE,KAAK,EAAE,EAAM,eAAe,OAGrC,KAAK,QAAQ,cAAgB,EAAE,EAAM,eAAe,QAAU,GAC9D,EAAE,EAAM,eAAe,IAAI,GAG3B,IAAS,KAAK,aAIE,IAAhB,EAAK,cACD,KAAK,WAEZ,KAAK,WAAa,EAGnB,KAAK,QAAQ,WAAa,EAC1B,KAAK,QAAQ,WAAa,EAC1B,KAAK,aACL,KAAK,mBACL,KAAK,QAAQ,SAAU,GAC3B,EAEA,EAAe,UAAU,WAAa,WAClC,IAAI,EAAO,KAEX,GAAoC,WAAhC,KAAK,QAAQ,eAA6B,CAC1C,GAAI,KAAK,QAAQ,eAAiB,EAAE,KAEhC,YADA,KAAK,QAAQ,aAAa,MAAM,KAAM,CAAC,KAAK,aAIhD,IAAI,IAAM,KAAK,aAAe,KAAe,KAAK,QAAQ,OACtD,EAAW,KAAK,YAAc,KAAK,YAAY,cAC/C,EAAI,EAAE,cAAc,KAAK,eAAiB,KAAO,KAAK,cAG1D,KAAK,KAAO,EAAI,EAAE,KAAK,KAAK,QAAQ,MAAM,SAAU,EAAM,GACtD,IAAK,IAAI,KAAO,EACZ,GAAI,EAAE,QAAQ,EAAE,MAA2C,IAAlC,EAAE,QAAQ,EAAK,GAAM,EAAE,MACvC,EAAE,QAAQ,EAAE,KAAS,EAAK,KAAS,EAAE,GAC1C,OAAO,EAGf,OAAO,CACX,IAAK,KAAK,QAAQ,KAElB,KAAK,KAAO,EAAI,EAAE,KAAK,KAAK,MAAM,SAAU,EAAM,GAC9C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAO,OAAO,OAAQ,IAE3C,GAAK,EAAK,OAAO,YAAY,GAA7B,CAIA,IAEI,EAFA,EAAM,EAAE,UAAU,EAAK,OAAO,OAAO,IAAM,SAAS,EAAK,OAAO,OAAO,GAAI,IAAM,EAAK,OAAO,OAAO,GACpG,EAAS,EAAK,QAAQ,EAAc,EAAK,QAAS,IAGtD,GAAmB,iBAAR,EAAkB,CACzB,EAAQ,EAER,IADA,IAAI,EAAQ,EAAI,MAAM,KACb,EAAa,EAAG,EAAa,EAAM,OAAQ,IAChD,EAAQ,EAAM,EAAM,IAIpB,GAAU,EAAO,kBACjB,EAAQ,EAAqB,EACzB,EAAK,OAAO,WAAW,GAAI,CAAC,EAAO,EAAM,GAAI,GAEzD,MACI,EAAQ,EAAK,GAGjB,GAAqB,iBAAV,GAAuC,iBAAV,EACpC,GAAI,EAAK,QAAQ,cACb,IAAK,EAAQ,IAAI,gBAAkB,EAC/B,OAAO,OAGX,IAA+C,KAA1C,EAAQ,IAAI,cAAc,QAAQ,GACnC,OAAO,CA7BnB,CAkCJ,OAAO,CACX,IAAK,KAAK,IACd,CACJ,EAEA,EAAe,UAAU,eAAiB,WACtC,GAAK,KAAK,QAAQ,WAAlB,CAKA,KAAK,YAAY,OAEjB,IAGI,EAAG,EAAM,EACT,EACA,EAAQ,EACR,EAAO,EACP,EAPA,EAAO,KACP,EAAO,GACP,GAAe,EAMf,EAAO,KAAK,UACZ,EAAW,KAAK,QAAQ,SAEQ,WAAhC,KAAK,QAAQ,iBACb,KAAK,QAAQ,UAAY,EAAK,QAGlC,KAAK,WAAa,EAClB,IAAI,EAAgB,KAAK,QAAQ,cAAc,KAAK,MACpD,GAAI,KAAK,QAAQ,UAAW,CACxB,GAAI,KAAK,QAAQ,WAAa,EAC1B,KAAK,QAAQ,SAAW,KAAK,QAAQ,UACrC,GAAe,OACZ,GAAI,KAAK,QAAQ,WAAa,KAAK,QAAQ,UAAW,CAGzD,IAAI,EAA2C,iBAA1B,KAAK,QAAQ,SAC9B,KAAK,QAAQ,SAAS,QAAQ,IAAK,IAAI,QAAQ,IAAK,IAC/C,QAAQ,KAAM,IAAI,cAAc,MAAM,KAAO,KAAK,QAAQ,SAC/D,EAAE,QAAQ,EAAc,cAAe,IAAa,IACpD,GAAe,EAEvB,CAEA,KAAK,WAAwE,MAAvD,KAAK,QAAQ,UAAY,GAAK,KAAK,QAAQ,UAEjE,KAAK,QAAQ,WAAa,KAAK,UACnC,CAkBA,GAjBI,KAAK,WAAa,GAAK,KAAK,QAAQ,WAAa,KAAK,aACtD,KAAK,QAAQ,WAAa,KAAK,YAGnC,KAAK,UAAY,KAAK,QAAQ,WAAa,GAAK,KAAK,QAAQ,SAAW,EACxE,KAAK,OAAS,KAAK,QAAQ,WAAa,KAAK,QAAQ,SACjD,KAAK,OAAS,KAAK,QAAQ,YAC3B,KAAK,OAAS,KAAK,QAAQ,WAG/B,EAAK,KACD,oBAAsB,KAAK,QAAQ,uBAAyB,uBAC5D,iCACA,KAAK,QAAQ,mBAAqB,KAAK,QAAQ,uBAAuB,KAAK,QAAQ,WACnF,KAAK,QAAQ,kBAAkB,KAAK,KAAM,KAAK,SAAU,KAAK,OAAQ,KAAK,QAAQ,WACnF,YAEC,KAAK,QAAQ,mBAAoB,CAClC,EAAK,KAAK,4BAEV,IAAI,EAAa,CACT,EAAQ,8BAC8B,QAAlC,KAAK,QAAQ,kBAAgE,SAAlC,KAAK,QAAQ,iBACpD,WAAa,UACrB,mCACA,EAAQ,UAAW,KAAK,QAAQ,cAChC,EAAQ,UAAW,KAAK,QAAQ,UAChC,4CACA,2BACA,EAAe,EAAgB,KAAK,QAAQ,SAC5C,UACA,+BACA,YACA,0CAER,GAAqC,iBAA1B,KAAK,QAAQ,SAAuB,CAC3C,IAAI,EAAO,KAAK,QAAQ,SAAS,QAAQ,IAAK,IAAI,QAAQ,IAAK,IAC1D,QAAQ,KAAM,IAAI,MAAM,KAE7B,EAAW,GACX,EAAE,KAAK,GAAM,SAAU,EAAG,GACtB,EAAS,KAAK,EAAM,gBAAkB,EAAc,cAChD,GAAiB,EACzB,GACJ,CA6EA,IA3EA,EAAE,KAAK,GAAU,SAAU,EAAG,GAEtB,IAAI,IADH,EAAK,QAAQ,cAAsB,IAAN,GAAW,EAAS,EAAI,GAAK,EAAK,QAAQ,aAGpE,EADA,EACU,IAAS,EAAgB,kBAAoB,GAE7C,IAAS,EAAK,QAAQ,SAAW,kBAAoB,GAEnE,EAAW,KAAK,EAAQ,iDAAkD,EAAQ,IAE1F,IACA,EAAW,KAAK,gBAEhB,EAAK,KAAK,KAAK,QAAQ,qBAAqB,KAAK,KAAM,EAAW,KAAK,MACvE,EAAK,KAAK,WAEV,EAAK,KAAK,SACN,oBAAsB,KAAK,QAAQ,iBAAmB,gBACtD,wBAA0B,EAAQ,iBAAkB,KAAK,QAAQ,UAAY,KAC7E,qDAAuD,KAAK,QAAQ,kBAAoB,aAExF,KAAK,WAAa,GAClB,EAAO,EACP,EAAK,KAAK,aAGV,GADA,EAAO,KAAK,QAAQ,WAAa,GACrB,EACR,EAAO,IACP,EAAO,EACP,EAAK,GAEL,EAAK,KAAK,aAEV,GADA,EAAK,KAAK,YACE,IAIhB,KAAK,YAAc,IACf,KAAK,QAAQ,YAAc,IAC3B,EAAK,KAAK,yBAA2B,IAAM,KAAK,QAAQ,WAAa,UAAY,IAAM,KACnF,gCAAiC,EAAG,OACpC,SAEJ,KAGA,KAAK,QAAQ,YAAc,IACI,GAA3B,KAAK,QAAQ,YAAsC,GAAnB,KAAK,YAAsC,GAAnB,KAAK,WAC7D,IAEA,EAAK,KAAK,6CACN,uCACA,SAGR,MAIJ,KAAK,YAAc,GACf,KAAK,QAAQ,YAAe,KAAK,WAAa,GAC9C,IAIe,GAAnB,KAAK,WACD,KAAK,QAAQ,YAAe,KAAK,WAAa,GAC9C,IAEG,KAAK,YAAc,IACH,GAAnB,KAAK,YAAmB,KAAK,QAAQ,YAAe,KAAK,WAAa,IACtE,IAIH,EAAI,EAAM,GAAK,EAAI,IACpB,EAAK,KAAK,0BAA4B,IAAM,KAAK,QAAQ,WAAa,UAAY,IAAM,KACpF,gCAAiC,EAAG,OACpC,SAGJ,KAAK,YAAc,GACf,KAAK,QAAQ,YAAe,KAAK,WAAa,GAC9C,EAAK,KAAK,4CACN,uCACA,SAIR,KAAK,YAAc,GACf,KAAK,QAAQ,YAAe,KAAK,WAAa,GAC9C,EAAK,KAAK,wBAA0B,KAAK,aAAe,KAAK,QAAQ,WAAa,UAAY,IAAM,KAChG,gCAAiC,KAAK,WAAY,OAClD,SAIZ,EAAK,KACD,sDAAwD,KAAK,QAAQ,mBAAqB,YAC1F,QACA,SACR,CACA,KAAK,YAAY,KAAK,EAAK,KAAK,KAE3B,KAAK,QAAQ,qBACd,EAAY,KAAK,YAAY,KAAK,gBAClC,EAAS,KAAK,YAAY,KAAK,eAC/B,EAAO,KAAK,YAAY,KAAK,aAC7B,EAAQ,KAAK,YAAY,KAAK,cAC9B,EAAQ,KAAK,YAAY,KAAK,cAC9B,EAAU,KAAK,YAAY,KAAK,gBAE5B,KAAK,QAAQ,eACT,KAAK,YAAc,GACnB,KAAK,YAAY,KAAK,kBAAkB,QAExC,EAAS,OAAS,GAAK,KAAK,QAAQ,WAAa,EAAS,KAC1D,KAAK,YAAY,KAAK,kBAAkB,OAI5C,KAAK,YAAY,KAAK,UAAU,OAAS,OAAS,WAGjD,KAAK,QAAQ,iBACkB,IAA5B,KAAK,QAAQ,YACb,EAAK,SAAS,YAEd,KAAK,QAAQ,aAAe,KAAK,YACjC,EAAM,SAAS,aAInB,IACA,KAAK,QAAQ,SAAW,GAE5B,EAAU,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,iBAAkB,OAClE,EAAO,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,YAAa,OAC1D,EAAK,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,UAAW,OACtD,EAAM,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,WAAY,OACxD,EAAM,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,WAAY,OACxD,EAAQ,IAAI,SAAS,GAAG,QAAS,EAAE,MAAM,KAAK,aAAc,OAnOhE,MAFI,KAAK,YAAY,MAuOzB,EAEA,EAAe,UAAU,iBAAmB,SAAU,GAE9C,GAAS,EAAE,EAAM,eAAe,SAAS,cAIxC,KAAK,QAAQ,kBACd,KAAK,YAGT,KAAK,iBAC+B,WAAhC,KAAK,QAAQ,eACb,KAAK,QAEL,KAAK,WAGT,KAAK,QAAQ,cAAe,KAAK,QAAQ,WAAY,KAAK,QAAQ,UACtE,EAEA,EAAe,UAAU,iBAAmB,SAAU,GAClD,IAAI,EAAM,EAAE,EAAM,eACd,EAAgB,KAAK,QAAQ,cAAc,KAAK,MACpD,EAAI,SAAS,SAAS,UAAU,WAAW,YAAY,UACvD,KAAK,QAAQ,SAAW,EAAI,OAAO,gBAAkB,EAAc,cAC/D,GAAiB,EAAI,OACzB,KAAK,SAAS,KAAK,cAAc,KAAK,KAAK,QAAQ,UAEnD,KAAK,iBAAiB,EAC1B,EAEA,EAAe,UAAU,YAAc,SAAU,GAC7C,KAAK,QAAQ,WAAa,EAC1B,KAAK,iBAAiB,EAC1B,EAEA,EAAe,UAAU,UAAY,SAAU,GACtC,KAAK,QAAQ,WAAa,GAAO,EAClC,KAAK,QAAQ,WAAa,KAAK,QAAQ,WAEvC,KAAK,QAAQ,aAEjB,KAAK,iBAAiB,EAC1B,EAEA,EAAe,UAAU,WAAa,SAAU,GACvC,KAAK,QAAQ,WAAa,EAAK,KAAK,QAAQ,WAC7C,KAAK,QAAQ,WAAa,EAE1B,KAAK,QAAQ,aAEjB,KAAK,iBAAiB,EAC1B,EAEA,EAAe,UAAU,WAAa,SAAU,GAC5C,KAAK,QAAQ,WAAa,KAAK,WAC/B,KAAK,iBAAiB,EAC1B,EAEA,EAAe,UAAU,aAAe,SAAU,GAC1C,KAAK,QAAQ,cAAgB,EAAE,EAAM,eAAe,SAGxD,KAAK,QAAQ,YAAc,EAAE,EAAM,eAAe,OAClD,KAAK,iBAAiB,GAC1B,EAEA,EAAe,UAAU,SAAW,SAAU,GAC1C,IAAI,EAAO,KACP,EAAO,GACP,EAAO,KAAK,UAEhB,KAAK,QAAQ,WAAY,GAEzB,KAAK,MAAQ,KAAK,IAAI,KAAK,UACtB,KAAK,MAAM,SACZ,KAAK,MAAQ,EAAE,mBAAmB,SAAS,KAAK,MAK/C,KAAK,QAAQ,YAA8C,WAAhC,KAAK,QAAQ,iBACzC,KAAK,SAAW,EAChB,KAAK,OAAS,EAAK,QAGvB,IAAK,IAAI,EAAI,KAAK,SAAW,EAAG,EAAI,KAAK,OAAQ,IAAK,CAClD,IAAI,EACA,EAAO,EAAK,GACZ,EAAQ,CAAC,EACT,EAAQ,GACR,EAAQ,GACR,EAAa,CAAC,EACd,EAAiB,GAErB,KAAI,EAAE,QAAQ,EAAM,KAAK,aAAe,GAAxC,CAMA,IAFA,EAAQ,EAAqB,KAAK,QAAS,KAAK,QAAQ,SAAU,CAAC,EAAM,GAAI,KAEhE,EAAM,IACf,IAAK,KAAO,EAAM,IACd,EAAM,KAAK,EAAM,KAAO,EAAM,IAAI,IAO1C,GAHA,EAAa,EAAqB,KAAK,QACnC,KAAK,QAAQ,cAAe,CAAC,EAAM,GAAI,GAGvC,IAAK,KAAO,EACR,EAAe,KAAK,EAAQ,UAAW,EAAK,EAAW,EAAW,MAItE,EAAK,QAAU,EAAE,cAAc,EAAK,QACpC,EAAE,KAAK,EAAK,OAAO,SAAU,EAAG,GAElB,UAAN,IAGJ,GAAS,EAAQ,gBAAiB,EAAG,GACzC,IAGJ,EAAK,KAAK,MACN,EAAQ,MAAO,EAAe,KAAK,MACnC,EAAQ,WAAY,EAAE,QAAQ,GAAQ,EAAY,EAAK,KACvD,EAAQ,cAAe,EAAM,UAAY,EAAE,QAAQ,GAAQ,EAAY,EAAK,SAC5E,EAAQ,mBAAoB,GAC5B,EAAQ,sBAAuB,EAAK,KAAK,QAAQ,WACjD,EAAQ,KAAM,GACd,KAGA,KAAK,QAAQ,UACb,EAAK,KAAK,EAAQ,4CAA6C,KAAK,OAAO,OAAO,UAGjF,KAAK,QAAQ,UAAY,KAAK,QAAQ,YACvC,EAAK,KAAK,OACN,oDACA,EAAQ,wBAAyB,KAAK,QAAQ,YAAa,KAAK,QAAQ,MAAM,YAC9E,OACA,SAGR,EAAE,KAAK,KAAK,OAAO,QAAQ,SAAU,EAAG,GACpC,IAAI,EAAO,GACP,EAAS,EAAa,EAAM,EAAO,EAAK,QAAQ,QAChD,EAAQ,GACR,EAAO,GACP,EAAY,CAAC,EACb,EAAM,GACN,EAAS,EAAK,OAAO,QAAQ,GAC7B,EAAQ,GACR,EAAW,GACX,EAAW,GACX,EAAS,GACT,EAAS,EAAK,QAAQ,GAE1B,KAAI,EAAK,eAA8B,IAAX,IAIvB,EAAO,WAIR,EAAK,QAAQ,UAAa,EAAO,aAArC,CA2BA,GAvBA,EAAQ,EAAQ,aAAc,EAAM,OAAO,EAAK,OAAO,OAAO,IAAI,KAAK,OAGnE,EAAK,IAAM,EAAQ,SACnB,EAAM,EAAQ,WAAY,EAAK,IAAM,EAAQ,SAE7C,EAAK,IAAM,EAAQ,YACnB,EAAS,EAAQ,cAAe,EAAK,IAAM,EAAQ,YAEnD,EAAK,IAAM,EAAQ,cACnB,EAAW,EAAQ,gBAAiB,EAAK,IAAM,EAAQ,cAEvD,EAAK,IAAM,EAAQ,cACnB,EAAW,EAAQ,gBAAiB,EAAK,IAAM,EAAQ,cAEvD,EAAK,IAAM,EAAQ,YACnB,EAAS,EAAQ,cAAe,EAAK,IAAM,EAAQ,aAEvD,EAAY,EAAqB,EAAK,OAClC,EAAK,OAAO,WAAW,GAAI,CAAC,EAAQ,EAAM,EAAG,GAAQ,IAC3C,UACV,EAAS,EAAQ,cAAe,EAAU,UAE1C,EAAU,IAAK,CACf,IAAI,EAAS,GACb,IAAK,IAAI,KAAO,EAAU,IACtB,EAAO,KAAK,EAAM,KAAO,EAAU,IAAI,IAE3C,EAAQ,EAAQ,aAAc,EAAO,OAAO,EAAK,OAAO,OAAO,IAAI,KAAK,MAC5E,CAEA,EAAQ,EAAqB,EACzB,EAAK,OAAO,WAAW,GAAI,CAAC,EAAQ,EAAM,GAAI,GAE9C,EAAK,IAAM,EAAQ,WAAa,EAAE,cAAc,EAAK,IAAM,EAAQ,WACnE,EAAE,KAAK,EAAK,IAAM,EAAQ,UAAU,SAAU,EAAG,GAEnC,UAAN,IAGJ,GAAS,EAAQ,gBAAiB,EAAG,GACzC,IAGA,EAAO,UAAY,EAAO,OAC1B,EAAO,EAAO,SAAW,WAAa,EACtC,EAAO,EAAO,MAAQ,QAAU,EAEhC,EAAO,CAAC,EAAQ,EAAK,QAAQ,SACzB,6BAA+B,8BAA+B,EAAc,OAAK,IACjF,SACA,EAAQ,mBAAoB,GAC5B,EAAQ,aAAc,EAAK,QAAQ,gBACnC,EAAQ,aAAc,GACtB,EAAQ,cAAe,EAAK,EAAK,QAAQ,UACzC,EAAQ,iBAA2B,IAAV,GACxB,GAAU,GAAS,EAAM,QAAW,UAAY,GACjD,EAAQ,kBAAmB,EAAO,iBACjC,GAAS,EAAM,SAAY,WAAa,GACzC,MACA,EAAK,OAAO,WAAW,IAAuB,iBAAV,EAAqB,EAAQ,GACjE,EAAK,QAAQ,SAAW,SAAW,SACrC,KAAK,IAEP,EAAK,EAAK,OAAO,aAAwB,IAAV,GAAmB,GAAS,EAAM,UAEjE,EAAQ,MAAO,EACX,EAAK,QAAQ,cAAgB,EAEjC,EAAO,EAAK,QAAQ,SAAW,CAAC,0BAC5B,EAAK,QAAQ,WAAa,EAAQ,mCAAoC,EAClE,EAAqB,EAAK,QAAS,QAAS,QAAS,IAAU,GACnE,EAAQ,gCAAiC,GACzC,UACF,KAAK,IAAM,CAAC,EAAQ,2BAClB,EAAK,EAAQ,EAAO,EAAO,EAAU,EAAU,GAC/C,EACA,SACF,KAAK,IAGH,EAAK,QAAQ,UAAY,EAAK,QAAQ,cAA0B,KAAV,IAEtD,EAAO,kCAIf,EAAK,KAAK,EAzFV,CA0FJ,IAEI,KAAK,QAAQ,UACb,EAAK,KAAK,eAGd,EAAK,KAAK,QA3KV,CA4KJ,CAGK,EAAK,QACN,EAAK,KAAK,gCACN,EAAQ,2BACJ,KAAK,QAAQ,KAAK,MAAM,OAAQ,KAAK,QAAQ,gBAAgB,KAAK,OACtE,SAGR,KAAK,MAAM,KAAK,EAAK,KAAK,KAErB,GACD,KAAK,SAAS,GAIlB,KAAK,MAAM,KAAK,yBAAyB,IAAI,kBAAkB,GAAG,kBAAkB,SAAU,GAC1F,IAAI,EAAM,EAAE,MACR,EAAM,EAAI,SACV,EAAO,EAAK,KAAK,EAAI,KAAK,UAC1B,EAAQ,EAAI,GAAG,UAEf,EADS,EAAK,mBACC,EAAK,QAAQ,aAAe,EAAK,QAAQ,SAAW,EAAQ,EAAI,GAC/E,EAAS,EAAK,QAAQ,EAAc,EAAK,QAAS,IAClD,EAAQ,EAAa,EAAM,EAAO,EAAK,QAAQ,QAEnD,IAAI,EAAI,KAAK,gBAAgB,SAI7B,EAAK,QAAmB,UAAX,EAAE,KAAmB,aAAe,iBAAkB,EAAO,EAAO,EAAM,GACvF,EAAK,QAAmB,UAAX,EAAE,KAAmB,YAAc,gBAAiB,EAAM,EAAK,GAG7D,UAAX,EAAE,MAAoB,EAAK,QAAQ,eAAiB,EAAO,eAAe,CAC1E,IAAI,EAAc,EAAI,KAAK,EAAQ,YAAa,EAAK,QAAQ,iBACzD,EAAY,QACZ,EAAY,GAAG,OAEvB,CACJ,IAEA,KAAK,MAAM,KAAK,wCAAwC,IAAI,SAAS,GAAG,SAAS,WAC7E,IAAI,EAAQ,EAAE,MACV,EAAM,EAAM,SAAS,SACrB,EAAQ,EAAI,KAAK,SACjB,EAAM,EAAK,GAGf,GAAI,EAAI,OAAO,GAAG,kBACd,EAAM,KAAK,KAAK,KAAK,QAAS,EAAQ,QAAS,EAAK,QAAQ,YAAa,EAAK,QAAQ,MAAM,aAC5F,EAAI,OAAO,SACX,EAAK,QAAQ,eAAgB,EAAO,OACjC,CACH,EAAM,KAAK,KAAK,KAAK,QAAS,EAAQ,QAAS,EAAK,QAAQ,YAAa,EAAK,QAAQ,MAAM,cAC5F,EAAI,MAAM,EAAQ,sDAAuD,EAAI,KAAK,MAAM,SACxF,IAAI,EAAW,EAAI,OAAO,KAAK,MAC3B,EAAU,EAAqB,EAAK,QAAS,EAAK,QAAQ,gBAAiB,CAAC,EAAO,EAAK,GAAW,IAChF,IAApB,EAAS,QACR,EAAS,OAAO,GAEpB,EAAK,QAAQ,aAAc,EAAO,EAAK,EAC3C,CACA,EAAK,WACT,IAEA,KAAK,YAAc,KAAK,MAAM,KAAK,EAAQ,YAAa,KAAK,QAAQ,iBAErE,KAAK,YAAY,IAAI,SAAS,GAAG,SAAS,SAAU,GAChD,EAAM,2BAEN,IAAI,EAAQ,EAAE,MACV,EAAU,EAAM,KAAK,WACrB,EAAM,EAAK,KAAK,EAAM,KAAK,UAE3B,EAAK,QAAQ,kBAAoB,EAAE,MAAM,GAAG,WAC5C,EAAE,KAAK,EAAK,QAAQ,MAAM,SAAU,EAAG,GACnC,EAAI,EAAK,OAAO,aAAc,CAClC,IAGJ,EAAI,EAAK,OAAO,YAAc,EAE1B,EAAK,QAAQ,eACb,EAAK,YAAY,IAAI,MAAM,MAAK,WAC5B,EAAK,KAAK,EAAE,MAAM,KAAK,UAAU,EAAK,OAAO,aAAc,CAC/D,IACA,EAAK,YAAY,OAAO,YAAY,IAAI,MAAM,KAAK,WAAW,IAGlE,EAAK,iBACL,EAAK,QAAQ,EAAU,QAAU,UAAW,EAAK,EACrD,IAEA,EAAE,KAAK,KAAK,OAAO,QAAQ,SAAU,EAAG,GACpC,GAAK,EAAL,CAIsB,iBAAX,IACP,EAAS,EAAqB,KAAM,IAGxC,IAAI,EAAQ,EAAK,OAAO,OAAO,GAC3B,EAAa,EAAE,QAAQ,EAAO,EAAK,oBAMvC,IAAK,IAAI,KAJL,EAAK,QAAQ,aAAe,EAAK,QAAQ,WACzC,GAAc,GAGF,EACZ,EAAK,MAAM,KAAK,8BAA8B,MAAK,WAC/C,IAAI,EAAM,EAAE,MACR,EAAM,EAAI,KAAK,EAAK,QAAQ,SAAW,aAAe,MAAM,GAAG,GAC/D,EAAQ,EAAI,QAAQ,KACpB,EAAO,EAAI,UAAU,EAAG,GACxB,EAAK,EAAI,UAAU,EAAQ,GAC3B,EAAO,EAAO,GAElB,EAAI,KAAK,GAAI,IAAI,GAAM,GAAG,GAAM,SAAU,GACtC,IAAI,EAAQ,EAAI,KAAK,SACjB,EAAM,EAAK,KAAK,GAChB,EAAQ,EAAI,GAEhB,EAAK,MAAM,KAAM,CAAC,EAAG,EAAO,EAAK,GACrC,GACJ,GA7BJ,CA+BJ,IAEA,KAAK,iBACL,KAAK,YAEL,KAAK,QAAQ,YAAa,EAC9B,EAEA,EAAe,UAAU,MAAQ,SAAU,EAAQ,EAAO,GACtD,IAQI,EARA,EAAO,KACP,EAAO,CAAC,EACR,EAAS,CACL,WAAY,KAAK,WACjB,SAAU,KAAK,QAAQ,SACvB,UAAW,KAAK,QAAQ,WAE5B,EAAgB,KAAK,QAAQ,cAAc,KAAK,MAGhD,KAAK,QAAQ,aACb,EAAO,SAAW,KAAK,QAAQ,WAAa,EAAgB,KAAK,QAAQ,UAAY,KAAK,QAAQ,SAClG,EAAO,WAAa,KAAK,QAAQ,aAG/B,GAAO,KAAK,QAAQ,KAAS,KAAK,QAAQ,QAIX,UAAjC,KAAK,QAAQ,kBACb,EAAS,CACL,OAAQ,EAAO,WACf,KAAM,EAAO,SACb,MAAO,EAAO,WAGd,KAAK,QAAQ,aACb,EAAO,OAAS,KAAK,QAAQ,WAAa,EAAgB,EAAI,KAAK,QAAQ,UAAY,KAAK,QAAQ,WAAa,GACjH,EAAO,MAAQ,KAAK,QAAQ,WAAa,EAAgB,KAAK,QAAQ,UAAY,KAAK,QAAQ,WAIjG,EAAE,cAAc,KAAK,wBACvB,EAAO,OAAS,KAAK,UAAU,KAAK,qBAAsB,OAG9D,EAAO,EAAqB,KAAK,QAAS,KAAK,QAAQ,YAAa,CAAC,GAAS,GAC9E,EAAE,OAAO,EAAM,GAAS,CAAC,IAGZ,IAAT,IAIC,GACD,KAAK,cAGT,EAAU,EAAE,OAAO,CAAC,EAAG,EAAqB,KAAM,KAAK,QAAQ,aAAc,CACzE,KAAM,KAAK,QAAQ,OACnB,IAAM,GAAO,KAAK,QAAQ,IAC1B,KAAmC,qBAA7B,KAAK,QAAQ,aAA8D,SAAxB,KAAK,QAAQ,OAAoB,KAAK,UAAU,GAAQ,EACjH,MAAO,KAAK,QAAQ,MACpB,YAAa,KAAK,QAAQ,YAC1B,SAAU,KAAK,QAAQ,SACvB,QAAS,SAAU,GACf,EAAM,EAAqB,EAAK,QAAS,EAAK,QAAQ,gBAAiB,CAAC,GAAM,GAC9E,EAAK,KAAK,GACV,EAAK,QAAQ,eAAgB,GACxB,GAAQ,EAAK,aACtB,EACA,MAAO,SAAU,GACb,EAAK,QAAQ,aAAc,EAAI,OAAQ,GAClC,GAAQ,EAAK,aACtB,IAGA,KAAK,QAAQ,KACb,EAAqB,KAAM,KAAK,QAAQ,KAAM,CAAC,GAAU,OAErD,GAA4B,IAApB,EAAK,YACb,EAAK,QAET,EAAO,EAAE,KAAK,KAEtB,EAEA,EAAe,UAAU,eAAiB,WACtC,GAAI,KAAK,QAAQ,QACmB,KAA5B,KAAK,QAAQ,WAAmB,CAChC,IAAI,EAAU,KAAK,SAAS,KAAK,iBACjC,EAAQ,IAAI,KAAK,QAAQ,YACzB,KAAK,SAAS,CAAC,cAAe,GAClC,CAER,EAEA,EAAe,UAAU,SAAW,WAChC,IAAI,EAAO,KAEX,EAAE,KAAK,KAAK,QAAQ,KAAK,OAAO,SAAU,EAAG,GACzC,EAAE,GAAI,KAAK,aAAa,YAAY,YAAY,SAAS,EAAE,GAAI,KAAK,WAAa,EAAK,QAAQ,SAAW,EAAK,QAAQ,UAAY,OACtI,GACJ,EAEA,EAAe,UAAU,eAAiB,WACtC,IAAI,EAAW,KAAK,YAAY,OAAO,YAAY,QAC/C,KAAK,YAAY,OAAO,YAAY,SACpC,KAAK,YAAY,OAAO,YAAY,OAAO,YAAY,OAE3D,KAAK,WAAW,IAAI,KAAK,aAAa,KAAK,UAAW,GAEtD,KAAK,YAAY,MAAK,WAClB,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,KAAK,WAAa,WAAa,eAAe,WAChF,GACJ,EAEA,EAAe,UAAU,WAAa,WAClC,IAAI,EAAO,KAEX,KAAK,YAAY,MAAK,WAClB,EAAK,KAAK,EAAE,MAAM,KAAK,UAAU,EAAK,OAAO,YAAc,EAAE,MAAM,KAAK,UAC5E,GACJ,EAEA,EAAe,UAAU,UAAY,WACjC,IAAI,EAAO,KAEX,EAAE,KAAK,KAAK,MAAM,SAAU,EAAG,GAC3B,EAAK,WAAW,KAAK,WAAW,GAChC,EAAK,YAAY,KAAK,WAAW,GAC7B,EAAK,OAAO,aACZ,EAAI,EAAK,OAAO,aAAc,EAEtC,IACA,KAAK,gBACT,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,IAAI,EAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GAEjD,GAAQ,YACR,KAAK,QAAQ,EAAe,OAAO,IAAO,MAAM,KAAK,QAAS,GAC9D,KAAK,IAAI,QAAQ,EAAE,MAAM,GAAO,GAEhC,KAAK,QAAQ,MAAM,EAAM,GACzB,KAAK,IAAI,QAAQ,EAAE,MAAM,gBAAiB,CAAC,EAAM,GACrD,EAEA,EAAe,UAAU,YAAc,WAGnC,aAAa,KAAK,YAClB,KAAK,WAAa,WAAW,EAAE,MAAM,KAAK,UAAW,MAAO,KAAK,IAAI,GAAG,WAAa,IAAM,EAC/F,EAEA,EAAe,UAAU,UAAY,WACjC,IACI,EACA,EACA,EACA,EAJA,EAAO,KAMX,GAAI,EAAK,IAAI,GAAG,WACZ,EAAK,WAAa,WAAW,EAAE,MAAM,EAAK,UAAW,GAAO,SADhE,CAaA,GAPA,GAFA,EAAY,KAAK,WAAW,IAAI,IAER,YAAc,EAAU,aAChD,EAAU,aAAe,EAAU,aAAe,KAAK,QAAQ,cAC3D,IAAsB,EAE1B,KAAK,IAAI,IAAI,cAAe,KAAK,QAAQ,gBAEzC,EAAU,EAAE,WACA,OAAS,EAAG,CACpB,IAAI,EAAM,EAAQ,QAAQ,MAC1B,GAAI,EAAI,OAAS,EAAG,CAChB,IAAI,EAAY,EAAI,KAAK,SACzB,GAAI,IAAc,EAAW,CACzB,IAAI,EAAY,KAAK,QAAQ,KAAK,eAAiB,EAAY,KAC3D,EAAU,OAAS,GACnB,EAAU,KAAK,UAAU,SAAS,aAE1C,CACJ,CACJ,CAEA,KAAK,SAAW,KAAK,QAAQ,OAAM,GAAM,GACzC,KAAK,YAAc,KAAK,SAAS,KAAK,+BACtC,KAAK,aAAa,IAAI,CAClB,eAAgB,IACjB,KAAK,SAAS,IAAI,QAAS,KAAK,IAAI,cAClC,KAAK,IAAI,KAAK,QAAS,KAAK,IAAI,KAAK,UACrC,OAAO,KAAK,WAEjB,EAAc,EAAE,8BACA,OAAS,IACrB,EAAY,QACZ,KAAK,QAAQ,KAAK,eAAe,YAAY,eAIjD,KAAK,QAAQ,KAAK,kBAAkB,MAAK,SAAU,GAClD,IAAI,EAAM,EAAE,MACZ,EAAI,SAAS,EAAI,KAAK,UACnB,EAAK,SAAS,KAAK,EAAQ,oBAAqB,EAAI,KAAK,WAAW,KAAK,EAAI,OACjF,IAEA,IAAI,EAAgB,KAAK,mBACrB,EAAO,KAAK,SAAS,KAAK,MAE9B,KAAK,MAAM,KAAK,8CAA8C,MAAK,SAAU,GACzE,IAAI,EAAQ,EAAE,MACV,EAAQ,EAER,EAAK,QAAQ,aAAe,EAAK,QAAQ,WAC/B,IAAN,GACA,EAAK,SAAS,KAAK,aAAa,KAAK,aAAa,MAAM,EAAM,cAElE,EAAQ,EAAI,GAGhB,IAAI,EAAM,EAAK,SAAS,KAAK,EAAQ,oBAAqB,EAAc,KACpE,EAAI,OAAS,IACb,EAAM,EAAE,EAAK,EAAM,GAAG,aAG1B,EAAI,KAAK,aAAa,MAAM,EAAM,aACtC,IAIA,KAAK,WAAW,IAAI,UAAU,GAAG,UAAU,WACvC,EAAK,aAAa,WAAW,EAAE,MAAM,cAEjC,EAAK,QAAQ,aAAe,EAAK,QAAQ,UACzC,EAAK,aAAa,WAAW,EAAE,MAAM,aAE7C,IAEA,EAAK,QAAQ,cA5Eb,CA6EJ,EAEA,EAAe,UAAU,YAAc,WACnC,IAAI,EAAO,KACP,EAAO,EAAK,UACZ,EAAO,GAEN,KAAK,QAAQ,aAAc,KAAK,QAAQ,YAIxC,KAAK,QAAQ,UAAY,KAAK,QAAQ,YACvC,EAAK,KAAK,2EAGd,EAAE,KAAK,KAAK,SAAS,SAAU,EAAG,GAC9B,IAAI,EACA,EACA,EAEA,EADA,EAAQ,GAER,EAAS,EAAQ,cAAe,EAAc,OAElD,GAAK,EAAO,WAIR,EAAK,QAAQ,UAAc,EAAO,aAAtC,CAQA,GAJA,EAAS,EAAQ,mBAAoB,EAAO,OAAS,EAAO,OAAS,EAAO,OAC5E,EAAS,EAAQ,uBAAwB,EAAO,SAEhD,EAAQ,EAAqB,KAAM,EAAK,QAAQ,eACnC,EAAM,IACf,IAAK,KAAO,EAAM,IACd,EAAM,KAAK,EAAM,KAAO,EAAM,IAAI,IAI1C,EAAK,KAAK,MAAO,EAAQ,EAAQ,cAAe,EAAS,EAAS,EAAM,SAAS,KAAK,OAAQ,KAC9F,EAAK,KAAK,0BACV,EAAK,KAAK,EAAqB,EAAQ,EAAO,gBAAiB,CAAC,GAAO,WAAa,UACpF,EAAK,KAAK,UACV,EAAK,KAAK,gCACV,EAAK,KAAK,UACV,EAAK,KAAK,QAlBV,CAmBJ,IAEA,KAAK,aAAa,KAAK,MAAM,KAAK,EAAK,KAAK,KAC5C,KAAK,aAAa,OAElB,aAAa,KAAK,gBAClB,KAAK,eAAiB,WAAW,EAAE,MAAM,KAAK,UAAW,MACrD,KAAK,IAAI,GAAG,WAAa,IAAM,GACvC,EAEA,EAAe,UAAU,UAAY,WACjC,IACI,EACA,EACA,EAEJ,aAAa,KAAK,gBAEd,KAAK,IAAI,GAAG,WACZ,KAAK,eAAiB,WAAW,EAAE,MAAM,KAAK,UAAW,MAAO,MAKpE,GADA,EAAU,KAAK,IAAI,IAAI,UACC,KAAK,WAAW,QAAU,IAAsB,EAExE,KAAK,aAAa,IAAI,CAClB,eAAgB,IACjB,KAAK,SAAS,IAAI,QAAS,GACzB,KAAK,QAAS,KAAK,IAAI,KAAK,UAEjC,EAAY,KAAK,aAAa,KAAK,MACnC,KAAK,MAAM,KAAK,8CAA8C,MAAK,SAAU,GACzE,EAAU,GAAG,GAAG,KAAK,aAAa,MAAM,EAAE,MAAM,aACpD,IACJ,EAEA,EAAe,UAAU,aAAe,SAAU,EAAO,EAAS,GAC9D,IAAe,IAAX,IAGJ,KAAK,QAAQ,GAAO,QAAU,EAC9B,KAAK,aACL,KAAK,aACL,KAAK,iBACL,KAAK,WAED,KAAK,QAAQ,aAAa,CAC1B,IAAI,EAAS,KAAK,SAAS,KAAK,oBAAoB,KAAK,YAAY,GAEjE,GACA,EAAO,OAAO,EAAQ,aAAc,IAAQ,KAAK,UAAW,GAG5D,EAAO,OAAO,YAAY,QAAU,KAAK,QAAQ,qBACjD,EAAO,OAAO,YAAY,KAAK,YAAY,EAEnD,CACJ,EAEA,EAAe,UAAU,iBAAmB,WACxC,IAAI,EAAO,KACP,EAAgB,GAUpB,OARA,EAAE,KAAK,KAAK,OAAO,QAAQ,SAAU,EAAG,GACvB,EAAK,QAAQ,EAAc,EAAK,QAAS,IAE1C,SAGZ,EAAc,KAAK,EACvB,IACO,CACX,EAKA,EAAe,UAAU,UAAY,SAAU,GAC3C,IAAI,EAAU,EASd,GAPI,GAAU,EAAO,SACjB,KAAK,QAAQ,OAAS,EAAO,QAGjC,KAAK,WAAW,KAAK,UAAW,KAAK,YAAY,OAAS,GACtD,KAAK,YAAY,SAAW,KAAK,YAAY,OAAO,YAAY,QAEhE,KAAK,QAAQ,OAAQ,CACrB,IAAI,EAAgB,KAAK,SAAS,aAAY,GAC1C,EAAmB,KAAK,YAAY,aAAY,GAChD,EAAS,KAAK,QAAQ,OAAS,EAAgB,EAEnD,KAAK,gBAAgB,IAAI,SAAU,EAAS,KAChD,CAEA,GAAI,KAAK,QAAQ,SAKb,OAHA,KAAK,IAAI,IAAI,aAAc,KAC3B,KAAK,gBAAgB,IAAI,iBAAkB,UAC3C,KAAK,aAAa,OAIlB,KAAK,QAAQ,YAAc,KAAK,QAAQ,QACxC,KAAK,aAAa,OAClB,KAAK,cACL,GAAW,KAAK,QAAQ,gBAExB,KAAK,aAAa,OAClB,KAAK,QAAQ,gBAGb,KAAK,QAAQ,aACb,KAAK,cACD,KAAK,QAAQ,SACb,GAAW,KAAK,aAAa,cAAgB,IAKrD,KAAK,WACL,KAAK,gBAAgB,IAAI,iBAAkB,EAAU,MACrD,KAAK,QAAQ,aACjB,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,OAAU,KAAK,aAAe,GAAe,EAAE,cAAc,KAAK,gBAAmB,EAAE,cAAc,KAAK,sBAErG,EAAiB,KAAK,QAAQ,KAAK,MAAM,KAAK,SAAW,EAAG,KAAK,QAAU,KAAK,QAAQ,KADxF,EAAiB,KAAK,KAAK,MAAM,KAAK,SAAW,EAAG,KAAK,QAAU,KAAK,IAEjF,EAEA,EAAe,UAAU,KAAO,SAAU,GACtC,IAAI,GAAc,EAGkB,WAAhC,KAAK,QAAQ,gBACb,KAAK,QAAQ,UAAY,EAAK,KAAK,QAAQ,YAC3C,EAAc,EAAK,YACnB,EAAO,EAAK,KAAK,QAAQ,YACjB,EAAE,QAAQ,KAClB,EAAc,EAAK,YACnB,EAAO,EAAK,MAGhB,KAAK,SAAS,GACd,KAAK,aACL,KAAK,iBACL,KAAK,SAAS,EAClB,EAEA,EAAe,UAAU,OAAS,SAAU,GACxC,KAAK,SAAS,EAAM,UACpB,KAAK,aACL,KAAK,iBACL,KAAK,WACL,KAAK,UAAS,EAClB,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,KAAK,SAAS,EAAM,WACpB,KAAK,aACL,KAAK,iBACL,KAAK,WACL,KAAK,UAAS,EAClB,EAEA,EAAe,UAAU,OAAS,SAAU,GACxC,IACI,EAAG,EADH,EAAM,KAAK,QAAQ,KAAK,OAG5B,GAAK,EAAO,eAAe,UAAa,EAAO,eAAe,UAA9D,CAIA,IAAK,EAAI,EAAM,EAAG,GAAK,EAAG,KACtB,EAAM,KAAK,QAAQ,KAAK,IAEf,eAAe,EAAO,SAGsB,IAAjD,EAAE,QAAQ,EAAI,EAAO,OAAQ,EAAO,UACpC,KAAK,QAAQ,KAAK,OAAO,EAAG,GACQ,WAAhC,KAAK,QAAQ,iBACb,KAAK,QAAQ,WAAa,IAKlC,IAAQ,KAAK,QAAQ,KAAK,SAI9B,KAAK,aACL,KAAK,iBACL,KAAK,WACL,KAAK,UAAS,GAvBd,CAwBJ,EAEA,EAAe,UAAU,UAAY,WAC7B,KAAK,QAAQ,KAAK,OAAS,IAC3B,KAAK,QAAQ,KAAK,OAAO,EAAG,KAAK,QAAQ,KAAK,QAC9C,KAAK,aACL,KAAK,iBACL,KAAK,UAAS,GAEtB,EAEA,EAAe,UAAU,iBAAmB,SAAU,GAClD,IAGI,EAAG,EAAK,EAHR,EAAW,KAAK,QAAQ,SAExB,EAAU,KAGd,IAAK,EAJK,KAAK,QAAQ,KAAK,OAIb,EAAG,GAAK,EAAG,IAAK,CAG3B,IAFA,EAAM,KAAK,QAAQ,KAAK,IAEhB,eAAe,GACnB,EAAc,EAAI,OACf,KAAG,EAAI,MAAM,eAAe,GAG/B,SAFA,EAAc,EAAI,MAAM,EAG5B,CAYA,GAV2B,iBAAhB,EACP,EAAK,EAAG,WACsB,iBAAhB,IACT,OAAO,KAAiB,GAAiB,EAAc,GAAM,EAC9D,EAAK,SAAS,GACN,IAAgB,OAAO,IAAkC,IAAhB,IACjD,EAAK,WAAW,KAIpB,IAAgB,EAAI,CACpB,EAAU,EACV,KACJ,CACJ,CAEA,OAAO,CACX,EAEA,EAAe,UAAU,iBAAmB,SAAU,GAClD,IAAI,EAAM,KAAK,QAAQ,KAAK,OACxB,EAAM,KAAK,iBAAiB,GAE5B,GACA,KAAK,QAAQ,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,GAAM,GAGzD,IAAQ,KAAK,QAAQ,KAAK,SAI9B,KAAK,aACL,KAAK,iBACL,KAAK,UAAS,GAClB,EAEA,EAAe,UAAU,iBAAmB,SAAU,GAClD,IAAI,EAAO,KACP,EAAY,EAAE,QAAQ,GAAU,EAAS,CAAE,GAE/C,EAAE,KAAK,GAAW,SAAS,EAAG,GAC1B,IAAI,EAEC,EAAO,eAAe,OAAU,EAAO,eAAe,SAM5C,KAFf,EAAQ,EAAE,QAAQ,EAAK,iBAAiB,EAAO,IAAK,EAAK,QAAQ,QAKjE,EAAE,OAAO,EAAK,QAAQ,KAAK,GAAQ,EAAO,IAC9C,IAEA,KAAK,aACL,KAAK,iBACL,KAAK,WACL,KAAK,UAAS,EAClB,EAEA,EAAe,UAAU,UAAY,SAAU,GACtC,EAAO,eAAe,UAAa,EAAO,eAAe,SAG9D,KAAK,KAAK,OAAO,EAAO,MAAO,EAAG,EAAO,KACzC,KAAK,aACL,KAAK,iBACL,KAAK,WACL,KAAK,UAAS,GAClB,EAEA,EAAe,UAAU,UAAY,SAAU,GAC3C,IAAI,EAAO,KACP,EAAY,EAAE,QAAQ,GAAU,EAAS,CAAE,GAE/C,EAAE,KAAK,GAAW,SAAS,EAAG,GACrB,EAAO,eAAe,UAAa,EAAO,eAAe,QAG9D,EAAE,OAAO,EAAK,QAAQ,KAAK,EAAO,OAAQ,EAAO,IACrD,IAEA,KAAK,aACL,KAAK,iBACL,KAAK,WACL,KAAK,UAAS,EAClB,EAEA,EAAe,UAAU,eAAiB,WACtC,KAAK,WAAa,EACtB,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,KAAK,UAAU,GAAQ,EAC3B,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,KAAK,UAAU,GAAQ,EAC3B,EAEA,EAAe,UAAU,UAAY,SAAU,EAAQ,GACnD,IAAI,EAAK,EAEL,EAAO,eAAe,SACtB,EAAM,KAAK,UAAU,EAAO,OACrB,EAAO,eAAe,cAC7B,EAAM,KAAK,iBAAiB,EAAO,WAGlC,IAIL,EAAQ,EAAE,QAAQ,EAAK,KAAK,YAEvB,IAAsB,IAAX,EAEL,GAAW,GAAS,GAC3B,KAAK,WAAW,OAAO,EAAO,GAF9B,KAAK,WAAW,KAAK,GAIzB,KAAK,UAAS,GAClB,EAEA,EAAe,UAAU,cAAgB,SAAU,GAC/C,IAAI,EAAO,KACP,EAAO,KAAK,UACZ,EAAO,GAQX,OANA,EAAE,KAAK,GAAM,SAAU,EAAG,GAClB,EAAE,QAAQ,EAAK,EAAK,aAAe,GACnC,EAAK,KAAK,EAElB,IACA,KAAK,WAAa,EACX,CACX,EAEA,EAAe,UAAU,WAAa,SAAU,GAC5C,IAII,EAAG,EAEH,EANA,EAAM,EAAQ,MACd,EAAM,EAAE,QAAQ,EAAQ,MAAO,KAAK,oBACpC,EAAU,EAAQ,SAAW,EAC7B,EAAU,EAAQ,SAAW,EAE7B,EAAM,KAAK,MAAM,KAAK,OAS1B,GANI,KAAK,QAAQ,aAAe,KAAK,QAAQ,WACzC,GAAO,GAGX,EAAM,EAAI,GAAG,GAAK,KAAK,OAAO,GAAG,KAE7B,EAAM,GAAK,EAAM,GAAK,GAAO,KAAK,KAAK,QAA3C,CAIA,IAAK,EAAI,EAAK,EAAI,EAAM,EAAS,IAC7B,IAAK,EAAI,EAAK,EAAI,EAAM,EAAS,IAC7B,EAAI,GAAG,GAAG,KAAK,OAAO,GAAG,GAAG,OAIpC,EAAI,KAAK,UAAW,GAAS,KAAK,UAAW,GAAS,MARtD,CASJ,EAEA,EAAe,UAAU,WAAa,SAAU,GACvC,EAAO,eAAe,UACtB,EAAO,eAAe,UACtB,EAAO,eAAe,WAG3B,KAAK,KAAK,EAAO,OAAO,EAAO,OAAS,EAAO,OAEzB,IAAlB,EAAO,SAGX,KAAK,WACL,KAAK,UAAS,IAClB,EAEA,EAAe,UAAU,WAAa,WAClC,OAAO,KAAK,OAChB,EAEA,EAAe,UAAU,cAAgB,WACrC,IAAI,EAAO,KAEX,OAAO,EAAE,KAAK,KAAK,QAAQ,MAAM,SAAU,GAEvC,OAAuC,IAAhC,EAAI,EAAK,OAAO,WAC3B,GACJ,EAEA,EAAe,UAAU,iBAAmB,WACxC,IAAI,EAAO,KAEX,OAAO,EAAE,KAAK,KAAK,QAAQ,MAAM,SAAU,GACvC,OAAO,EAAI,EAAK,OAAO,WAC3B,GACJ,EAEA,EAAe,UAAU,YAAc,WACnC,IAAI,EAAO,KACP,EAAO,EAAK,YAAY,OAAO,YAC/B,EAAU,EAAK,OAAO,YAC1B,EAAK,MAAK,WACN,EAAE,MAAM,KAAK,WAAY,EAAE,MAAM,KAAK,WAC1C,IACA,EAAK,aACL,EAAK,iBACL,EAAK,QAAQ,eAAgB,GAC7B,EAAU,EAAK,gBACf,EAAK,QAAQ,aAAc,EAC/B,EAEA,EAAe,UAAU,SAAW,SAAU,GAC7C,KAAK,WAAU,EAChB,EAEA,EAAe,UAAU,WAAa,WAClC,KAAK,WAAU,EACnB,EAEA,EAAe,UAAU,UAAY,SAAU,GAC3C,IAAI,EACC,IACD,EAAO,KAAK,iBAEhB,KAAK,WAAW,IAAI,KAAK,aAAa,KAAK,UAAW,GACtD,KAAK,YAAY,OAAO,YAAY,KAAK,UAAW,GACpD,KAAK,aACD,IACA,EAAO,KAAK,iBAEhB,KAAK,QAAQ,EAAU,YAAc,cAAe,EACxD,EAEA,EAAe,UAAU,MAAQ,SAAU,GACvC,KAAK,QAAO,EAAM,EACtB,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,KAAK,QAAO,EAAO,EACvB,EAEA,EAAe,UAAU,OAAS,SAAU,EAAS,GACjD,IAAI,EAAM,KAAK,YAAY,OAAO,EAAQ,kBAAmB,IAAQ,KAAK,UAAW,GACrF,KAAK,KAAK,GAAO,KAAK,OAAO,YAAc,EAC3C,KAAK,iBACL,KAAK,QAAQ,EAAU,QAAU,UAAW,KAAK,KAAK,GAAQ,EAClE,EAEA,EAAe,UAAU,QAAU,SAAU,GACzC,KAAK,UAAS,EAAM,EACxB,EAEA,EAAe,UAAU,UAAY,SAAU,GAC3C,KAAK,UAAS,EAAO,EACzB,EAEA,EAAe,UAAU,SAAW,SAAU,EAAS,GACnD,GAAK,EAAI,eAAe,UAAa,EAAI,eAAe,UAAxD,CAIA,IAAI,EAAO,KACP,EAAO,GACX,EAAE,KAAK,KAAK,QAAQ,MAAM,SAAU,EAAO,GACvC,IAAK,EAAI,eAAe,EAAI,OACxB,OAAO,EAEX,IAA+C,IAA3C,EAAE,QAAQ,EAAI,EAAI,OAAQ,EAAI,QAAgB,CAC9C,IAAI,EAAM,EAAK,YAAY,OAAO,YAC7B,OAAO,EAAQ,kBAAmB,IAAQ,KAAK,UAAW,GAC/D,EAAI,EAAK,OAAO,YAAc,EAC9B,EAAK,KAAK,GACV,EAAK,QAAQ,EAAU,QAAU,UAAW,EAAK,EACrD,CACJ,IACA,KAAK,iBACL,KAAK,QAAQ,EAAU,aAAe,eAAgB,EAjBtD,CAkBJ,EAEA,EAAe,UAAU,QAAU,WAC/B,KAAK,IAAI,aAAa,KAAK,YAC3B,EAAE,KAAK,QAAQ,SAAS,aAAa,KAAK,KAC1C,KAAK,WAAW,OAAO,SACvB,KAAK,WAAW,SAChB,KAAK,IAAI,KAAK,KAAK,KAAK,QACnB,IAAI,aAAc,KAClB,KAAK,QAAS,KAAK,KAAK,KAAK,UAAY,GAClD,EAEA,EAAe,UAAU,YAAc,WACnC,KAAK,cAAc,MACvB,EAEA,EAAe,UAAU,YAAc,WACnC,KAAK,cAAc,MACvB,EAEA,EAAe,UAAU,iBAAmB,WACxC,KAAK,QAAQ,YAAc,KAAK,QAAQ,WACxC,IAAI,EAAS,KAAK,SAAS,KAAK,mCAC5B,KAAK,QAAQ,WACb,EAAO,KAAK,QAAS,KAAK,QAAQ,YAAc,IAAM,KAAK,QAAQ,MAAM,sBAEzE,EAAO,KAAK,QAAS,KAAK,QAAQ,YAAc,IAAM,KAAK,QAAQ,MAAM,oBAE7E,KAAK,kBACT,EAEA,EAAe,UAAU,QAAU,SAAU,GACrC,GAAU,EAAO,MACjB,KAAK,QAAQ,WAAa,GAE9B,KAAK,MAAM,GAAU,EAAO,OACxB,GAAU,EAAO,MAAO,GAAU,EAAO,KAC7C,KAAK,QAAQ,UAAW,EAC5B,EAEA,EAAe,UAAU,WAAa,WAC9B,KAAK,QAAQ,YAAc,KAAK,QAAQ,QACxC,KAAK,YAEL,KAAK,QAAQ,YACb,KAAK,WAEb,EAEA,EAAe,UAAU,WAAa,SAAU,GAC5C,KAAK,aAAa,EAAc,KAAK,QAAS,IAAQ,GAAM,EAChE,EAEA,EAAe,UAAU,WAAa,SAAU,GAC5C,KAAK,aAAa,EAAc,KAAK,QAAS,IAAQ,GAAO,EACjE,EAEA,EAAe,UAAU,iBAAmB,WACxC,OAAO,EAAE,KAAK,KAAK,SAAS,SAAU,GAClC,OAAQ,EAAO,OACnB,GACJ,EAEA,EAAe,UAAU,kBAAoB,WACzC,OAAO,EAAE,KAAK,KAAK,SAAS,SAAU,GAClC,OAAO,EAAO,OAClB,GACJ,EAEA,EAAe,UAAU,iBAAmB,SAAU,GASlD,GARA,EAAE,KAAK,KAAK,SAAS,SAAU,EAAG,GAC9B,KAAK,QAAQ,GAAG,QAAU,CAC9B,IAEA,KAAK,aACL,KAAK,aACL,KAAK,iBACL,KAAK,WACD,KAAK,QAAQ,YAAa,CAC1B,IAAI,EAAS,KAAK,SAAS,KAAK,oBAAoB,KAAK,YAAY,GAEjE,EAAO,OAAO,YAAY,QAAU,KAAK,QAAQ,qBACjD,EAAO,OAAO,YAAY,KAAK,YAAY,EAEnD,CACJ,EAEA,EAAe,UAAU,eAAiB,WACtC,KAAK,kBAAiB,EAC1B,EAEA,EAAe,UAAU,eAAiB,WACtC,KAAK,kBAAiB,EAC1B,EAEA,EAAe,UAAU,SAAW,SAAU,GAC1C,KAAK,cAAgB,EAAE,cAAc,GAAW,CAAC,EAAI,EACrD,KAAK,QAAQ,WAAa,EAC1B,KAAK,aACL,KAAK,kBACT,EAEA,EAAe,UAAU,SAAW,SAAU,GAO1C,GANqB,iBAAV,IACP,EAAkB,WAAV,EAAqB,KAAK,WAAW,GAAG,aAAe,GAE9C,iBAAV,GACP,KAAK,WAAW,UAAU,QAET,IAAV,EACP,OAAO,KAAK,WAAW,WAE/B,EAEA,EAAe,UAAU,kBAAoB,WACzC,OAAO,KAAK,UAChB,EAEA,EAAe,UAAU,WAAa,SAAU,GACxC,EAAO,GAAK,GAAQ,KAAK,QAAQ,aACjC,KAAK,QAAQ,WAAa,EAC1B,KAAK,mBAEb,EAEA,EAAe,UAAU,SAAW,WAC5B,KAAK,QAAQ,WAAa,IAC1B,KAAK,QAAQ,aACb,KAAK,mBAEb,EAEA,EAAe,UAAU,SAAW,WAC5B,KAAK,QAAQ,WAAa,KAAK,QAAQ,aACvC,KAAK,QAAQ,aACb,KAAK,mBAEb,EAEA,EAAe,UAAU,WAAa,WAClC,KAAK,QAAQ,UAAY,KAAK,QAAQ,SACtC,KAAK,aAGL,KAAK,WACL,KAAK,QAAQ,SAAU,KAAK,QAAQ,SACxC,EAEA,EAAe,UAAU,eAAiB,SAAU,GAE5C,EAAe,KAAK,QAAS,GAAS,KAG1C,KAAK,QAAU,EAAE,OAAO,KAAK,QAAS,GACtC,KAAK,QAAQ,kBAAmB,KAAK,SACrC,KAAK,UACL,KAAK,OACT,EAEA,EAAe,UAAU,YAAc,SAAU,GAC7C,IAAI,EAAU,KAAK,SAAS,KAAK,iBACjC,EAAQ,IAAI,GAAQ,IACpB,KAAK,SAAS,CAAC,cAAe,GAClC,EAEA,EAAe,UAAU,WAAa,SAAU,EAAQ,GACpD,IAAI,EAAM,KAAK,MAAM,KAAK,EAAQ,sBAAuB,IACrD,EAAI,OAAO,GAAG,qBAAuB,GACrC,EAAI,KAAK,uBAAuB,OAExC,EAEA,EAAe,UAAU,UAAY,SAAU,GAC3C,KAAK,YAAW,EAAM,EAC1B,EAEA,EAAe,UAAU,YAAc,SAAU,GAC7C,KAAK,YAAW,EAAO,EAC3B,EAEA,EAAe,UAAU,cAAgB,SAAU,GAC/C,GAAI,EAAY,CACZ,IAAI,EAAM,KAAK,MAAM,KAAK,EAAQ,sBAAuB,IACrD,EAAO,KACP,EAAa,KACb,GAAkB,EAClB,GAAc,EAUlB,GARK,EAAI,OAAO,GAAG,kBAGP,EAAI,OAAO,OAAO,GAAG,oBAC7B,EAAI,OAAO,KAAK,gBAAgB,QAAQ,SACxC,GAAkB,IAJlB,EAAI,KAAK,uBAAuB,QAAQ,SACxC,GAAkB,GAMlB,EACA,IACI,EAAa,aAAY,YACrB,EAAa,EAAK,MAAM,KAAK,kBAAkB,OAAO,KAAK,iBAC5C,OAAS,EACpB,EAAW,QAEX,cAAc,EAEtB,GAAG,EACP,CAAE,MAAO,GACL,cAAc,EAClB,CAER,MAEI,IADA,IAAI,EAAM,KAAK,MAAM,WACZ,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC5B,KAAK,YAAW,EAAM,EAAE,EAAI,IAAI,KAAK,SAGjD,EAEA,EAAe,UAAU,gBAAkB,SAAU,GACjD,GAAI,EACA,KAAK,YAAW,EAAO,QAGvB,IADA,IAAI,EAAM,KAAK,MAAM,WACZ,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC5B,KAAK,YAAW,EAAO,EAAE,EAAI,IAAI,KAAK,SAGlD,EAEA,EAAe,UAAU,iBAAmB,SAAU,EAAM,GACpD,KAAK,QAAQ,EAAQ,WAAY,MACb,iBAAT,EACP,KAAK,QAAQ,EAAQ,WAAY,IAAS,WACtC,OAAO,CACX,EACuB,mBAAT,IACd,KAAK,QAAQ,EAAQ,WAAY,IAAS,IAGlD,KAAK,cACL,KAAK,iBACL,KAAK,UACT,EAIA,IAAI,EAAiB,CACjB,aACA,gBAAiB,mBAAoB,UACrC,OAAQ,SAAU,UAAW,SAAU,YACvC,YAAa,YAAa,aAAc,mBAAoB,mBAC5D,mBAAoB,UAAW,UAAW,gBAC1C,aACA,cACA,QACA,WAAY,aACZ,QAAS,UACT,UAAW,YACX,UACA,YACA,aACA,UACA,cAAe,cACf,aAAc,aAAc,mBAAoB,oBAChD,iBAAkB,iBAClB,WACA,WACA,oBACA,aAAc,WAAY,WAC1B,mBACA,aACA,iBACA,cACA,YAAa,cAAe,gBAAiB,kBAC7C,oBAGJ,EAAE,GAAG,eAAiB,SAAU,GAC5B,IAAI,EACA,EAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GA6BjD,OA3BA,KAAK,MAAK,WACN,IAAI,EAAQ,EAAE,MACV,EAAO,EAAM,KAAK,mBAClB,EAAU,EAAE,OAAO,CAAC,EAAG,EAAe,SAAU,EAAM,OAChC,iBAAX,GAAuB,GAEtC,GAAsB,iBAAX,EAAqB,CAC5B,GAAI,EAAE,QAAQ,EAAQ,GAAkB,EACpC,MAAM,IAAI,MAAM,mBAAqB,GAGzC,IAAK,EACD,OAGJ,EAAQ,EAAK,GAAQ,MAAM,EAAM,GAElB,YAAX,GACA,EAAM,WAAW,kBAEzB,CAEK,GACD,EAAM,KAAK,kBAAoB,EAAO,IAAI,EAAe,KAAM,GAEvE,SAEwB,IAAV,EAAwB,KAAO,CACjD,EAEA,EAAE,GAAG,eAAe,YAAc,EAClC,EAAE,GAAG,eAAe,SAAW,EAAe,SAC9C,EAAE,GAAG,eAAe,eAAiB,EAAe,gBACpD,EAAE,GAAG,eAAe,QAAU,EAAe,QAC7C,EAAE,GAAG,eAAe,QAAU,EAC9B,EAAE,GAAG,eAAe,MAAQ,CACxB,QAAS,EACT,cAAe,EACf,eAAgB,EAChB,qBAAsB,EACtB,aAAc,EACd,WAvwFJ,WAGuB,IACP,EACA,EACA,EASA,EAbP,OAAO,OACR,OAAO,MACC,EAAiB,OAAO,UAAU,eAClC,GAAkB,CAAG,SAAU,MAAQ,qBAAqB,YAU5D,GATA,EAAY,CACR,WACA,iBACA,UACA,iBACA,gBACA,uBACA,gBAEwB,OAEzB,SAAS,GACZ,GAAmB,iBAAR,IAAoC,mBAAR,GAA8B,OAAR,GACzD,MAAM,IAAI,UAAU,oCAGxB,IAAiB,EAAM,EAAnB,EAAS,GAEb,IAAK,KAAQ,EACL,EAAe,KAAK,EAAK,IACzB,EAAO,KAAK,GAIpB,GAAI,EACA,IAAK,EAAI,EAAG,EAAI,EAAiB,IACzB,EAAe,KAAK,EAAK,EAAU,KACnC,EAAO,KAAK,EAAU,IAIlC,OAAO,CACX,GAGZ,EA+tFI,YAAa,GAKjB,GAAE,WACE,EAAE,uBAAuB,gBAC7B,GACJ","file":"/npm/jquery-bootstrap-table@0.1.5/src/bootstrap-table.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/jquery-bootstrap-table@0.1.5/src/bootstrap-table.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function(factory) {\r\n    if (typeof define === 'function' && define.amd) {\r\n        define(['jquery'], factory);\r\n    } else if (typeof module === 'object' && module.exports) {\r\n        module.exports = factory(require('jquery'));\r\n    } else {\r\n        factory(jQuery);\r\n    }\r\n}(function($, undefined) {\r\n    'use strict';\r\n\r\n    // TOOLS DEFINITION\r\n    // ======================\r\n    var cachedWidth = null;\r\n    var _xhr;\r\n\r\n    // it only does '%s', and return '' when arguments are undefined\r\n    function sprintf(str) {\r\n        var args = arguments,\r\n            flag = true,\r\n            i = 1;\r\n\r\n        str = str.replace(/%s/g, function () {\r\n            var arg = args[i++];\r\n\r\n            if (typeof arg === 'undefined') {\r\n                flag = false;\r\n                return '';\r\n            }\r\n            return arg;\r\n        });\r\n        return flag ? str : '';\r\n    }\r\n\r\n    function getPropertyFromOther(list, from, to, value) {\r\n        var result = '';\r\n        $.each(list, function (i, item) {\r\n            if (item[from] === value) {\r\n                result = item[to];\r\n                return false;\r\n            }\r\n            return true;\r\n        });\r\n        return result;\r\n    }\r\n\r\n    function getFieldIndex(columns, field) {\r\n        var index = -1;\r\n        $.each(columns, function (i, column) {\r\n            if (column.field === field) {\r\n                index = i;\r\n                return false;\r\n            }\r\n            return true;\r\n        });\r\n        return index;\r\n    }\r\n\r\n    // http://jsfiddle.net/wenyi/47nz7ez9/3/\r\n    function setFieldIndex(columns) {\r\n        var i, j, k,\r\n            totalCol = 0,\r\n            flag = [];\r\n\r\n        for (i = 0; i < columns[0].length; i++) {\r\n            totalCol += columns[0][i].colspan || 1;\r\n        }\r\n\r\n        for (i = 0; i < columns.length; i++) {\r\n            flag[i] = [];\r\n            for (j = 0; j < totalCol; j++) {\r\n                flag[i][j] = false;\r\n            }\r\n        }\r\n\r\n        for (i = 0; i < columns.length; i++) {\r\n            for (j = 0; j < columns[i].length; j++) {\r\n                var r = columns[i][j],\r\n                    rowspan = r.rowspan || 1,\r\n                    colspan = r.colspan || 1,\r\n                    index = $.inArray(false, flag[i]);\r\n\r\n                if (colspan === 1) {\r\n                    r.fieldIndex = index;\r\n                    // when field is undefined, use index instead\r\n                    if (typeof r.field === 'undefined') {\r\n                        r.field = index;\r\n                    }\r\n                }\r\n\r\n                for (k = 0; k < rowspan; k++) {\r\n                    flag[i + k][index] = true;\r\n                }\r\n                for (k = 0; k < colspan; k++) {\r\n                    flag[i][index + k] = true;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function getScrollBarWidth() {\r\n        if (cachedWidth === null) {\r\n            var inner = $('<p/>').addClass('fixed-table-scroll-inner'),\r\n                outer = $('<div/>').addClass('fixed-table-scroll-outer'),\r\n                w1, w2;\r\n\r\n            outer.append(inner);\r\n            $('body').append(outer);\r\n\r\n            w1 = inner[0].offsetWidth;\r\n            outer.css('overflow', 'scroll');\r\n            w2 = inner[0].offsetWidth;\r\n\r\n            if (w1 === w2) {\r\n                w2 = outer[0].clientWidth;\r\n            }\r\n\r\n            outer.remove();\r\n            cachedWidth = w1 - w2;\r\n        }\r\n        return cachedWidth;\r\n    };\r\n\r\n    function calculateObjectValue(self, name, args, defaultValue) {\r\n        var func = name;\r\n\r\n        if (typeof name === 'string') {\r\n            // support obj.func1.func2\r\n            var names = name.split('.');\r\n\r\n            if (names.length > 1) {\r\n                func = window;\r\n                $.each(names, function (i, f) {\r\n                    func = func[f];\r\n                });\r\n            } else {\r\n                func = window[name];\r\n            }\r\n        }\r\n        if (typeof func === 'object') {\r\n            return func;\r\n        }\r\n        if (typeof func === 'function') {\r\n            return func.apply(self, args);\r\n        }\r\n        if (!func && typeof name === 'string' && sprintf.apply(this, [name].concat(args))) {\r\n            return sprintf.apply(this, [name].concat(args));\r\n        }\r\n        return defaultValue;\r\n    }\r\n\r\n    function compareObjects(objectA, objectB, compareLength) {\r\n        // Create arrays of property names\r\n        var objectAProperties = Object.getOwnPropertyNames(objectA),\r\n            objectBProperties = Object.getOwnPropertyNames(objectB),\r\n            propName = '';\r\n\r\n        if (compareLength) {\r\n            // If number of properties is different, objects are not equivalent\r\n            if (objectAProperties.length !== objectBProperties.length) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        for (var i = 0; i < objectAProperties.length; i++) {\r\n            propName = objectAProperties[i];\r\n\r\n            // If the property is not in the object B properties, continue with the next property\r\n            if ($.inArray(propName, objectBProperties) > -1) {\r\n                // If values of same property are not equal, objects are not equivalent\r\n                if (objectA[propName] !== objectB[propName]) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n\r\n        // If we made it this far, objects are considered equivalent\r\n        return true;\r\n    }\r\n\r\n    function escapeHTML(text) {\r\n        if (typeof text === 'string') {\r\n            return text\r\n                .replace(/&/g, '&amp;')\r\n                .replace(/</g, '&lt;')\r\n                .replace(/>/g, '&gt;')\r\n                .replace(/\"/g, '&quot;')\r\n                .replace(/'/g, '&#039;')\r\n                .replace(/`/g, '&#x60;');\r\n        }\r\n        return text;\r\n    }\r\n\r\n    function getRealDataAttr(dataAttr) {\r\n        for (var attr in dataAttr) {\r\n            var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase();\r\n            if (auxAttr !== attr) {\r\n                dataAttr[auxAttr] = dataAttr[attr];\r\n                delete dataAttr[attr];\r\n            }\r\n        }\r\n\r\n        return dataAttr;\r\n    }\r\n\r\n    function getItemField(item, field, escape) {\r\n        var value = item;\r\n\r\n        if (typeof field !== 'string' || item.hasOwnProperty(field)) {\r\n            return escape ? escapeHTML(item[field]) : item[field];\r\n        }\r\n        var props = field.split('.');\r\n        for (var p in props) {\r\n            if (props.hasOwnProperty(p)) {\r\n                value = value && value[props[p]];\r\n            }\r\n        }\r\n        return escape ? escapeHTML(value) : value;\r\n    }\r\n\r\n    function isIEBrowser() {\r\n        return !!(navigator.userAgent.indexOf('MSIE ') > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./));\r\n    }\r\n\r\n    function objectKeys() {\r\n        // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\r\n        if (!Object.keys) {\r\n            Object.keys = (function() {\r\n                var hasOwnProperty = Object.prototype.hasOwnProperty,\r\n                    hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),\r\n                    dontEnums = [\r\n                        'toString',\r\n                        'toLocaleString',\r\n                        'valueOf',\r\n                        'hasOwnProperty',\r\n                        'isPrototypeOf',\r\n                        'propertyIsEnumerable',\r\n                        'constructor'\r\n                    ],\r\n                    dontEnumsLength = dontEnums.length;\r\n\r\n                return function(obj) {\r\n                    if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\r\n                        throw new TypeError('Object.keys called on non-object');\r\n                    }\r\n\r\n                    var result = [], prop, i;\r\n\r\n                    for (prop in obj) {\r\n                        if (hasOwnProperty.call(obj, prop)) {\r\n                            result.push(prop);\r\n                        }\r\n                    }\r\n\r\n                    if (hasDontEnumBug) {\r\n                        for (i = 0; i < dontEnumsLength; i++) {\r\n                            if (hasOwnProperty.call(obj, dontEnums[i])) {\r\n                                result.push(dontEnums[i]);\r\n                            }\r\n                        }\r\n                    }\r\n                    return result;\r\n                };\r\n            }());\r\n        }\r\n    }\r\n\r\n    // BOOTSTRAP TABLE CLASS DEFINITION\r\n    // ======================\r\n    function BootstrapTable(el, options) {\r\n        this.options = options;\r\n        this.$el = $(el);\r\n        this.$el_ = this.$el.clone();\r\n        this.timeoutId_ = 0;\r\n        this.timeoutFooter_ = 0;\r\n        this.init();\r\n    }\r\n\r\n    BootstrapTable.DEFAULTS = {\r\n        classes: 'table table-hover',\r\n        sortClass: undefined,\r\n        locale: undefined,\r\n        height: undefined,\r\n        undefinedText: '-',\r\n        sortName: undefined,\r\n        sortOrder: 'asc',\r\n        sortStable: false,\r\n        striped: false,\r\n        columns: [[]],\r\n        data: [],\r\n        totalField: 'total',\r\n        dataField: 'rows',\r\n        method: 'get',\r\n        url: undefined,\r\n        ajax: undefined,\r\n        cache: true,\r\n        contentType: 'application/json',\r\n        dataType: 'json',\r\n        ajaxOptions: {},\r\n        queryParams: function (params) {\r\n            return params;\r\n        },\r\n        queryParamsType: 'limit', // undefined\r\n        responseHandler: function (res) {\r\n            return res;\r\n        },\r\n        pagination: false,\r\n        onlyInfoPagination: false,\r\n        paginationLoop: true,\r\n        sidePagination: 'client', // client or server\r\n        totalRows: 0, // server side need to set\r\n        pageNumber: 1,\r\n        pageSize: 10,\r\n        pageList: [10, 25, 50, 100],\r\n        paginationHAlign: 'right', //right, left\r\n        paginationVAlign: 'bottom', //bottom, top, both\r\n        paginationDetailHAlign: 'left', //right, left\r\n        paginationPreText: '&lsaquo;',\r\n        paginationNextText: '&rsaquo;',\r\n        search: false,\r\n        searchOnEnterKey: false,\r\n        strictSearch: false,\r\n        searchAlign: 'right',\r\n        selectItemName: 'btSelectItem',\r\n        showHeader: true,\r\n        showFooter: false,\r\n        showColumns: false,\r\n        showPaginationSwitch: false,\r\n        showRefresh: false,\r\n        showToggle: false,\r\n        buttonsAlign: 'right',\r\n        smartDisplay: true,\r\n        escape: false,\r\n        minimumCountColumns: 1,\r\n        idField: undefined,\r\n        uniqueId: undefined,\r\n        cardView: false,\r\n        detailView: false,\r\n        detailFormatter: function (index, row) {\r\n            return '';\r\n        },\r\n        trimOnSearch: true,\r\n        clickToSelect: false,\r\n        singleSelect: false,\r\n        toolbar: undefined,\r\n        toolbarAlign: 'left',\r\n        checkboxHeader: true,\r\n        sortable: true,\r\n        silentSort: true,\r\n        maintainSelected: false,\r\n        searchTimeOut: 500,\r\n        searchText: '',\r\n        iconSize: undefined,\r\n        buttonsClass: 'default',\r\n        iconsPrefix: 'glyphicon', // glyphicon of fa (font awesome)\r\n        icons: {\r\n            paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',\r\n            paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',\r\n            refresh: 'glyphicon-refresh icon-refresh',\r\n            toggle: 'glyphicon-list-alt icon-list-alt',\r\n            columns: 'glyphicon-th icon-th',\r\n            detailOpen: 'glyphicon-plus icon-plus',\r\n            detailClose: 'glyphicon-minus icon-minus'\r\n        },\r\n\r\n        customSearch: $.noop,\r\n\r\n        customSort: $.noop,\r\n\r\n        rowStyle: function (row, index) {\r\n            return {};\r\n        },\r\n\r\n        rowAttributes: function (row, index) {\r\n            return {};\r\n        },\r\n\r\n        footerStyle: function (row, index) {\r\n            return {};\r\n        },\r\n\r\n        onAll: function (name, args) {\r\n            return false;\r\n        },\r\n        onClickCell: function (field, value, row, $element) {\r\n            return false;\r\n        },\r\n        onDblClickCell: function (field, value, row, $element) {\r\n            return false;\r\n        },\r\n        onClickRow: function (item, $element) {\r\n            return false;\r\n        },\r\n        onDblClickRow: function (item, $element) {\r\n            return false;\r\n        },\r\n        onSort: function (name, order) {\r\n            return false;\r\n        },\r\n        onCheck: function (row) {\r\n            return false;\r\n        },\r\n        onUncheck: function (row) {\r\n            return false;\r\n        },\r\n        onCheckAll: function (rows) {\r\n            return false;\r\n        },\r\n        onUncheckAll: function (rows) {\r\n            return false;\r\n        },\r\n        onCheckSome: function (rows) {\r\n            return false;\r\n        },\r\n        onUncheckSome: function (rows) {\r\n            return false;\r\n        },\r\n        onLoadSuccess: function (data) {\r\n            return false;\r\n        },\r\n        onLoadError: function (status) {\r\n            return false;\r\n        },\r\n        onColumnSwitch: function (field, checked) {\r\n            return false;\r\n        },\r\n        onPageChange: function (number, size) {\r\n            return false;\r\n        },\r\n        onSearch: function (text) {\r\n            return false;\r\n        },\r\n        onToggle: function (cardView) {\r\n            return false;\r\n        },\r\n        onPreBody: function (data) {\r\n            return false;\r\n        },\r\n        onPostBody: function () {\r\n            return false;\r\n        },\r\n        onPostHeader: function () {\r\n            return false;\r\n        },\r\n        onExpandRow: function (index, row, $detail) {\r\n            return false;\r\n        },\r\n        onCollapseRow: function (index, row) {\r\n            return false;\r\n        },\r\n        onRefreshOptions: function (options) {\r\n            return false;\r\n        },\r\n        onRefresh: function (params) {\r\n          return false;\r\n        },\r\n        onResetView: function () {\r\n            return false;\r\n        }\r\n    };\r\n\r\n    BootstrapTable.LOCALES = {};\r\n\r\n    BootstrapTable.LOCALES['en-US'] = BootstrapTable.LOCALES.en = {\r\n        formatLoadingMessage: function () {\r\n            return 'Loading, please wait...';\r\n        },\r\n        formatRecordsPerPage: function (pageNumber) {\r\n            return sprintf('%s rows per page', pageNumber);\r\n        },\r\n        formatShowingRows: function (pageFrom, pageTo, totalRows) {\r\n            return sprintf('Showing %s to %s of %s rows', pageFrom, pageTo, totalRows);\r\n        },\r\n        formatDetailPagination: function (totalRows) {\r\n            return sprintf('Showing %s rows', totalRows);\r\n        },\r\n        formatSearch: function () {\r\n            return 'Search';\r\n        },\r\n        formatNoMatches: function () {\r\n            return 'No matching records found';\r\n        },\r\n        formatPaginationSwitch: function () {\r\n            return 'Hide/Show pagination';\r\n        },\r\n        formatRefresh: function () {\r\n            return 'Refresh';\r\n        },\r\n        formatToggle: function () {\r\n            return 'Toggle';\r\n        },\r\n        formatColumns: function () {\r\n            return 'Columns';\r\n        },\r\n        formatAllRows: function () {\r\n            return 'All';\r\n        }\r\n    };\r\n\r\n    $.extend(BootstrapTable.DEFAULTS, BootstrapTable.LOCALES['en-US']);\r\n\r\n    BootstrapTable.COLUMN_DEFAULTS = {\r\n        radio: false,\r\n        checkbox: false,\r\n        checkboxEnabled: true,\r\n        field: undefined,\r\n        title: undefined,\r\n        titleTooltip: undefined,\r\n        'class': undefined,\r\n        align: undefined, // left, right, center\r\n        halign: undefined, // left, right, center\r\n        falign: undefined, // left, right, center\r\n        valign: undefined, // top, middle, bottom\r\n        width: undefined,\r\n        sortable: false,\r\n        order: 'asc', // asc, desc\r\n        visible: true,\r\n        switchable: true,\r\n        clickToSelect: true,\r\n        formatter: undefined,\r\n        footerFormatter: undefined,\r\n        events: undefined,\r\n        sorter: undefined,\r\n        sortName: undefined,\r\n        cellStyle: undefined,\r\n        searchable: true,\r\n        searchFormatter: true,\r\n        cardVisible: true\r\n    };\r\n\r\n    BootstrapTable.EVENTS = {\r\n        'all.bs.table': 'onAll',\r\n        'click-cell.bs.table': 'onClickCell',\r\n        'dbl-click-cell.bs.table': 'onDblClickCell',\r\n        'click-row.bs.table': 'onClickRow',\r\n        'dbl-click-row.bs.table': 'onDblClickRow',\r\n        'sort.bs.table': 'onSort',\r\n        'check.bs.table': 'onCheck',\r\n        'uncheck.bs.table': 'onUncheck',\r\n        'check-all.bs.table': 'onCheckAll',\r\n        'uncheck-all.bs.table': 'onUncheckAll',\r\n        'check-some.bs.table': 'onCheckSome',\r\n        'uncheck-some.bs.table': 'onUncheckSome',\r\n        'load-success.bs.table': 'onLoadSuccess',\r\n        'load-error.bs.table': 'onLoadError',\r\n        'column-switch.bs.table': 'onColumnSwitch',\r\n        'page-change.bs.table': 'onPageChange',\r\n        'search.bs.table': 'onSearch',\r\n        'toggle.bs.table': 'onToggle',\r\n        'pre-body.bs.table': 'onPreBody',\r\n        'post-body.bs.table': 'onPostBody',\r\n        'post-header.bs.table': 'onPostHeader',\r\n        'expand-row.bs.table': 'onExpandRow',\r\n        'collapse-row.bs.table': 'onCollapseRow',\r\n        'refresh-options.bs.table': 'onRefreshOptions',\r\n        'reset-view.bs.table': 'onResetView',\r\n        'refresh.bs.table': 'onRefresh'\r\n    };\r\n\r\n    BootstrapTable.prototype.init = function () {\r\n        this.initLocale();\r\n        this.initContainer();\r\n        this.initTable();\r\n        this.initHeader();\r\n        this.initData();\r\n        this.initHiddenRows();\r\n        this.initFooter();\r\n        this.initToolbar();\r\n        this.initPagination();\r\n        this.initBody();\r\n        this.initSearchText();\r\n        this.async();\r\n    };\r\n\r\n    BootstrapTable.prototype.initLocale = function () {\r\n        if (this.options.locale) {\r\n            var parts = this.options.locale.split(/-|_/);\r\n            parts[0].toLowerCase();\r\n            if (parts[1]) parts[1].toUpperCase();\r\n            if ($.fn.bootstrapTable.locales[this.options.locale]) {\r\n                // locale as requested\r\n                $.extend(this.options, $.fn.bootstrapTable.locales[this.options.locale]);\r\n            } else if ($.fn.bootstrapTable.locales[parts.join('-')]) {\r\n                // locale with sep set to - (in case original was specified with _)\r\n                $.extend(this.options, $.fn.bootstrapTable.locales[parts.join('-')]);\r\n            } else if ($.fn.bootstrapTable.locales[parts[0]]) {\r\n                // short locale language code (i.e. 'en')\r\n                $.extend(this.options, $.fn.bootstrapTable.locales[parts[0]]);\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.initContainer = function () {\r\n        this.$container = $([\r\n            '<div class=\"bootstrap-table\">',\r\n            '<div class=\"fixed-table-toolbar\"></div>',\r\n            this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?\r\n                '<div class=\"fixed-table-pagination\" style=\"clear: both;\"></div>' :\r\n                '',\r\n            '<div class=\"fixed-table-container\">',\r\n            '<div class=\"fixed-table-header\"><table></table></div>',\r\n            '<div class=\"fixed-table-body\">',\r\n            '<div class=\"fixed-table-loading\">',\r\n            this.options.formatLoadingMessage.call(this),\r\n            '</div>',\r\n            '</div>',\r\n            '<div class=\"fixed-table-footer\"><table><tr></tr></table></div>',\r\n            this.options.paginationVAlign === 'bottom' || this.options.paginationVAlign === 'both' ?\r\n                '<div class=\"fixed-table-pagination\"></div>' :\r\n                '',\r\n            '</div>',\r\n            '</div>'\r\n        ].join(''));\r\n\r\n        this.$container.insertAfter(this.$el);\r\n        this.$tableContainer = this.$container.find('.fixed-table-container');\r\n        this.$tableHeader = this.$container.find('.fixed-table-header');\r\n        this.$tableBody = this.$container.find('.fixed-table-body');\r\n        this.$tableLoading = this.$container.find('.fixed-table-loading');\r\n        this.$tableFooter = this.$container.find('.fixed-table-footer');\r\n        this.$toolbar = this.$container.find('.fixed-table-toolbar');\r\n        this.$pagination = this.$container.find('.fixed-table-pagination');\r\n\r\n        this.$tableBody.append(this.$el);\r\n        this.$container.after('<div class=\"clearfix\"></div>');\r\n\r\n        this.$el.addClass(this.options.classes);\r\n        if (this.options.striped) {\r\n            this.$el.addClass('table-striped');\r\n        }\r\n        if ($.inArray('table-no-bordered', this.options.classes.split(' ')) !== -1) {\r\n            this.$tableContainer.addClass('table-no-bordered');\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.initTable = function () {\r\n        var that = this,\r\n            columns = [],\r\n            data = [];\r\n\r\n        this.$header = this.$el.find('>thead');\r\n        if (!this.$header.length) {\r\n            this.$header = $('<thead></thead>').appendTo(this.$el);\r\n        }\r\n        this.$header.find('tr').each(function () {\r\n            var column = [];\r\n\r\n            $(this).find('th').each(function () {\r\n                // Fix #2014 - getFieldIndex and elsewhere assume this is string, causes issues if not\r\n                if (typeof $(this).data('field') !== 'undefined') {\r\n                    $(this).data('field', $(this).data('field') + '');\r\n                    $(this).addClass($(this).data('field'));\r\n                }\r\n                column.push($.extend({}, {\r\n                    title: $(this).html(),\r\n                    'class': $(this).attr('class'),\r\n                    titleTooltip: $(this).attr('title'),\r\n                    rowspan: $(this).attr('rowspan') ? +$(this).attr('rowspan') : undefined,\r\n                    colspan: $(this).attr('colspan') ? +$(this).attr('colspan') : undefined\r\n                }, $(this).data()));\r\n            });\r\n            columns.push(column);\r\n        });\r\n        if (!$.isArray(this.options.columns[0])) {\r\n            this.options.columns = [this.options.columns];\r\n        }\r\n        this.options.columns = $.extend(true, [], columns, this.options.columns);\r\n        this.columns = [];\r\n\r\n        setFieldIndex(this.options.columns);\r\n        $.each(this.options.columns, function (i, columns) {\r\n            $.each(columns, function (j, column) {\r\n                column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, column);\r\n\r\n                if (typeof column.fieldIndex !== 'undefined') {\r\n                    that.columns[column.fieldIndex] = column;\r\n                }\r\n\r\n                that.options.columns[i][j] = column;\r\n            });\r\n        });\r\n\r\n        // if options.data is setting, do not process tbody data\r\n        if (this.options.data.length) {\r\n            return;\r\n        }\r\n\r\n        var m = [];\r\n        this.$el.find('>tbody>tr').each(function (y) {\r\n            var row = {};\r\n\r\n            // save tr's id, class and data-* attributes\r\n            row._id = $(this).attr('id');\r\n            row._class = $(this).attr('class');\r\n            row._data = getRealDataAttr($(this).data());\r\n\r\n            $(this).find('>td').each(function (x) {\r\n                var $this = $(this),\r\n                    cspan = +$this.attr('colspan') || 1,\r\n                    rspan = +$this.attr('rowspan') || 1,\r\n                    tx, ty;\r\n\r\n                for (; m[y] && m[y][x]; x++); //skip already occupied cells in current row\r\n\r\n                for (tx = x; tx < x + cspan; tx++) { //mark matrix elements occupied by current cell with true\r\n                    for (ty = y; ty < y + rspan; ty++) {\r\n                        if (!m[ty]) { //fill missing rows\r\n                            m[ty] = [];\r\n                        }\r\n                        m[ty][tx] = true;\r\n                    }\r\n                }\r\n\r\n                var field = that.columns[x].field;\r\n\r\n                row[field] = $(this).html();\r\n                // save td's id, class and data-* attributes\r\n                row['_' + field + '_id'] = $(this).attr('id');\r\n                row['_' + field + '_class'] = $(this).attr('class');\r\n                row['_' + field + '_rowspan'] = $(this).attr('rowspan');\r\n                row['_' + field + '_colspan'] = $(this).attr('colspan');\r\n                row['_' + field + '_title'] = $(this).attr('title');\r\n                row['_' + field + '_data'] = getRealDataAttr($(this).data());\r\n            });\r\n            data.push(row);\r\n        });\r\n        this.options.data = data;\r\n        if (data.length) this.fromHtml = true;\r\n    };\r\n\r\n    BootstrapTable.prototype.initHeader = function () {\r\n        var that = this,\r\n            visibleColumns = {},\r\n            html = [];\r\n\r\n        this.header = {\r\n            fields: [],\r\n            styles: [],\r\n            classes: [],\r\n            formatters: [],\r\n            events: [],\r\n            sorters: [],\r\n            sortNames: [],\r\n            cellStyles: [],\r\n            searchables: []\r\n        };\r\n\r\n        $.each(this.options.columns, function (i, columns) {\r\n            html.push('<tr>');\r\n\r\n            if (i === 0 && !that.options.cardView && that.options.detailView) {\r\n                html.push(sprintf('<th class=\"detail\" rowspan=\"%s\"><div class=\"fht-cell\"></div></th>',\r\n                    that.options.columns.length));\r\n            }\r\n\r\n            $.each(columns, function (j, column) {\r\n                var halign = '', // header align style\r\n                    align = '', // body align style\r\n                    style = '',\r\n                    class_ = sprintf(' class=\"%s\"', column['class']),\r\n                    order = that.options.sortOrder || column.order,\r\n                    unitWidth = 'px',\r\n                    width = column.width;\r\n\r\n                if (column.width !== undefined && (!that.options.cardView)) {\r\n                    if (typeof column.width === 'string') {\r\n                        if (column.width.indexOf('%') !== -1) {\r\n                            unitWidth = '%';\r\n                        }\r\n                    }\r\n                }\r\n                if (column.width && typeof column.width === 'string') {\r\n                    width = column.width.replace('%', '').replace('px', '');\r\n                }\r\n\r\n                halign = sprintf('text-align: %s; ', column.halign ? column.halign : column.align);\r\n                align = sprintf('text-align: %s; ', column.align);\r\n                style = sprintf('vertical-align: %s; ', column.valign);\r\n                style += sprintf('width: %s; ', (column.checkbox || column.radio) && !width ?\r\n                    '36px' : (width ? width + unitWidth : undefined));\r\n\r\n                if (typeof column.fieldIndex !== 'undefined') {\r\n                    that.header.fields[column.fieldIndex] = column.field;\r\n                    that.header.styles[column.fieldIndex] = align + style;\r\n                    that.header.classes[column.fieldIndex] = class_;\r\n                    that.header.formatters[column.fieldIndex] = column.formatter;\r\n                    that.header.events[column.fieldIndex] = column.events;\r\n                    that.header.sorters[column.fieldIndex] = column.sorter;\r\n                    that.header.sortNames[column.fieldIndex] = column.sortName;\r\n                    that.header.cellStyles[column.fieldIndex] = column.cellStyle;\r\n                    that.header.searchables[column.fieldIndex] = column.searchable;\r\n\r\n                    if (!column.visible) {\r\n                        return;\r\n                    }\r\n\r\n                    if (that.options.cardView && (!column.cardVisible)) {\r\n                        return;\r\n                    }\r\n\r\n                    visibleColumns[column.field] = column;\r\n                }\r\n\r\n                html.push('<th' + sprintf(' title=\"%s\"', column.titleTooltip),\r\n                    column.checkbox || column.radio ?\r\n                        sprintf(' class=\"bs-checkbox %s\"', column['class'] || '') :\r\n                        class_,\r\n                    sprintf(' style=\"%s\"', halign + style),\r\n                    sprintf(' rowspan=\"%s\"', column.rowspan),\r\n                    sprintf(' colspan=\"%s\"', column.colspan),\r\n                    sprintf(' data-field=\"%s\"', column.field),\r\n                    'tabindex=\"0\"',\r\n                    '>');\r\n\r\n                html.push('<div class=\"th-inner\">');\r\n                if (column.checkbox) {\r\n                    if (!that.options.singleSelect && that.options.checkboxHeader) {\r\n                    \thtml.push('<input name=\"btn-select-all-items\" type=\"checkbox\" />');\r\n                    }\r\n                    that.header.stateField = column.field;\r\n                } else if (column.radio) {\r\n                    that.header.stateField = column.field;\r\n                    that.options.singleSelect = true;\r\n                } else {\r\n                \thtml.push(column.title);\r\n                \tif (that.options.sortable && column.sortable) {\r\n\t                \thtml.push('<span class=\"sortable both\"></span>');\r\n                \t}\r\n                }\r\n                html.push('</div>');\r\n                html.push('<div class=\"fht-cell\"></div>');\r\n                html.push('</div>');\r\n                html.push('</th>');\r\n            });\r\n            html.push('</tr>');\r\n        });\r\n\r\n        this.$header.html(html.join(''));\r\n        this.$header.find('th[data-field]').each(function (i) {\r\n            $(this).data(visibleColumns[$(this).data('field')]);\r\n        });\r\n        this.$container.off('click', '.sortable').on('click', '.sortable', function (event) {\r\n            var target = $(this);\r\n\r\n            if (that.options.detailView) {\r\n                if (target.closest('.bootstrap-table')[0] !== that.$container[0])\r\n                    return false;\r\n            }\r\n\r\n            if (that.options.sortable && target.closest('.th-inner').parent().data().sortable) {\r\n                that.onSort(event);\r\n            }\r\n        });\r\n\r\n        this.$header.children().children().off('keypress').on('keypress', function (event) {\r\n            if (that.options.sortable && $(this).data().sortable) {\r\n                var code = event.keyCode || event.which;\r\n                if (code == 13) { //Enter keycode\r\n                    that.onSort(event);\r\n                }\r\n            }\r\n        });\r\n\r\n        $(window).off('resize.bootstrap-table');\r\n        if (!this.options.showHeader || this.options.cardView) {\r\n            this.$header.hide();\r\n            this.$tableHeader.hide();\r\n            this.$tableLoading.css('top', 0);\r\n        } else {\r\n            this.$header.show();\r\n            this.$tableHeader.show();\r\n            this.$tableLoading.css('top', this.$header.outerHeight() + 1);\r\n            // Assign the correct sortable arrow\r\n            this.getCaret();\r\n            $(window).on('resize.bootstrap-table', $.proxy(this.resetWidth, this));\r\n        }\r\n\r\n        this.$selectAll = this.$header.find('[name=btn-select-all-items]');\r\n        this.$selectAll.off('click').on('click', function () {\r\n                that[$(this).prop('checked') ? 'checkAll' : 'uncheckAll']();\r\n                that.updateSelected();\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.initFooter = function () {\r\n        if (!this.options.showFooter || this.options.cardView) {\r\n            this.$tableFooter.hide();\r\n        } else {\r\n            this.$tableFooter.show();\r\n        }\r\n    };\r\n\r\n    /**\r\n     * @param data\r\n     * @param type: append / prepend\r\n     */\r\n    BootstrapTable.prototype.initData = function (data, type) {\r\n        if (type === 'append') {\r\n            this.data = this.data.concat(data);\r\n        } else if (type === 'prepend') {\r\n            this.data = [].concat(data).concat(this.data);\r\n        } else {\r\n            this.data = data || this.options.data;\r\n        }\r\n\r\n        // Fix #839 Records deleted when adding new row on filtered table\r\n        if (type === 'append') {\r\n            this.options.data = this.options.data.concat(data);\r\n        } else if (type === 'prepend') {\r\n            this.options.data = [].concat(data).concat(this.options.data);\r\n        } else {\r\n            this.options.data = this.data;\r\n        }\r\n\r\n        if (this.options.sidePagination === 'server') {\r\n            return;\r\n        }\r\n        \r\n        this.initSort();\r\n    };\r\n\r\n    BootstrapTable.prototype.initSort = function () {\r\n        var that = this,\r\n            name = this.options.sortName,\r\n            order = this.options.sortOrder === 'desc' ? -1 : 1,\r\n            index = $.inArray(this.options.sortName, this.header.fields),\r\n            timeoutId = 0;\r\n\r\n        if (this.options.customSort !== $.noop) {\r\n            this.options.customSort.apply(this, [this.options.sortName, this.options.sortOrder]);\r\n            return;\r\n        }\r\n\r\n        if (index !== -1) {\r\n            if (this.options.sortStable) {\r\n                $.each(this.data, function (i, row) {\r\n                    if (!row.hasOwnProperty('_position')) row._position = i;\r\n                });\r\n            }\r\n\r\n            this.data.sort(function (a, b) {\r\n                if (that.header.sortNames[index]) {\r\n                    name = that.header.sortNames[index];\r\n                }\r\n                var aa = getItemField(a, name, that.options.escape),\r\n                    bb = getItemField(b, name, that.options.escape),\r\n                    value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);\r\n\r\n                if (value !== undefined) {\r\n                    return order * value;\r\n                }\r\n\r\n                // Fix #161: undefined or null string sort bug.\r\n                if (aa === undefined || aa === null) {\r\n                    aa = '';\r\n                }\r\n                if (bb === undefined || bb === null) {\r\n                    bb = '';\r\n                }\r\n\r\n                if (that.options.sortStable && aa === bb) {\r\n                    aa = a._position;\r\n                    bb = b._position;\r\n                }\r\n\r\n                // IF both values are numeric, do a numeric comparison\r\n                if ($.isNumeric(aa) && $.isNumeric(bb)) {\r\n                    // Convert numerical values form string to float.\r\n                    aa = parseFloat(aa);\r\n                    bb = parseFloat(bb);\r\n                    if (aa < bb) {\r\n                        return order * -1;\r\n                    }\r\n                    return order;\r\n                }\r\n\r\n                if (aa === bb) {\r\n                    return 0;\r\n                }\r\n\r\n                // If value is not a string, convert to string\r\n                if (typeof aa !== 'string') {\r\n                    aa = aa.toString();\r\n                }\r\n\r\n                if (aa.localeCompare(bb) === -1) {\r\n                    return order * -1;\r\n                }\r\n\r\n                return order;\r\n            });\r\n\r\n            if (this.options.sortClass !== undefined) {\r\n                clearTimeout(timeoutId);\r\n                timeoutId = setTimeout(function () {\r\n                    that.$el.removeClass(that.options.sortClass);\r\n                    var index = that.$header.find(sprintf('[data-field=\"%s\"]',\r\n                        that.options.sortName).index() + 1);\r\n                    that.$el.find(sprintf('tr td:nth-child(%s)', index))\r\n                        .addClass(that.options.sortClass);\r\n                }, 250);\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.onSort = function (event) {\r\n        var $this = event.type === 'keypress' ? $(event.currentTarget).closest('.th-inner') : $(event.currentTarget).closest('.th-inner').parent(),\r\n            $this_ = this.$header.find('th').eq($this.index());\r\n\r\n        this.$header.add(this.$header_).find('span.order').remove();\r\n\r\n        if (this.options.sortName === $this.data('field')) {\r\n            this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';\r\n        } else {\r\n            this.options.sortName = $this.data('field');\r\n            this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';\r\n        }\r\n        this.trigger('sort', this.options.sortName, this.options.sortOrder);\r\n\r\n        $this.add($this_).data('order', this.options.sortOrder);\r\n\r\n        // Assign the correct sortable arrow\r\n        this.getCaret();\r\n\r\n        if ($this.data('sortable') === 'server') {\r\n            this.async(this.options.silentSort);\r\n            return;\r\n        }\r\n\r\n        this.initSort();\r\n        this.initBody();\r\n    };\r\n\r\n    BootstrapTable.prototype.initToolbar = function () {\r\n        var that = this,\r\n            html = [],\r\n            timeoutId = 0,\r\n            $keepOpen,\r\n            $search,\r\n            switchableCount = 0;\r\n\r\n        if (this.$toolbar.find('.bs-bars').children().length) {\r\n            $('body').append($(this.options.toolbar));\r\n        }\r\n        this.$toolbar.html('');\r\n\r\n        if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {\r\n            $(sprintf('<div class=\"bs-bars pull-%s\"></div>', this.options.toolbarAlign))\r\n                .appendTo(this.$toolbar)\r\n                .append($(this.options.toolbar));\r\n        }\r\n\r\n        // showColumns, showToggle, showRefresh\r\n        html = [sprintf('<div class=\"columns columns-%s btn-group pull-%s\">',\r\n            this.options.buttonsAlign, this.options.buttonsAlign)];\r\n\r\n        if (typeof this.options.icons === 'string') {\r\n            this.options.icons = calculateObjectValue(null, this.options.icons);\r\n        }\r\n\r\n        if (this.options.showPaginationSwitch) {\r\n            html.push(sprintf('<button class=\"btn' +\r\n                    sprintf(' btn-%s', this.options.buttonsClass) +\r\n                    sprintf(' btn-%s', this.options.iconSize) +\r\n                    '\" type=\"button\" name=\"paginationSwitch\" title=\"%s\">',\r\n                    this.options.formatPaginationSwitch.call(this)),\r\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.paginationSwitchDown),\r\n                '</button>');\r\n        }\r\n\r\n        if (this.options.showRefresh) {\r\n            html.push(sprintf('<button class=\"btn' +\r\n                    sprintf(' btn-%s', this.options.buttonsClass) +\r\n                    sprintf(' btn-%s', this.options.iconSize) +\r\n                    '\" type=\"button\" name=\"refresh\" title=\"%s\">',\r\n                    this.options.formatRefresh.call(this)),\r\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.refresh),\r\n                '</button>');\r\n        }\r\n\r\n        if (this.options.showToggle) {\r\n            html.push(sprintf('<button class=\"btn' +\r\n                    sprintf(' btn-%s', this.options.buttonsClass) +\r\n                    sprintf(' btn-%s', this.options.iconSize) +\r\n                    '\" type=\"button\" name=\"toggle\" title=\"%s\">',\r\n                    this.options.formatToggle.call(this)),\r\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.toggle),\r\n                '</button>');\r\n        }\r\n\r\n        if (this.options.showColumns) {\r\n            html.push(sprintf('<div class=\"keep-open btn-group\" title=\"%s\">',\r\n                    this.options.formatColumns.call(this)),\r\n                '<button type=\"button\" class=\"btn' +\r\n                sprintf(' btn-%s', this.options.buttonsClass) +\r\n                sprintf(' btn-%s', this.options.iconSize) +\r\n                ' dropdown-toggle\" data-toggle=\"dropdown\">',\r\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.columns),\r\n                ' <span class=\"caret\"></span>',\r\n                '</button>',\r\n                '<ul class=\"dropdown-menu\" role=\"menu\">');\r\n\r\n            $.each(this.columns, function (i, column) {\r\n                if (column.radio || column.checkbox) {\r\n                    return;\r\n                }\r\n\r\n                if (that.options.cardView && !column.cardVisible) {\r\n                    return;\r\n                }\r\n\r\n                if (column.switchable) {\r\n                    html.push(sprintf('<li>' +\r\n                        '<label><input type=\"checkbox\" data-field=\"%s\" value=\"%s\"%s> %s</label>' +\r\n                        '</li>', column.field, i, (column.visible ? ' checked=\"checked\"' : ''), column.title));\r\n                    switchableCount++;\r\n                }\r\n            });\r\n            html.push('</ul>',\r\n                '</div>');\r\n        }\r\n\r\n        html.push('</div>');\r\n\r\n        // Fix #188: this.showToolbar is for extensions\r\n        if (this.showToolbar || html.length > 2) {\r\n            this.$toolbar.append(html.join(''));\r\n        }\r\n\r\n        if (this.options.showPaginationSwitch) {\r\n            this.$toolbar.find('button[name=paginationSwitch]')\r\n                .off('click').on('click', $.proxy(this.togglePagination, this));\r\n        }\r\n\r\n        if (this.options.showRefresh) {\r\n            this.$toolbar.find('button[name=refresh]')\r\n                .off('click').on('click', $.proxy(this.refresh, this));\r\n        }\r\n\r\n        if (this.options.showToggle) {\r\n            this.$toolbar.find('button[name=toggle]')\r\n                .off('click').on('click', function () {\r\n                    that.toggleView();\r\n                });\r\n        }\r\n\r\n        if (this.options.showColumns) {\r\n            $keepOpen = this.$toolbar.find('.keep-open');\r\n\r\n            if (switchableCount <= this.options.minimumCountColumns) {\r\n                $keepOpen.find('input').prop('disabled', true);\r\n            }\r\n\r\n            $keepOpen.find('li').off('click').on('click', function (event) {\r\n                event.stopImmediatePropagation();\r\n            });\r\n            $keepOpen.find('input').off('click').on('click', function () {\r\n                var $this = $(this);\r\n\r\n                that.toggleColumn($this.val(), $this.prop('checked'), false);\r\n                that.trigger('column-switch', $this.data('field'), $this.prop('checked'));\r\n            });\r\n        }\r\n\r\n        if (this.options.search) {\r\n            html = [];\r\n            html.push(\r\n                '<div class=\"pull-' + this.options.searchAlign + ' search\">',\r\n                sprintf('<input class=\"form-control' +\r\n                    sprintf(' input-%s', this.options.iconSize) +\r\n                    '\" type=\"text\" placeholder=\"%s\">',\r\n                    this.options.formatSearch.call(this)),\r\n                '</div>');\r\n\r\n            this.$toolbar.append(html.join(''));\r\n            $search = this.$toolbar.find('.search input');\r\n            $search.off('keyup drop blur').on('keyup drop blur', function (event) {\r\n                if (that.options.searchOnEnterKey && event.keyCode !== 13) {\r\n                    return;\r\n                }\r\n\r\n                if ($.inArray(event.keyCode, [37, 38, 39, 40]) > -1) {\r\n                    return;\r\n                }\r\n\r\n                clearTimeout(timeoutId); // doesn't matter if it's 0\r\n                timeoutId = setTimeout(function () {\r\n                    that.onSearch(event);\r\n                }, that.options.searchTimeOut);\r\n            });\r\n\r\n            if (isIEBrowser()) {\r\n                $search.off('mouseup').on('mouseup', function (event) {\r\n                    clearTimeout(timeoutId); // doesn't matter if it's 0\r\n                    timeoutId = setTimeout(function () {\r\n                        that.onSearch(event);\r\n                    }, that.options.searchTimeOut);\r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.onSearch = function (event) {\r\n        var text = $.trim($(event.currentTarget).val());\r\n\r\n        // trim search input\r\n        if (this.options.trimOnSearch && $(event.currentTarget).val() !== text) {\r\n            $(event.currentTarget).val(text);\r\n        }\r\n\r\n        if (text === this.searchText) {\r\n            return;\r\n        }\r\n        \r\n        if (text.length === 0) {\r\n        \tdelete this.searchText;\r\n        } else {\r\n        \tthis.searchText = text;\r\n        }\r\n        \r\n        this.options.searchText = text;\r\n        this.options.pageNumber = 1;\r\n        this.initSearch();\r\n        this.updatePagination();\r\n        this.trigger('search', text);\r\n    };\r\n\r\n    BootstrapTable.prototype.initSearch = function () {\r\n        var that = this;\r\n\r\n        if (this.options.sidePagination !== 'server') {\r\n            if (this.options.customSearch !== $.noop) {\r\n                this.options.customSearch.apply(this, [this.searchText]);\r\n                return;\r\n            }\r\n\r\n            var s = !(this.searchText === undefined) && (this.options.escape ?\r\n                escapeHTML(this.searchText) : this.searchText).toLowerCase();\r\n            var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;\r\n\r\n            // Check filter\r\n            this.data = f ? $.grep(this.options.data, function (item, i) {\r\n                for (var key in f) {\r\n                    if ($.isArray(f[key]) && $.inArray(item[key], f[key]) === -1 ||\r\n                            !$.isArray(f[key]) && item[key] !== f[key]) {\r\n                        return false;\r\n                    }\r\n                }\r\n                return true;\r\n            }) : this.options.data;\r\n\r\n            this.data = s ? $.grep(this.data, function (item, i) {\r\n                for (var j = 0; j < that.header.fields.length; j++) {\r\n\r\n                    if (!that.header.searchables[j]) {\r\n                        continue;\r\n                    }\r\n\r\n                    var key = $.isNumeric(that.header.fields[j]) ? parseInt(that.header.fields[j], 10) : that.header.fields[j];\r\n                    var column = that.columns[getFieldIndex(that.columns, key)];\r\n                    var value;\r\n\r\n                    if (typeof key === 'string') {\r\n                        value = item;\r\n                        var props = key.split('.');\r\n                        for (var prop_index = 0; prop_index < props.length; prop_index++) {\r\n                            value = value[props[prop_index]];\r\n                        }\r\n\r\n                        // Fix #142: respect searchForamtter boolean\r\n                        if (column && column.searchFormatter) {\r\n                            value = calculateObjectValue(column,\r\n                                that.header.formatters[j], [value, item, i], value);\r\n                        }\r\n                    } else {\r\n                        value = item[key];\r\n                    }\r\n\r\n                    if (typeof value === 'string' || typeof value === 'number') {\r\n                        if (that.options.strictSearch) {\r\n                            if ((value + '').toLowerCase() === s) {\r\n                                return true;\r\n                            }\r\n                        } else {\r\n                            if ((value + '').toLowerCase().indexOf(s) !== -1) {\r\n                                return true;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return false;\r\n            }) : this.data;\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.initPagination = function () {\r\n        if (!this.options.pagination) {\r\n            this.$pagination.hide();\r\n            return;\r\n        }\r\n        \r\n        this.$pagination.show();\r\n\r\n        var that = this,\r\n            html = [],\r\n            $allSelected = false,\r\n            i, from, to,\r\n            $pageList,\r\n            $first, $pre,\r\n            $next, $last,\r\n            $number,\r\n            data = this.getData(),\r\n            pageList = this.options.pageList;\r\n\r\n        if (this.options.sidePagination !== 'server') {\r\n            this.options.totalRows = data.length;\r\n        }\r\n\r\n        this.totalPages = 0;\r\n        var formatAllRows = this.options.formatAllRows.call(this);\r\n        if (this.options.totalRows) {\r\n            if (this.options.pageSize === formatAllRows) {\r\n                this.options.pageSize = this.options.totalRows;\r\n                $allSelected = true;\r\n            } else if (this.options.pageSize === this.options.totalRows) {\r\n                // Fix #667 Table with pagination,\r\n                // multiple pages and a search that matches to one page throws exception\r\n                var pageLst = typeof this.options.pageList === 'string' ?\r\n                    this.options.pageList.replace('[', '').replace(']', '')\r\n                        .replace(/ /g, '').toLowerCase().split(',') : this.options.pageList;\r\n                if ($.inArray(formatAllRows.toLowerCase(), pageLst)  > -1) {\r\n                    $allSelected = true;\r\n                }\r\n            }\r\n\r\n            this.totalPages = ~~((this.options.totalRows - 1) / this.options.pageSize) + 1;\r\n\r\n            this.options.totalPages = this.totalPages;\r\n        }\r\n        if (this.totalPages > 0 && this.options.pageNumber > this.totalPages) {\r\n            this.options.pageNumber = this.totalPages;\r\n        }\r\n\r\n        this.pageFrom = (this.options.pageNumber - 1) * this.options.pageSize + 1;\r\n        this.pageTo = this.options.pageNumber * this.options.pageSize;\r\n        if (this.pageTo > this.options.totalRows) {\r\n            this.pageTo = this.options.totalRows;\r\n        }\r\n\r\n        html.push(\r\n            '<div class=\"pull-' + this.options.paginationDetailHAlign + ' pagination-detail\">',\r\n            '<span class=\"pagination-info\">',\r\n            this.options.onlyInfoPagination ? this.options.formatDetailPagination(this.options.totalRows) :\r\n            this.options.formatShowingRows.call(this, this.pageFrom, this.pageTo, this.options.totalRows),\r\n            '</span>');\r\n\r\n        if (!this.options.onlyInfoPagination) {\r\n            html.push('<span class=\"page-list\">');\r\n\r\n            var pageNumber = [\r\n                    sprintf('<span class=\"btn-group %s\">',\r\n                        this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?\r\n                            'dropdown' : 'dropup'),\r\n                    '<button type=\"button\" class=\"btn' +\r\n                    sprintf(' btn-%s', this.options.buttonsClass) +\r\n                    sprintf(' btn-%s', this.options.iconSize) +\r\n                    ' dropdown-toggle\" data-toggle=\"dropdown\">',\r\n                    '<span class=\"page-size\">',\r\n                    $allSelected ? formatAllRows : this.options.pageSize,\r\n                    '</span>',\r\n                    ' <span class=\"caret\"></span>',\r\n                    '</button>',\r\n                    '<ul class=\"dropdown-menu\" role=\"menu\">'\r\n                ];\r\n            if (typeof this.options.pageList === 'string') {\r\n                var list = this.options.pageList.replace('[', '').replace(']', '')\r\n                    .replace(/ /g, '').split(',');\r\n\r\n                pageList = [];\r\n                $.each(list, function (i, value) {\r\n                    pageList.push(value.toUpperCase() === formatAllRows.toUpperCase() ?\r\n                        formatAllRows : +value);\r\n                });\r\n            }\r\n\r\n            $.each(pageList, function (i, page) {\r\n                if (!that.options.smartDisplay || i === 0 || pageList[i - 1] < that.options.totalRows) {\r\n                    var active;\r\n                    if ($allSelected) {\r\n                        active = (page === formatAllRows ? ' class=\"active\"' : '');\r\n                    } else {\r\n                        active = (page === that.options.pageSize ? ' class=\"active\"' : '');\r\n                    }\r\n                    pageNumber.push(sprintf('<li%s><a href=\"javascript:void(0)\">%s</a></li>', active, page));\r\n                }\r\n            });\r\n            pageNumber.push('</ul></span>');\r\n\r\n            html.push(this.options.formatRecordsPerPage.call(this, pageNumber.join('')));\r\n            html.push('</span>');\r\n\r\n            html.push('</div>',\r\n                '<div class=\"pull-' + this.options.paginationHAlign + ' pagination\">',\r\n                '<ul class=\"pagination' + sprintf(' pagination-%s', this.options.iconSize) + '\">',\r\n                '<li class=\"page-pre\"><a href=\"javascript:void(0)\">' + this.options.paginationPreText + '</a></li>');\r\n\r\n            if (this.totalPages < 5) {\r\n                from = 1;\r\n                to = this.totalPages;\r\n            } else {\r\n                from = this.options.pageNumber - 2;\r\n                to = from + 4;\r\n                if (from < 1) {\r\n                    from = 1;\r\n                    to = 5;\r\n                }\r\n                if (to > this.totalPages) {\r\n                    to = this.totalPages;\r\n                    from = to - 4;\r\n                }\r\n            }\r\n\r\n            if (this.totalPages >= 6) {\r\n                if (this.options.pageNumber >= 3) {\r\n                    html.push('<li class=\"page-first' + (1 === this.options.pageNumber ? ' active' : '') + '\">',\r\n                        '<a href=\"javascript:void(0)\">', 1, '</a>',\r\n                        '</li>');\r\n\r\n                    from++;\r\n                }\r\n\r\n                if (this.options.pageNumber >= 4) {\r\n                    if (this.options.pageNumber == 4 || this.totalPages == 6 || this.totalPages == 7) {\r\n                        from--;\r\n                    } else {\r\n                        html.push('<li class=\"page-first-separator disabled\">',\r\n                            '<a href=\"javascript:void(0)\">...</a>',\r\n                            '</li>');\r\n                    }\r\n\r\n                    to--;\r\n                }\r\n            }\r\n\r\n            if (this.totalPages >= 7) {\r\n                if (this.options.pageNumber >= (this.totalPages - 2)) {\r\n                    from--;\r\n                }\r\n            }\r\n\r\n            if (this.totalPages == 6) {\r\n                if (this.options.pageNumber >= (this.totalPages - 2)) {\r\n                    to++;\r\n                }\r\n            } else if (this.totalPages >= 7) {\r\n                if (this.totalPages == 7 || this.options.pageNumber >= (this.totalPages - 3)) {\r\n                    to++;\r\n                }\r\n            }\r\n\r\n            for (i = from; i <= to; i++) {\r\n                html.push('<li class=\"page-number' + (i === this.options.pageNumber ? ' active' : '') + '\">',\r\n                    '<a href=\"javascript:void(0)\">', i, '</a>',\r\n                    '</li>');\r\n            }\r\n\r\n            if (this.totalPages >= 8) {\r\n                if (this.options.pageNumber <= (this.totalPages - 4)) {\r\n                    html.push('<li class=\"page-last-separator disabled\">',\r\n                        '<a href=\"javascript:void(0)\">...</a>',\r\n                        '</li>');\r\n                }\r\n            }\r\n\r\n            if (this.totalPages >= 6) {\r\n                if (this.options.pageNumber <= (this.totalPages - 3)) {\r\n                    html.push('<li class=\"page-last' + (this.totalPages === this.options.pageNumber ? ' active' : '') + '\">',\r\n                        '<a href=\"javascript:void(0)\">', this.totalPages, '</a>',\r\n                        '</li>');\r\n                }\r\n            }\r\n\r\n            html.push(\r\n                '<li class=\"page-next\"><a href=\"javascript:void(0)\">' + this.options.paginationNextText + '</a></li>',\r\n                '</ul>',\r\n                '</div>');\r\n        }\r\n        this.$pagination.html(html.join(''));\r\n\r\n        if (!this.options.onlyInfoPagination) {\r\n            $pageList = this.$pagination.find('.page-list a');\r\n            $first = this.$pagination.find('.page-first');\r\n            $pre = this.$pagination.find('.page-pre');\r\n            $next = this.$pagination.find('.page-next');\r\n            $last = this.$pagination.find('.page-last');\r\n            $number = this.$pagination.find('.page-number');\r\n\r\n            if (this.options.smartDisplay) {\r\n                if (this.totalPages <= 1) {\r\n                    this.$pagination.find('div.pagination').hide();\r\n                }\r\n                if (pageList.length < 2 || this.options.totalRows <= pageList[0]) {\r\n                    this.$pagination.find('span.page-list').hide();\r\n                }\r\n\r\n                // when data is empty, hide the pagination\r\n                this.$pagination[this.getData().length ? 'show' : 'hide']();\r\n            }\r\n\r\n            if (!this.options.paginationLoop) {\r\n                if (this.options.pageNumber === 1) {\r\n                    $pre.addClass('disabled');\r\n                }\r\n                if (this.options.pageNumber === this.totalPages) {\r\n                    $next.addClass('disabled');\r\n                }\r\n            }\r\n\r\n            if ($allSelected) {\r\n                this.options.pageSize = formatAllRows;\r\n            }\r\n            $pageList.off('click').on('click', $.proxy(this.onPageListChange, this));\r\n            $first.off('click').on('click', $.proxy(this.onPageFirst, this));\r\n            $pre.off('click').on('click', $.proxy(this.onPagePre, this));\r\n            $next.off('click').on('click', $.proxy(this.onPageNext, this));\r\n            $last.off('click').on('click', $.proxy(this.onPageLast, this));\r\n            $number.off('click').on('click', $.proxy(this.onPageNumber, this));\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.updatePagination = function (event) {\r\n        // Fix #171: IE disabled button can be clicked bug.\r\n        if (event && $(event.currentTarget).hasClass('disabled')) {\r\n            return;\r\n        }\r\n\r\n        if (!this.options.maintainSelected) {\r\n            this.resetRows();\r\n        }\r\n\r\n        this.initPagination();\r\n        if (this.options.sidePagination === 'server') {\r\n            this.async();\r\n        } else {\r\n            this.initBody();\r\n        }\r\n\r\n        this.trigger('page-change', this.options.pageNumber, this.options.pageSize);\r\n    };\r\n\r\n    BootstrapTable.prototype.onPageListChange = function (event) {\r\n        var $el = $(event.currentTarget);\r\n        var formatAllRows = this.options.formatAllRows.call(this);\r\n        $el.parent().addClass('active').siblings().removeClass('active');\r\n        this.options.pageSize = $el.text().toUpperCase() === formatAllRows.toUpperCase() ?\r\n            formatAllRows : +$el.text();\r\n        this.$toolbar.find('.page-size').text(this.options.pageSize);\r\n\r\n        this.updatePagination(event);\r\n    };\r\n\r\n    BootstrapTable.prototype.onPageFirst = function (event) {\r\n        this.options.pageNumber = 1;\r\n        this.updatePagination(event);\r\n    };\r\n\r\n    BootstrapTable.prototype.onPagePre = function (event) {\r\n        if ((this.options.pageNumber - 1) === 0) {\r\n            this.options.pageNumber = this.options.totalPages;\r\n        } else {\r\n            this.options.pageNumber--;\r\n        }\r\n        this.updatePagination(event);\r\n    };\r\n\r\n    BootstrapTable.prototype.onPageNext = function (event) {\r\n        if ((this.options.pageNumber + 1) > this.options.totalPages) {\r\n            this.options.pageNumber = 1;\r\n        } else {\r\n            this.options.pageNumber++;\r\n        }\r\n        this.updatePagination(event);\r\n    };\r\n\r\n    BootstrapTable.prototype.onPageLast = function (event) {\r\n        this.options.pageNumber = this.totalPages;\r\n        this.updatePagination(event);\r\n    };\r\n\r\n    BootstrapTable.prototype.onPageNumber = function (event) {\r\n        if (this.options.pageNumber === +$(event.currentTarget).text()) {\r\n            return;\r\n        }\r\n        this.options.pageNumber = +$(event.currentTarget).text();\r\n        this.updatePagination(event);\r\n    };\r\n\r\n    BootstrapTable.prototype.initBody = function (fixedScroll) {\r\n        var that = this,\r\n            html = [],\r\n            data = this.getData();\r\n\r\n        this.trigger('pre-body', data);\r\n\r\n        this.$body = this.$el.find('>tbody');\r\n        if (!this.$body.length) {\r\n            this.$body = $('<tbody></tbody>').appendTo(this.$el);\r\n        }\r\n\r\n        //Fix #389 Bootstrap-table-flatJSON is not working\r\n\r\n        if (!this.options.pagination || this.options.sidePagination === 'server') {\r\n            this.pageFrom = 1;\r\n            this.pageTo = data.length;\r\n        }\r\n\r\n        for (var i = this.pageFrom - 1; i < this.pageTo; i++) {\r\n            var key,\r\n                item = data[i],\r\n                style = {},\r\n                csses = [],\r\n                data_ = '',\r\n                attributes = {},\r\n                htmlAttributes = [];\r\n\r\n            if ($.inArray(item, this.hiddenRows) > -1) {\r\n                continue;\r\n            }\r\n\r\n            style = calculateObjectValue(this.options, this.options.rowStyle, [item, i], style);\r\n\r\n            if (style && style.css) {\r\n                for (key in style.css) {\r\n                    csses.push(key + ': ' + style.css[key]);\r\n                }\r\n            }\r\n\r\n            attributes = calculateObjectValue(this.options,\r\n                this.options.rowAttributes, [item, i], attributes);\r\n\r\n            if (attributes) {\r\n                for (key in attributes) {\r\n                    htmlAttributes.push(sprintf('%s=\"%s\"', key, escapeHTML(attributes[key])));\r\n                }\r\n            }\r\n\r\n            if (item._data && !$.isEmptyObject(item._data)) {\r\n                $.each(item._data, function (k, v) {\r\n                    // ignore data-index\r\n                    if (k === 'index') {\r\n                        return;\r\n                    }\r\n                    data_ += sprintf(' data-%s=\"%s\"', k, v);\r\n                });\r\n            }\r\n\r\n            html.push('<tr',\r\n                sprintf(' %s', htmlAttributes.join(' ')),\r\n                sprintf(' id=\"%s\"', $.isArray(item) ? undefined : item._id),\r\n                sprintf(' class=\"%s\"', style.classes || ($.isArray(item) ? undefined : item._class)),\r\n                sprintf(' data-index=\"%s\"', i),\r\n                sprintf(' data-uniqueid=\"%s\"', item[this.options.uniqueId]),\r\n                sprintf('%s', data_),\r\n                '>'\r\n            );\r\n\r\n            if (this.options.cardView) {\r\n                html.push(sprintf('<td colspan=\"%s\"><div class=\"card-views\">', this.header.fields.length));\r\n            }\r\n\r\n            if (!this.options.cardView && this.options.detailView) {\r\n                html.push('<td>',\r\n                    '<a class=\"detail-icon\" href=\"javascript:void(0)\">',\r\n                    sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.detailOpen),\r\n                    '</a>',\r\n                    '</td>');\r\n            }\r\n\r\n            $.each(this.header.fields, function (j, field) {\r\n                var text = '',\r\n                    value_ = getItemField(item, field, that.options.escape),\r\n                    value = '',\r\n                    type = '',\r\n                    cellStyle = {},\r\n                    id_ = '',\r\n                    class_ = that.header.classes[j],\r\n                    data_ = '',\r\n                    rowspan_ = '',\r\n                    colspan_ = '',\r\n                    title_ = '',\r\n                    column = that.columns[j];\r\n\r\n                if (that.fromHtml && typeof value_ === 'undefined') {\r\n                    return;\r\n                }\r\n\r\n                if (!column.visible) {\r\n                    return;\r\n                }\r\n\r\n                if (that.options.cardView && !column.cardVisible) {\r\n                    return;\r\n                }\r\n\r\n                style = sprintf('style=\"%s\"', csses.concat(that.header.styles[j]).join('; '));\r\n\r\n                // handle td's id and class\r\n                if (item['_' + field + '_id']) {\r\n                    id_ = sprintf(' id=\"%s\"', item['_' + field + '_id']);\r\n                }\r\n                if (item['_' + field + '_class']) {\r\n                    class_ = sprintf(' class=\"%s\"', item['_' + field + '_class']);\r\n                }\r\n                if (item['_' + field + '_rowspan']) {\r\n                    rowspan_ = sprintf(' rowspan=\"%s\"', item['_' + field + '_rowspan']);\r\n                }\r\n                if (item['_' + field + '_colspan']) {\r\n                    colspan_ = sprintf(' colspan=\"%s\"', item['_' + field + '_colspan']);\r\n                }\r\n                if (item['_' + field + '_title']) {\r\n                    title_ = sprintf(' title=\"%s\"', item['_' + field + '_title']);\r\n                }\r\n                cellStyle = calculateObjectValue(that.header,\r\n                    that.header.cellStyles[j], [value_, item, i, field], cellStyle);\r\n                if (cellStyle.classes) {\r\n                    class_ = sprintf(' class=\"%s\"', cellStyle.classes);\r\n                }\r\n                if (cellStyle.css) {\r\n                    var csses_ = [];\r\n                    for (var key in cellStyle.css) {\r\n                        csses_.push(key + ': ' + cellStyle.css[key]);\r\n                    }\r\n                    style = sprintf('style=\"%s\"', csses_.concat(that.header.styles[j]).join('; '));\r\n                }\r\n\r\n                value = calculateObjectValue(column,\r\n                    that.header.formatters[j], [value_, item, i], value_);\r\n\r\n                if (item['_' + field + '_data'] && !$.isEmptyObject(item['_' + field + '_data'])) {\r\n                    $.each(item['_' + field + '_data'], function (k, v) {\r\n                        // ignore data-index\r\n                        if (k === 'index') {\r\n                            return;\r\n                        }\r\n                        data_ += sprintf(' data-%s=\"%s\"', k, v);\r\n                    });\r\n                }\r\n\r\n                if (column.checkbox || column.radio) {\r\n                    type = column.checkbox ? 'checkbox' : type;\r\n                    type = column.radio ? 'radio' : type;\r\n\r\n                    text = [sprintf(that.options.cardView ?\r\n                        '<div class=\"card-view %s\">' : '<td class=\"bs-checkbox %s\">', column['class'] || ''),\r\n                        '<input' +\r\n                        sprintf(' data-index=\"%s\"', i) +\r\n                        sprintf(' name=\"%s\"', that.options.selectItemName) +\r\n                        sprintf(' type=\"%s\"', type) +\r\n                        sprintf(' value=\"%s\"', item[that.options.idField]) +\r\n                        sprintf(' checked=\"%s\"', value === true ||\r\n                        (value_ || value && value.checked) ? 'checked' : undefined) +\r\n                        sprintf(' disabled=\"%s\"', !column.checkboxEnabled ||\r\n                        (value && value.disabled) ? 'disabled' : undefined) +\r\n                        ' />',\r\n                        that.header.formatters[j] && typeof value === 'string' ? value : '',\r\n                        that.options.cardView ? '</div>' : '</td>'\r\n                    ].join('');\r\n\r\n                    item[that.header.stateField] = value === true || (value && value.checked);\r\n                } else {\r\n                    value = typeof value === 'undefined' || value === null ?\r\n                        that.options.undefinedText : value;\r\n\r\n                    text = that.options.cardView ? ['<div class=\"card-view\">',\r\n                        that.options.showHeader ? sprintf('<span class=\"title\" %s>%s</span>', style,\r\n                            getPropertyFromOther(that.columns, 'field', 'title', field)) : '',\r\n                        sprintf('<span class=\"value\">%s</span>', value),\r\n                        '</div>'\r\n                    ].join('') : [sprintf('<td%s %s %s %s %s %s %s>',\r\n                        id_, class_, style, data_, rowspan_, colspan_, title_),\r\n                        value,\r\n                        '</td>'\r\n                    ].join('');\r\n\r\n                    // Hide empty data on Card view when smartDisplay is set to true.\r\n                    if (that.options.cardView && that.options.smartDisplay && value === '') {\r\n                        // Should set a placeholder for event binding correct fieldIndex\r\n                        text = '<div class=\"card-view\"></div>';\r\n                    }\r\n                }\r\n\r\n                html.push(text);\r\n            });\r\n\r\n            if (this.options.cardView) {\r\n                html.push('</div></td>');\r\n            }\r\n\r\n            html.push('</tr>');\r\n        }\r\n\r\n        // show no records\r\n        if (!html.length) {\r\n            html.push('<tr class=\"no-records-found\">',\r\n                sprintf('<td colspan=\"%s\">%s</td>',\r\n                    this.$header.find('th').length, this.options.formatNoMatches.call(this)),\r\n                '</tr>');\r\n        }\r\n\r\n        this.$body.html(html.join(''));\r\n\r\n        if (!fixedScroll) {\r\n            this.scrollTo(0);\r\n        }\r\n\r\n        // click to select by column\r\n        this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {\r\n            var $td = $(this),\r\n                $tr = $td.parent(),\r\n                item = that.data[$tr.data('index')],\r\n                index = $td[0].cellIndex,\r\n                fields = that.getVisibleFields(),\r\n                field = fields[that.options.detailView && !that.options.cardView ? index - 1 : index],\r\n                column = that.columns[getFieldIndex(that.columns, field)],\r\n                value = getItemField(item, field, that.options.escape);\r\n\r\n            if ($td.find('.detail-icon').length) {\r\n                return;\r\n            }\r\n\r\n            that.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td);\r\n            that.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr, field);\r\n\r\n            // if click to select - then trigger the checkbox/radio click\r\n            if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect) {\r\n                var $selectItem = $tr.find(sprintf('[name=%s]', that.options.selectItemName));\r\n                if ($selectItem.length) {\r\n                    $selectItem[0].click(); // #144: .trigger('click') bug\r\n                }\r\n            }\r\n        });\r\n\r\n        this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function () {\r\n            var $this = $(this),\r\n                $tr = $this.parent().parent(),\r\n                index = $tr.data('index'),\r\n                row = data[index]; // Fix #980 Detail view, when searching, returns wrong row\r\n\r\n            // remove and update\r\n            if ($tr.next().is('tr.detail-view')) {\r\n                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailOpen));\r\n                $tr.next().remove();\r\n                that.trigger('collapse-row', index, row);\r\n            } else {\r\n                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));\r\n                $tr.after(sprintf('<tr class=\"detail-view\"><td colspan=\"%s\"></td></tr>', $tr.find('td').length));\r\n                var $element = $tr.next().find('td');\r\n                var content = calculateObjectValue(that.options, that.options.detailFormatter, [index, row, $element], '');\r\n                if($element.length === 1) {\r\n                    $element.append(content);\r\n                }\r\n                that.trigger('expand-row', index, row, $element);\r\n            }\r\n            that.resetView();\r\n        });\r\n\r\n        this.$selectItem = this.$body.find(sprintf('[name=%s]', this.options.selectItemName));\r\n\r\n        this.$selectItem.off('click').on('click', function (event) {\r\n            event.stopImmediatePropagation();\r\n\r\n            var $this = $(this),\r\n                checked = $this.prop('checked'),\r\n                row = that.data[$this.data('index')];\r\n\r\n            if (that.options.maintainSelected && $(this).is(':radio')) {\r\n                $.each(that.options.data, function (i, row) {\r\n                    row[that.header.stateField] = false;\r\n                });\r\n            }\r\n\r\n            row[that.header.stateField] = checked;\r\n\r\n            if (that.options.singleSelect) {\r\n                that.$selectItem.not(this).each(function () {\r\n                    that.data[$(this).data('index')][that.header.stateField] = false;\r\n                });\r\n                that.$selectItem.filter(':checked').not(this).prop('checked', false);\r\n            }\r\n\r\n            that.updateSelected();\r\n            that.trigger(checked ? 'check' : 'uncheck', row, $this);\r\n        });\r\n\r\n        $.each(this.header.events, function (i, events) {\r\n            if (!events) {\r\n                return;\r\n            }\r\n            // fix bug, if events is defined with namespace\r\n            if (typeof events === 'string') {\r\n                events = calculateObjectValue(null, events);\r\n            }\r\n\r\n            var field = that.header.fields[i],\r\n                fieldIndex = $.inArray(field, that.getVisibleFields());\r\n\r\n            if (that.options.detailView && !that.options.cardView) {\r\n                fieldIndex += 1;\r\n            }\r\n\r\n            for (var key in events) {\r\n                that.$body.find('>tr:not(.no-records-found)').each(function () {\r\n                    var $tr = $(this),\r\n                        $td = $tr.find(that.options.cardView ? '.card-view' : 'td').eq(fieldIndex),\r\n                        index = key.indexOf(' '),\r\n                        name = key.substring(0, index),\r\n                        el = key.substring(index + 1),\r\n                        func = events[key];\r\n\r\n                    $td.find(el).off(name).on(name, function (e) {\r\n                        var index = $tr.data('index'),\r\n                            row = that.data[index],\r\n                            value = row[field];\r\n\r\n                        func.apply(this, [e, value, row, index]);\r\n                    });\r\n                });\r\n            }\r\n        });\r\n\r\n        this.updateSelected();\r\n        this.resetView();\r\n\r\n        this.trigger('post-body', data);\r\n    };\r\n\r\n    BootstrapTable.prototype.async = function (silent, query, url) {\r\n        var that = this,\r\n            data = {},\r\n            params = {\r\n                searchText: this.searchText,\r\n                sortName: this.options.sortName,\r\n                sortOrder: this.options.sortOrder\r\n            },\r\n            formatAllRows = this.options.formatAllRows.call(this),\r\n            options;\r\n        \r\n        if (this.options.pagination) {\r\n            params.pageSize = this.options.pageSize === formatAllRows ? this.options.totalRows : this.options.pageSize;\r\n            params.pageNumber = this.options.pageNumber;\r\n        }\r\n\r\n        if (!(url || this.options.url) && !this.options.ajax) {\r\n            return;\r\n        }\r\n\r\n        if (this.options.queryParamsType === 'limit') {\r\n            params = {\r\n                search: params.searchText,\r\n                sort: params.sortName,\r\n                order: params.sortOrder\r\n            };\r\n\r\n            if (this.options.pagination) {\r\n                params.offset = this.options.pageSize === formatAllRows ? 0 : this.options.pageSize * (this.options.pageNumber - 1);\r\n                params.limit = this.options.pageSize === formatAllRows ? this.options.totalRows : this.options.pageSize;\r\n            }\r\n        }\r\n\r\n        if (!($.isEmptyObject(this.filterColumnsPartial))) {\r\n            params.filter = JSON.stringify(this.filterColumnsPartial, null);\r\n        }\r\n\r\n        data = calculateObjectValue(this.options, this.options.queryParams, [params], data);\r\n        $.extend(data, query || {});\r\n\r\n        // false to stop request\r\n        if (data === false) {\r\n            return;\r\n        }\r\n\r\n        if (!silent) {\r\n            this.showLoading();\r\n        }\r\n        \r\n        options = $.extend({}, calculateObjectValue(null, this.options.ajaxOptions), {\r\n            type: this.options.method,\r\n            url:  url || this.options.url,\r\n            data: this.options.contentType === 'application/json' && this.options.method === 'post' ? JSON.stringify(data) : data,\r\n            cache: this.options.cache,\r\n            contentType: this.options.contentType,\r\n            dataType: this.options.dataType,\r\n            success: function (res) {\r\n                res = calculateObjectValue(that.options, that.options.responseHandler, [res], res);\r\n                that.load(res);\r\n                that.trigger('load-success', res);\r\n                if (!silent) that.hideLoading();\r\n            },\r\n            error: function (res) {\r\n                that.trigger('load-error', res.status, res);\r\n                if (!silent) that.hideLoading();\r\n            }\r\n        });\r\n\r\n        if (this.options.ajax) {\r\n            calculateObjectValue(this, this.options.ajax, [options], null);\r\n        } else {\r\n            if (_xhr && _xhr.readyState !== 4) {\r\n                _xhr.abort();\r\n            }\r\n            _xhr = $.ajax(options);\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.initSearchText = function () {\r\n        if (this.options.search) {\r\n            if (this.options.searchText !== '') {\r\n                var $search = this.$toolbar.find('.search input');\r\n                $search.val(this.options.searchText);\r\n                this.onSearch({currentTarget: $search});\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.getCaret = function () {\r\n        var that = this;\r\n\r\n        $.each(this.$header.find('th'), function (i, th) {\r\n            $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === that.options.sortName ? that.options.sortOrder : 'both');\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.updateSelected = function () {\r\n        var checkAll = this.$selectItem.filter(':enabled').length &&\r\n            this.$selectItem.filter(':enabled').length ===\r\n            this.$selectItem.filter(':enabled').filter(':checked').length;\r\n\r\n        this.$selectAll.add(this.$selectAll_).prop('checked', checkAll);\r\n\r\n        this.$selectItem.each(function () {\r\n            $(this).closest('tr')[$(this).prop('checked') ? 'addClass' : 'removeClass']('selected');\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.updateRows = function () {\r\n        var that = this;\r\n\r\n        this.$selectItem.each(function () {\r\n            that.data[$(this).data('index')][that.header.stateField] = $(this).prop('checked');\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.resetRows = function () {\r\n        var that = this;\r\n\r\n        $.each(this.data, function (i, row) {\r\n            that.$selectAll.prop('checked', false);\r\n            that.$selectItem.prop('checked', false);\r\n            if (that.header.stateField) {\r\n                row[that.header.stateField] = false;\r\n            }\r\n        });\r\n        this.initHiddenRows();\r\n    };\r\n\r\n    BootstrapTable.prototype.trigger = function (name) {\r\n        var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n        name += '.bs.table';\r\n        this.options[BootstrapTable.EVENTS[name]].apply(this.options, args);\r\n        this.$el.trigger($.Event(name), args);\r\n\r\n        this.options.onAll(name, args);\r\n        this.$el.trigger($.Event('all.bs.table'), [name, args]);\r\n    };\r\n\r\n    BootstrapTable.prototype.resetHeader = function () {\r\n        // fix #61: the hidden table reset header bug.\r\n        // fix bug: get $el.css('width') error sometime (height = 500)\r\n        clearTimeout(this.timeoutId_);\r\n        this.timeoutId_ = setTimeout($.proxy(this.fitHeader, this), this.$el.is(':hidden') ? 100 : 0);\r\n    };\r\n\r\n    BootstrapTable.prototype.fitHeader = function () {\r\n        var that = this,\r\n            fixedBody,\r\n            scrollWidth,\r\n            focused,\r\n            focusedTemp;\r\n\r\n        if (that.$el.is(':hidden')) {\r\n            that.timeoutId_ = setTimeout($.proxy(that.fitHeader, that), 100);\r\n            return;\r\n        }\r\n        fixedBody = this.$tableBody.get(0);\r\n\r\n        scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth &&\r\n        fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ?\r\n            getScrollBarWidth() : 0;\r\n\r\n        this.$el.css('margin-top', -this.$header.outerHeight());\r\n\r\n        focused = $(':focus');\r\n        if (focused.length > 0) {\r\n            var $th = focused.parents('th');\r\n            if ($th.length > 0) {\r\n                var dataField = $th.data('field');\r\n                if (dataField !== undefined) {\r\n                    var $headerTh = this.$header.find('[data-field=' + dataField + ']');\r\n                    if ($headerTh.length > 0) {\r\n                        $headerTh.find(':input').addClass('focus-temp');\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        this.$header_ = this.$header.clone(true, true);\r\n        this.$selectAll_ = this.$header_.find('[name=btn-select-all-items]');\r\n        this.$tableHeader.css({\r\n            'margin-right': scrollWidth\r\n        }).find('table').css('width', this.$el.outerWidth())\r\n            .html('').attr('class', this.$el.attr('class'))\r\n            .append(this.$header_);\r\n\r\n        focusedTemp = $('.focus-temp:visible:eq(0)');\r\n        if (focusedTemp.length > 0) {\r\n            focusedTemp.focus();\r\n            this.$header.find('.focus-temp').removeClass('focus-temp');\r\n        }\r\n\r\n        // fix bug: $.data() is not working as expected after $.append()\r\n        this.$header.find('th[data-field]').each(function (i) {\r\n        \tvar $el = $(this);\r\n        \t$el.addClass($el.data('field'));\r\n            that.$header_.find(sprintf('th[data-field=%s]', $el.data('field'))).data($el.data());\r\n        });\r\n\r\n        var visibleFields = this.getVisibleFields(),\r\n            $ths = this.$header_.find('th');\r\n\r\n        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {\r\n            var $this = $(this),\r\n                index = i;\r\n\r\n            if (that.options.detailView && !that.options.cardView) {\r\n                if (i === 0) {\r\n                    that.$header_.find('th.detail').find('.fht-cell').width($this.innerWidth());\r\n                }\r\n                index = i - 1;\r\n            }\r\n\r\n            var $th = that.$header_.find(sprintf('th[data-field=%s]', visibleFields[index]));\r\n            if ($th.length > 1) {\r\n                $th = $($ths[$this[0].cellIndex]);\r\n            }\r\n\r\n            $th.find('.fht-cell').width($this.innerWidth());\r\n        });\r\n        \r\n        // horizontal scroll event\r\n        // TODO: it's probably better improving the layout than binding to scroll event\r\n        this.$tableBody.off('scroll').on('scroll', function () {\r\n            that.$tableHeader.scrollLeft($(this).scrollLeft());\r\n\r\n            if (that.options.showFooter && !that.options.cardView) {\r\n                that.$tableFooter.scrollLeft($(this).scrollLeft());\r\n            }\r\n        });\r\n        \r\n        that.trigger('post-header');\r\n    };\r\n\r\n    BootstrapTable.prototype.resetFooter = function () {\r\n        var that = this,\r\n            data = that.getData(),\r\n            html = [];\r\n\r\n        if (!this.options.showFooter || this.options.cardView) { //do nothing\r\n            return;\r\n        }\r\n\r\n        if (!this.options.cardView && this.options.detailView) {\r\n            html.push('<td><div class=\"th-inner\">&nbsp;</div><div class=\"fht-cell\"></div></td>');\r\n        }\r\n\r\n        $.each(this.columns, function (i, column) {\r\n            var key,\r\n                falign = '', // footer align style\r\n                valign = '',\r\n                csses = [],\r\n                style = {},\r\n                class_ = sprintf(' class=\"%s\"', column['class']);\r\n\r\n            if (!column.visible) {\r\n                return;\r\n            }\r\n\r\n            if (that.options.cardView && (!column.cardVisible)) {\r\n                return;\r\n            }\r\n\r\n            falign = sprintf('text-align: %s; ', column.falign ? column.falign : column.align);\r\n            valign = sprintf('vertical-align: %s; ', column.valign);\r\n\r\n            style = calculateObjectValue(null, that.options.footerStyle);\r\n            if (style && style.css) {\r\n                for (key in style.css) {\r\n                    csses.push(key + ': ' + style.css[key]);\r\n                }\r\n            }\r\n\r\n            html.push('<td', class_, sprintf(' style=\"%s\"', falign + valign + csses.concat().join('; ')), '>');\r\n            html.push('<div class=\"th-inner\">');\r\n            html.push(calculateObjectValue(column, column.footerFormatter, [data], '&nbsp;') || '&nbsp;');\r\n            html.push('</div>');\r\n            html.push('<div class=\"fht-cell\"></div>');\r\n            html.push('</div>');\r\n            html.push('</td>');\r\n        });\r\n\r\n        this.$tableFooter.find('tr').html(html.join(''));\r\n        this.$tableFooter.show();\r\n        \r\n        clearTimeout(this.timeoutFooter_);\r\n        this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this),\r\n            this.$el.is(':hidden') ? 100 : 0);\r\n    };\r\n\r\n    BootstrapTable.prototype.fitFooter = function () {\r\n        var that = this,\r\n            $footerTd,\r\n            elWidth,\r\n            scrollWidth;\r\n\r\n        clearTimeout(this.timeoutFooter_);\r\n        \r\n        if (this.$el.is(':hidden')) {\r\n            this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), 100);\r\n            return;\r\n        }\r\n\r\n        elWidth = this.$el.css('width');\r\n        scrollWidth = elWidth > this.$tableBody.width() ? getScrollBarWidth() : 0;\r\n\r\n        this.$tableFooter.css({\r\n            'margin-right': scrollWidth\r\n        }).find('table').css('width', elWidth)\r\n            .attr('class', this.$el.attr('class'));\r\n\r\n        $footerTd = this.$tableFooter.find('td');\r\n        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {\r\n            $footerTd.eq(i).find('.fht-cell').width($(this).innerWidth());\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) {\r\n        if (index === -1) {\r\n            return;\r\n        }\r\n        this.columns[index].visible = checked;\r\n        this.initHeader();\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initBody();\r\n\r\n        if (this.options.showColumns) {\r\n            var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);\r\n\r\n            if (needUpdate) {\r\n                $items.filter(sprintf('[value=%s]', index)).prop('checked', checked);\r\n            }\r\n\r\n            if ($items.filter(':checked').length <= this.options.minimumCountColumns) {\r\n                $items.filter(':checked').prop('disabled', true);\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.getVisibleFields = function () {\r\n        var that = this,\r\n            visibleFields = [];\r\n\r\n        $.each(this.header.fields, function (j, field) {\r\n            var column = that.columns[getFieldIndex(that.columns, field)];\r\n\r\n            if (!column.visible) {\r\n                return;\r\n            }\r\n            visibleFields.push(field);\r\n        });\r\n        return visibleFields;\r\n    };\r\n\r\n    // PUBLIC FUNCTION DEFINITION\r\n    // =======================\r\n\r\n    BootstrapTable.prototype.resetView = function (params) {\r\n        var padding = 0;\r\n\r\n        if (params && params.height) {\r\n            this.options.height = params.height;\r\n        }\r\n\r\n        this.$selectAll.prop('checked', this.$selectItem.length > 0 &&\r\n            this.$selectItem.length === this.$selectItem.filter(':checked').length);\r\n\r\n        if (this.options.height) {\r\n            var toolbarHeight = this.$toolbar.outerHeight(true),\r\n                paginationHeight = this.$pagination.outerHeight(true),\r\n                height = this.options.height - toolbarHeight - paginationHeight;\r\n\r\n            this.$tableContainer.css('height', height + 'px');\r\n        }\r\n\r\n        if (this.options.cardView) {\r\n            // remove the element css\r\n            this.$el.css('margin-top', '0');\r\n            this.$tableContainer.css('padding-bottom', '0');\r\n            this.$tableFooter.hide();\r\n            return;\r\n        }\r\n\r\n        if (this.options.showHeader && this.options.height) {\r\n            this.$tableHeader.show();\r\n            this.resetHeader();\r\n            padding += this.$header.outerHeight();\r\n        } else {\r\n            this.$tableHeader.hide();\r\n            this.trigger('post-header');\r\n        }\r\n\r\n        if (this.options.showFooter) {\r\n            this.resetFooter();\r\n            if (this.options.height) {\r\n                padding += this.$tableFooter.outerHeight() + 1;\r\n            }\r\n        }\r\n\r\n        // Assign the correct sortable arrow\r\n        this.getCaret();\r\n        this.$tableContainer.css('padding-bottom', padding + 'px');\r\n        this.trigger('reset-view');\r\n    };\r\n\r\n    BootstrapTable.prototype.getData = function (useCurrentPage) {\r\n        return (!(this.searchText === undefined) || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) ?\r\n            (useCurrentPage ? this.data.slice(this.pageFrom - 1, this.pageTo) : this.data) :\r\n            (useCurrentPage ? this.options.data.slice(this.pageFrom - 1, this.pageTo) : this.options.data);\r\n    };\r\n\r\n    BootstrapTable.prototype.load = function (data) {\r\n        var fixedScroll = false;\r\n\r\n        // #431: support pagination\r\n        if (this.options.sidePagination === 'server') {\r\n            this.options.totalRows = data[this.options.totalField];\r\n            fixedScroll = data.fixedScroll;\r\n            data = data[this.options.dataField];\r\n        } else if (!$.isArray(data)) { // support fixedScroll\r\n            fixedScroll = data.fixedScroll;\r\n            data = data.data;\r\n        }\r\n\r\n        this.initData(data);\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initBody(fixedScroll);\r\n    };\r\n\r\n    BootstrapTable.prototype.append = function (data) {\r\n        this.initData(data, 'append');\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.prepend = function (data) {\r\n        this.initData(data, 'prepend');\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.remove = function (params) {\r\n        var len = this.options.data.length,\r\n            i, row;\r\n\r\n        if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) {\r\n            return;\r\n        }\r\n\r\n        for (i = len - 1; i >= 0; i--) {\r\n            row = this.options.data[i];\r\n\r\n            if (!row.hasOwnProperty(params.field)) {\r\n                continue;\r\n            }\r\n            if ($.inArray(row[params.field], params.values) !== -1) {\r\n                this.options.data.splice(i, 1);\r\n                if (this.options.sidePagination === 'server') {\r\n                    this.options.totalRows -= 1;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (len === this.options.data.length) {\r\n            return;\r\n        }\r\n\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.removeAll = function () {\r\n        if (this.options.data.length > 0) {\r\n            this.options.data.splice(0, this.options.data.length);\r\n            this.initSearch();\r\n            this.initPagination();\r\n            this.initBody(true);\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.getRowByUniqueId = function (id) {\r\n        var uniqueId = this.options.uniqueId,\r\n            len = this.options.data.length,\r\n            dataRow = null,\r\n            i, row, rowUniqueId;\r\n\r\n        for (i = len - 1; i >= 0; i--) {\r\n            row = this.options.data[i];\r\n\r\n            if (row.hasOwnProperty(uniqueId)) { // uniqueId is a column\r\n                rowUniqueId = row[uniqueId];\r\n            } else if(row._data.hasOwnProperty(uniqueId)) { // uniqueId is a row data property\r\n                rowUniqueId = row._data[uniqueId];\r\n            } else {\r\n                continue;\r\n            }\r\n\r\n            if (typeof rowUniqueId === 'string') {\r\n                id = id.toString();\r\n            } else if (typeof rowUniqueId === 'number') {\r\n                if ((Number(rowUniqueId) === rowUniqueId) && (rowUniqueId % 1 === 0)) {\r\n                    id = parseInt(id);\r\n                } else if ((rowUniqueId === Number(rowUniqueId)) && (rowUniqueId !== 0)) {\r\n                    id = parseFloat(id);\r\n                }\r\n            }\r\n\r\n            if (rowUniqueId === id) {\r\n                dataRow = row;\r\n                break;\r\n            }\r\n        }\r\n\r\n        return dataRow;\r\n    };\r\n\r\n    BootstrapTable.prototype.removeByUniqueId = function (id) {\r\n        var len = this.options.data.length,\r\n            row = this.getRowByUniqueId(id);\r\n\r\n        if (row) {\r\n            this.options.data.splice(this.options.data.indexOf(row), 1);\r\n        }\r\n\r\n        if (len === this.options.data.length) {\r\n            return;\r\n        }\r\n\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.updateByUniqueId = function (params) {\r\n        var that = this;\r\n        var allParams = $.isArray(params) ? params : [ params ];\r\n\r\n        $.each(allParams, function(i, params) {\r\n            var rowId;\r\n\r\n            if (!params.hasOwnProperty('id') || !params.hasOwnProperty('row')) {\r\n                return;\r\n            }\r\n\r\n            rowId = $.inArray(that.getRowByUniqueId(params.id), that.options.data);\r\n\r\n            if (rowId === -1) {\r\n                return;\r\n            }\r\n            $.extend(that.options.data[rowId], params.row);\r\n        });\r\n\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.insertRow = function (params) {\r\n        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {\r\n            return;\r\n        }\r\n        this.data.splice(params.index, 0, params.row);\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.updateRow = function (params) {\r\n        var that = this;\r\n        var allParams = $.isArray(params) ? params : [ params ];\r\n\r\n        $.each(allParams, function(i, params) {\r\n            if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {\r\n                return;\r\n            }\r\n            $.extend(that.options.data[params.index], params.row);\r\n        });\r\n\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.initHiddenRows = function () {\r\n        this.hiddenRows = [];\r\n    };\r\n\r\n    BootstrapTable.prototype.showRow = function (params) {\r\n        this.toggleRow(params, true);\r\n    };\r\n\r\n    BootstrapTable.prototype.hideRow = function (params) {\r\n        this.toggleRow(params, false);\r\n    };\r\n\r\n    BootstrapTable.prototype.toggleRow = function (params, visible) {\r\n        var row, index;\r\n\r\n        if (params.hasOwnProperty('index')) {\r\n            row = this.getData()[params.index];\r\n        } else if (params.hasOwnProperty('uniqueId')) {\r\n            row = this.getRowByUniqueId(params.uniqueId);\r\n        }\r\n\r\n        if (!row) {\r\n            return;\r\n        }\r\n\r\n        index = $.inArray(row, this.hiddenRows);\r\n\r\n        if (!visible && index === -1) {\r\n            this.hiddenRows.push(row);\r\n        } else if (visible && index > -1) {\r\n            this.hiddenRows.splice(index, 1);\r\n        }\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.getHiddenRows = function (show) {\r\n        var that = this,\r\n            data = this.getData(),\r\n            rows = [];\r\n\r\n        $.each(data, function (i, row) {\r\n            if ($.inArray(row, that.hiddenRows) > -1) {\r\n                rows.push(row);\r\n            }\r\n        });\r\n        this.hiddenRows = rows;\r\n        return rows;\r\n    };\r\n\r\n    BootstrapTable.prototype.mergeCells = function (options) {\r\n        var row = options.index,\r\n            col = $.inArray(options.field, this.getVisibleFields()),\r\n            rowspan = options.rowspan || 1,\r\n            colspan = options.colspan || 1,\r\n            i, j,\r\n            $tr = this.$body.find('>tr'),\r\n            $td;\r\n\r\n        if (this.options.detailView && !this.options.cardView) {\r\n            col += 1;\r\n        }\r\n\r\n        $td = $tr.eq(row).find('>td').eq(col);\r\n\r\n        if (row < 0 || col < 0 || row >= this.data.length) {\r\n            return;\r\n        }\r\n\r\n        for (i = row; i < row + rowspan; i++) {\r\n            for (j = col; j < col + colspan; j++) {\r\n                $tr.eq(i).find('>td').eq(j).hide();\r\n            }\r\n        }\r\n\r\n        $td.attr('rowspan', rowspan).attr('colspan', colspan).show();\r\n    };\r\n\r\n    BootstrapTable.prototype.updateCell = function (params) {\r\n        if (!params.hasOwnProperty('index') ||\r\n            !params.hasOwnProperty('field') ||\r\n            !params.hasOwnProperty('value')) {\r\n            return;\r\n        }\r\n        this.data[params.index][params.field] = params.value;\r\n\r\n        if (params.reinit === false) {\r\n            return;\r\n        }\r\n        this.initSort();\r\n        this.initBody(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.getOptions = function () {\r\n        return this.options;\r\n    };\r\n\r\n    BootstrapTable.prototype.getSelections = function () {\r\n        var that = this;\r\n\r\n        return $.grep(this.options.data, function (row) {\r\n            // fix #2424: from html with checkbox\r\n            return row[that.header.stateField] === true;\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.getAllSelections = function () {\r\n        var that = this;\r\n\r\n        return $.grep(this.options.data, function (row) {\r\n            return row[that.header.stateField];\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.checkInvert = function () {\r\n        var that = this;\r\n        var rows = that.$selectItem.filter(':enabled');\r\n        var checked = rows.filter(':checked');\r\n        rows.each(function() {\r\n            $(this).prop('checked', !$(this).prop('checked'));\r\n        });\r\n        that.updateRows();\r\n        that.updateSelected();\r\n        that.trigger('uncheck-some', checked);\r\n        checked = that.getSelections();\r\n        that.trigger('check-some', checked);\r\n    };\r\n\r\n    BootstrapTable.prototype.checkAll = function (checked) {\r\n    \tthis.checkAll_(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.uncheckAll = function () {\r\n        this.checkAll_(false);\r\n    };\r\n\r\n    BootstrapTable.prototype.checkAll_ = function (checked) {\r\n        var rows;\r\n        if (!checked) {\r\n            rows = this.getSelections();\r\n        }\r\n        this.$selectAll.add(this.$selectAll_).prop('checked', checked);\r\n        this.$selectItem.filter(':enabled').prop('checked', checked);\r\n        this.updateRows();\r\n        if (checked) {\r\n            rows = this.getSelections();\r\n        }\r\n        this.trigger(checked ? 'check-all' : 'uncheck-all', rows);\r\n    };\r\n\r\n    BootstrapTable.prototype.check = function (index) {\r\n        this.check_(true, index);\r\n    };\r\n\r\n    BootstrapTable.prototype.uncheck = function (index) {\r\n        this.check_(false, index);\r\n    };\r\n\r\n    BootstrapTable.prototype.check_ = function (checked, index) {\r\n        var $el = this.$selectItem.filter(sprintf('[data-index=%s]', index)).prop('checked', checked);\r\n        this.data[index][this.header.stateField] = checked;\r\n        this.updateSelected();\r\n        this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el);\r\n    };\r\n\r\n    BootstrapTable.prototype.checkBy = function (obj) {\r\n        this.checkBy_(true, obj);\r\n    };\r\n\r\n    BootstrapTable.prototype.uncheckBy = function (obj) {\r\n        this.checkBy_(false, obj);\r\n    };\r\n\r\n    BootstrapTable.prototype.checkBy_ = function (checked, obj) {\r\n        if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {\r\n            return;\r\n        }\r\n\r\n        var that = this,\r\n            rows = [];\r\n        $.each(this.options.data, function (index, row) {\r\n            if (!row.hasOwnProperty(obj.field)) {\r\n                return false;\r\n            }\r\n            if ($.inArray(row[obj.field], obj.values) !== -1) {\r\n                var $el = that.$selectItem.filter(':enabled')\r\n                    .filter(sprintf('[data-index=%s]', index)).prop('checked', checked);\r\n                row[that.header.stateField] = checked;\r\n                rows.push(row);\r\n                that.trigger(checked ? 'check' : 'uncheck', row, $el);\r\n            }\r\n        });\r\n        this.updateSelected();\r\n        this.trigger(checked ? 'check-some' : 'uncheck-some', rows);\r\n    };\r\n\r\n    BootstrapTable.prototype.destroy = function () {\r\n        this.$el.insertBefore(this.$container);\r\n        $(this.options.toolbar).insertBefore(this.$el);\r\n        this.$container.next().remove();\r\n        this.$container.remove();\r\n        this.$el.html(this.$el_.html())\r\n            .css('margin-top', '0')\r\n            .attr('class', this.$el_.attr('class') || ''); // reset the class\r\n    };\r\n\r\n    BootstrapTable.prototype.showLoading = function () {\r\n        this.$tableLoading.show();\r\n    };\r\n\r\n    BootstrapTable.prototype.hideLoading = function () {\r\n        this.$tableLoading.hide();\r\n    };\r\n\r\n    BootstrapTable.prototype.togglePagination = function () {\r\n        this.options.pagination = !this.options.pagination;\r\n        var button = this.$toolbar.find('button[name=paginationSwitch] i');\r\n        if (this.options.pagination) {\r\n            button.attr('class', this.options.iconsPrefix + ' ' + this.options.icons.paginationSwitchDown);\r\n        } else {\r\n            button.attr('class', this.options.iconsPrefix + ' ' + this.options.icons.paginationSwitchUp);\r\n        }\r\n        this.updatePagination();\r\n    };\r\n\r\n    BootstrapTable.prototype.refresh = function (params) {\r\n        if (params && params.url) {\r\n            this.options.pageNumber = 1;\r\n        }\r\n        this.async(params && params.silent,\r\n            params && params.query, params && params.url);\r\n        this.trigger('refresh', params);\r\n    };\r\n\r\n    BootstrapTable.prototype.resetWidth = function () {\r\n        if (this.options.showHeader && this.options.height) {\r\n            this.fitHeader();\r\n        }\r\n        if (this.options.showFooter) {\r\n            this.fitFooter();\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.showColumn = function (field) {\r\n        this.toggleColumn(getFieldIndex(this.columns, field), true, true);\r\n    };\r\n\r\n    BootstrapTable.prototype.hideColumn = function (field) {\r\n        this.toggleColumn(getFieldIndex(this.columns, field), false, true);\r\n    };\r\n\r\n    BootstrapTable.prototype.getHiddenColumns = function () {\r\n        return $.grep(this.columns, function (column) {\r\n            return !column.visible;\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.getVisibleColumns = function () {\r\n        return $.grep(this.columns, function (column) {\r\n            return column.visible;\r\n        });\r\n    };\r\n\r\n    BootstrapTable.prototype.toggleAllColumns = function (visible) {\r\n        $.each(this.columns, function (i, column) {\r\n            this.columns[i].visible = visible;\r\n        });\r\n\r\n        this.initHeader();\r\n        this.initSearch();\r\n        this.initPagination();\r\n        this.initBody();\r\n        if (this.options.showColumns) {\r\n            var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);\r\n\r\n            if ($items.filter(':checked').length <= this.options.minimumCountColumns) {\r\n                $items.filter(':checked').prop('disabled', true);\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.showAllColumns = function () {\r\n        this.toggleAllColumns(true);\r\n    };\r\n\r\n    BootstrapTable.prototype.hideAllColumns = function () {\r\n        this.toggleAllColumns(false);\r\n    };\r\n\r\n    BootstrapTable.prototype.filterBy = function (columns) {\r\n        this.filterColumns = $.isEmptyObject(columns) ? {} : columns;\r\n        this.options.pageNumber = 1;\r\n        this.initSearch();\r\n        this.updatePagination();\r\n    };\r\n\r\n    BootstrapTable.prototype.scrollTo = function (value) {\r\n        if (typeof value === 'string') {\r\n            value = value === 'bottom' ? this.$tableBody[0].scrollHeight : 0;\r\n        }\r\n        if (typeof value === 'number') {\r\n            this.$tableBody.scrollTop(value);\r\n        }\r\n        if (typeof value === 'undefined') {\r\n            return this.$tableBody.scrollTop();\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.getScrollPosition = function () {\r\n        return this.scrollTo();\r\n    };\r\n\r\n    BootstrapTable.prototype.selectPage = function (page) {\r\n        if (page > 0 && page <= this.options.totalPages) {\r\n            this.options.pageNumber = page;\r\n            this.updatePagination();\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.prevPage = function () {\r\n        if (this.options.pageNumber > 1) {\r\n            this.options.pageNumber--;\r\n            this.updatePagination();\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.nextPage = function () {\r\n        if (this.options.pageNumber < this.options.totalPages) {\r\n            this.options.pageNumber++;\r\n            this.updatePagination();\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.toggleView = function () {\r\n        this.options.cardView = !this.options.cardView;\r\n        this.initHeader();\r\n        // Fixed remove toolbar when click cardView button.\r\n        //that.initToolbar();\r\n        this.initBody();\r\n        this.trigger('toggle', this.options.cardView);\r\n    };\r\n\r\n    BootstrapTable.prototype.refreshOptions = function (options) {\r\n        //If the objects are equivalent then avoid the call of destroy / init methods\r\n        if (compareObjects(this.options, options, true)) {\r\n            return;\r\n        }\r\n        this.options = $.extend(this.options, options);\r\n        this.trigger('refresh-options', this.options);\r\n        this.destroy();\r\n        this.init();\r\n    };\r\n\r\n    BootstrapTable.prototype.resetSearch = function (text) {\r\n        var $search = this.$toolbar.find('.search input');\r\n        $search.val(text || '');\r\n        this.onSearch({currentTarget: $search});\r\n    };\r\n\r\n    BootstrapTable.prototype.expandRow_ = function (expand, index) {\r\n        var $tr = this.$body.find(sprintf('> tr[data-index=%s]', index));\r\n        if ($tr.next().is('tr.detail-view') === (expand ? false : true)) {\r\n            $tr.find('> td > .detail-icon').click();\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.expandRow = function (index) {\r\n        this.expandRow_(true, index);\r\n    };\r\n\r\n    BootstrapTable.prototype.collapseRow = function (index) {\r\n        this.expandRow_(false, index);\r\n    };\r\n\r\n    BootstrapTable.prototype.expandAllRows = function (isSubTable) {\r\n        if (isSubTable) {\r\n            var $tr = this.$body.find(sprintf('> tr[data-index=%s]', 0)),\r\n                that = this,\r\n                detailIcon = null,\r\n                executeInterval = false,\r\n                idInterval = -1;\r\n\r\n            if (!$tr.next().is('tr.detail-view')) {\r\n                $tr.find('> td > .detail-icon').trigger('click');\r\n                executeInterval = true;\r\n            } else if (!$tr.next().next().is('tr.detail-view')) {\r\n                $tr.next().find('.detail-icon').trigger('click');\r\n                executeInterval = true;\r\n            }\r\n\r\n            if (executeInterval) {\r\n                try {\r\n                    idInterval = setInterval(function () {\r\n                        detailIcon = that.$body.find('tr.detail-view').last().find('.detail-icon');\r\n                        if (detailIcon.length > 0) {\r\n                            detailIcon.click();\r\n                        } else {\r\n                            clearInterval(idInterval);\r\n                        }\r\n                    }, 1);\r\n                } catch (ex) {\r\n                    clearInterval(idInterval);\r\n                }\r\n            }\r\n        } else {\r\n            var trs = this.$body.children();\r\n            for (var i = 0; i < trs.length; i++) {\r\n                this.expandRow_(true, $(trs[i]).data('index'));\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.collapseAllRows = function (isSubTable) {\r\n        if (isSubTable) {\r\n            this.expandRow_(false, 0);\r\n        } else {\r\n            var trs = this.$body.children();\r\n            for (var i = 0; i < trs.length; i++) {\r\n                this.expandRow_(false, $(trs[i]).data('index'));\r\n            }\r\n        }\r\n    };\r\n\r\n    BootstrapTable.prototype.updateFormatText = function (name, text) {\r\n        if (this.options[sprintf('format%s', name)]) {\r\n            if (typeof text === 'string') {\r\n                this.options[sprintf('format%s', name)] = function () {\r\n                    return text;\r\n                };\r\n            } else if (typeof text === 'function') {\r\n                this.options[sprintf('format%s', name)] = text;\r\n            }\r\n        }\r\n        this.initToolbar();\r\n        this.initPagination();\r\n        this.initBody();\r\n    };\r\n\r\n    // BOOTSTRAP TABLE PLUGIN DEFINITION\r\n    // =======================\r\n    var allowedMethods = [\r\n        'getOptions',\r\n        'getSelections', 'getAllSelections', 'getData',\r\n        'load', 'append', 'prepend', 'remove', 'removeAll',\r\n        'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',\r\n        'getRowByUniqueId', 'showRow', 'hideRow', 'getHiddenRows',\r\n        'mergeCells',\r\n        'checkInvert',\r\n        'async',\r\n        'checkAll', 'uncheckAll',\r\n        'check', 'uncheck',\r\n        'checkBy', 'uncheckBy',\r\n        'refresh',\r\n        'resetView',\r\n        'resetWidth',\r\n        'destroy',\r\n        'showLoading', 'hideLoading',\r\n        'showColumn', 'hideColumn', 'getHiddenColumns', 'getVisibleColumns',\r\n        'showAllColumns', 'hideAllColumns',\r\n        'filterBy',\r\n        'scrollTo',\r\n        'getScrollPosition',\r\n        'selectPage', 'prevPage', 'nextPage',\r\n        'togglePagination',\r\n        'toggleView',\r\n        'refreshOptions',\r\n        'resetSearch',\r\n        'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',\r\n        'updateFormatText'\r\n    ];\r\n\r\n    $.fn.bootstrapTable = function (option) {\r\n        var value,\r\n            args = Array.prototype.slice.call(arguments, 1);\r\n\r\n        this.each(function () {\r\n            var $this = $(this),\r\n                data = $this.data('bootstrap.table'),\r\n                options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(),\r\n                    typeof option === 'object' && option);\r\n\r\n            if (typeof option === 'string') {\r\n                if ($.inArray(option, allowedMethods) < 0) {\r\n                    throw new Error('Unknown method: ' + option);\r\n                }\r\n\r\n                if (!data) {\r\n                    return;\r\n                }\r\n\r\n                value = data[option].apply(data, args);\r\n\r\n                if (option === 'destroy') {\r\n                    $this.removeData('bootstrap.table');\r\n                }\r\n            }\r\n\r\n            if (!data) {\r\n                $this.data('bootstrap.table', (data = new BootstrapTable(this, options)));\r\n            }\r\n        });\r\n\r\n        return typeof value === 'undefined' ? this : value;\r\n    };\r\n\r\n    $.fn.bootstrapTable.Constructor = BootstrapTable;\r\n    $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS;\r\n    $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS;\r\n    $.fn.bootstrapTable.locales = BootstrapTable.LOCALES;\r\n    $.fn.bootstrapTable.methods = allowedMethods;\r\n    $.fn.bootstrapTable.utils = {\r\n        sprintf: sprintf,\r\n        getFieldIndex: getFieldIndex,\r\n        compareObjects: compareObjects,\r\n        calculateObjectValue: calculateObjectValue,\r\n        getItemField: getItemField,\r\n        objectKeys: objectKeys,\r\n        isIEBrowser: isIEBrowser\r\n    };\r\n\r\n    // BOOTSTRAP TABLE INIT\r\n    // =======================\r\n    $(function () {\r\n        $('[data-toggle=table]').bootstrapTable();\r\n    });\r\n}));\r\n"]}